2024-09-30 20:35:25 发布
网友
addr = socket.gethostbyname('dalitstan.org') target = [addr] result, unans = traceroute(target,maxttl=32)
我正在使用上面的代码和下面的输出。在下面的情况下,如何获得机器和服务器之间的跃点数,即18?在
您要查找的结果是使用TCP层的第一个答案(因为以前的跃点使用ICMP数据包进行响应)。更准确地说,您正在寻找您发送的、得到TCP应答的较低的TTL。在
在Scapy中,可以使用[TCP]:result[TCP]从包含TCP层的(probe, answer)对象中选择(probe, answer)元组。如果我不够清楚,你可以把result.show()和{}进行比较。在
[TCP]
result[TCP]
(probe, answer)
result.show()
现在,要提取发送包的ttl值,可以使用[snd[IP].ttl for snd, _ in result[TCP]]。您只需要使用min()来获得最小值(或者使用[0]或next()的第一个值,因为数据包是排序的;但是我觉得使用min()更安全):
ttl
[snd[IP].ttl for snd, _ in result[TCP]]
min()
[0]
next()
result, _ = traceroute('dalitstan.org') min(snd[IP].ttl for snd, _ in result[TCP])
您要查找的结果是使用TCP层的第一个答案(因为以前的跃点使用ICMP数据包进行响应)。更准确地说,您正在寻找您发送的、得到TCP应答的较低的TTL。在
在Scapy中,可以使用}进行比较。在
[TCP]
:result[TCP]
从包含TCP层的(probe, answer)
对象中选择(probe, answer)
元组。如果我不够清楚,你可以把result.show()
和{现在,要提取发送包的
ttl
值,可以使用[snd[IP].ttl for snd, _ in result[TCP]]
。您只需要使用min()
来获得最小值(或者使用[0]
或next()
的第一个值,因为数据包是排序的;但是我觉得使用min()
更安全):相关问题 更多 >
编程相关推荐