2017-08-20 71 views
1
addr = socket.gethostbyname('dalitstan.org') 
target = [addr] 
result, unans = traceroute(target,maxttl=32) 

我正在这样做,并获得下面的输出。在这里有什么方法可以获得变量中特定跳转的IP。还有为什么traceroute结果中缺少一些跳数?我怎样才能得到一个特定的跳转IP地址为python的traceroute

Begin emission: 
Finished to send 32 packets. 
************************* 
Received 25 packets, got 25 answers, remaining 7 packets 
    185.53.178.6:tcp80 
1 192.168.43.1 11 
3 10.71.83.18  11 
4 172.16.26.245 11 
5 172.26.31.242 11 
11 49.44.18.38  11 
13 103.198.140.164 11 
14 103.198.140.27 11 
15 80.81.194.27 11 
16 217.64.161.25 11 
17 217.64.170.214 11 
18 185.53.178.6 SA 
19 185.53.178.6 SA 
20 185.53.178.6 SA 
21 185.53.178.6 SA 
22 185.53.178.6 SA 
23 185.53.178.6 SA 
24 185.53.178.6 SA 
25 185.53.178.6 SA 
26 185.53.178.6 SA 
27 185.53.178.6 SA 
28 185.53.178.6 SA 
29 185.53.178.6 SA 
30 185.53.178.6 SA 
31 185.53.178.6 SA 
32 185.53.178.6 SA 

在试图result.get_trace()['185.53.178.6'][7]我得到下面的错误。可能是什么问题。

Traceback (most recent call last): 
    File "cens2.py", line 16, in <module> 
    print result.get_trace()['185.53.178.6'][7] 
    File "/usr/local/lib/python2.7/dist-packages/scapy/layers/inet.py", line 1040, in get_trace 
    m = min(x for x, y in k.itervalues() if y[1]) 
    File "/usr/local/lib/python2.7/dist-packages/scapy/layers/inet.py", line 1040, in <genexpr> 
    m = min(x for x, y in k.itervalues() if y[1]) 
TypeError: 'bool' object has no attribute '__getitem__' 
+0

scapy的traceroute()'返回一个对象,它显然包含了所有这些信息。 scapy的文档没有关于它的细节,但是你可以很漂亮地打印对象来查看它的结构。啤酒花应该在那里以及关于失踪啤酒花的一些线索。 – mechalynx

回答

0

可以使用result.get_trace() 所以对于一跳7使用result.get_trace()用于啤酒花提取物的值[ '185.53.178.6'] [7]

>>> result.get_trace()['185.53.178.6'][7] 
    ('203.50.6.93', False) 

    or 

    >>> result.get_trace()['185.53.178.6'][7][0] 
    '203.50.6.93' 
    >>> something = result.get_trace()['185.53.178.6'][7][0] 
    >>> something 
    '203.50.6.93' 

一些从不同的轨迹显示为索引检查。

>>> result.get_trace()['161.0.97.141'].keys() 
    dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20]) 

    ^^^^ missing hop 13 ^^^^ (Same as your hop 7) 


    >>> for item in result.get_trace()['161.0.97.141'].keys(): 
    >>> print('Row number ' + str(item) + ' hop IP is : ' + result.get_trace()['161.0.97.141'][item][0]) 

    Row number 1 hop IP is : 10.0.0.138 
    Row number 2 hop IP is : 10.218.192.1 
    Row number 3 hop IP is : 58.160.250.129 
    Row number 4 hop IP is : 203.50.44.36 
    Row number 5 hop IP is : 203.50.11.136 
    Row number 6 hop IP is : 203.50.11.180 
    Row number 7 hop IP is : 203.50.6.93 
    Row number 8 hop IP is : 203.50.13.98 
    Row number 9 hop IP is : 202.84.222.62 
    Row number 10 hop IP is : 202.84.136.209 
    Row number 11 hop IP is : 202.84.253.86 
    Row number 12 hop IP is : 134.159.61.46 
    <<< no hop 13 shown >>> 
    Row number 14 hop IP is : 4.59.90.110 
    Row number 15 hop IP is : 63.245.106.96 
    Row number 16 hop IP is : 63.245.5.100 
    Row number 17 hop IP is : 63.245.79.85 
    Row number 18 hop IP is : 190.242.166.37 
    Row number 19 hop IP is : 190.112.224.132 
    Row number 20 hop IP is : 161.0.97.141 
+0

我也希望你可以通过检查'unans'获得失踪的跳转细节 –

+0

我在尝试这个时遇到了一些错误。我更新了错误的问题。你能帮我解决这个错误吗? – tarun14110

+0

我尝试在Python 3.5.2和scapy-python3 == 0.21,并且不能再现 >>> import scapy >>> from scapy.all import * 我期望它可能与您使用的版本相关联索引错误。我在回应中加入了索引的检查以供参考。 –

相关问题