scapy 中的 tracert (python)
tracert in scapy (python)
我尝试在 Scapy 中进行 tracert 操作,但它对我不起作用,它告诉我打印有错误 (NoneType),谁能帮我解决这个问题?
from scapy.all import *
from scapy.layers.inet import IP, ICMP, Ether, UDP, traceroute
TTL = 28
packet = IP(dst = '8.8.8.8') / ICMP(type = 0)
for i in range(TTL):
packet[IP].ttl = i + 1
ans = sr1(packet, timeout = 2, verbose = 0)
print(ans[IP].src)
您不能假设您发送的每个 ICMP 回应请求都会得到一个
回答。如果您没有收到回复,那么 sr1
returns None
之后
延迟 2 秒。这解释了错误消息,因为那时
ans[IP].src
不正确,因为 ans
是 None
。因此你有
在您的代码中处理这种情况:
from scapy.all import IP, ICMP, sr1
TTL = 28
packet = IP(dst = '8.8.8.8') / ICMP(type = 0)
for i in range(TTL):
packet[IP].ttl = i + 1
ans = sr1(packet, timeout = 2, verbose = 0)
if ans is None:
print('no response...')
else:
print(ans[IP].src)
我尝试在 Scapy 中进行 tracert 操作,但它对我不起作用,它告诉我打印有错误 (NoneType),谁能帮我解决这个问题?
from scapy.all import *
from scapy.layers.inet import IP, ICMP, Ether, UDP, traceroute
TTL = 28
packet = IP(dst = '8.8.8.8') / ICMP(type = 0)
for i in range(TTL):
packet[IP].ttl = i + 1
ans = sr1(packet, timeout = 2, verbose = 0)
print(ans[IP].src)
您不能假设您发送的每个 ICMP 回应请求都会得到一个
回答。如果您没有收到回复,那么 sr1
returns None
之后
延迟 2 秒。这解释了错误消息,因为那时
ans[IP].src
不正确,因为 ans
是 None
。因此你有
在您的代码中处理这种情况:
from scapy.all import IP, ICMP, sr1
TTL = 28
packet = IP(dst = '8.8.8.8') / ICMP(type = 0)
for i in range(TTL):
packet[IP].ttl = i + 1
ans = sr1(packet, timeout = 2, verbose = 0)
if ans is None:
print('no response...')
else:
print(ans[IP].src)