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 不正确,因为 ansNone。因此你有 在您的代码中处理这种情况:

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)