跟踪路由在Python上的实现
因此,在我尝试为我的项目创建一个类似的traceroute时,我一直在试图理解在Python上使用Scapy是如何工作的。然而,这是行不通的。我试着打印回复类型,它在两个跃点之间显示“11”。有人对如何解决这个问题有什么建议吗?或者这整件事都不管用吗跟踪路由在Python上的实现,python,scapy,traceroute,Python,Scapy,Traceroute,因此,在我尝试为我的项目创建一个类似的traceroute时,我一直在试图理解在Python上使用Scapy是如何工作的。然而,这是行不通的。我试着打印回复类型,它在两个跃点之间显示“11”。有人对如何解决这个问题有什么建议吗?或者这整件事都不管用吗 hostname = "172.217.17.46" #Change that to user input later print("Destination: " + hostname)
hostname = "172.217.17.46" #Change that to user input later
print("Destination: " + hostname)
for i in range(1,28):
pkt = IP(dst=hostname, ttl=i)/ UDP(dport=33434)
#packet is sent
reply = sr1(pkt, verbose=0)
#print(reply.type)
#No reply
if reply is None:
print("hi")
break
elif reply.type == 3:
#reached
print("Done", reply.src)
break
#continue
else:
#print(reply.type)
print ("%d hops away: " %i, reply.src)
#continue
break
你说的“这不起作用”是什么意思?至少有两个问题:您没有为sr1
设置超时,因此它可能会无限期挂起。在循环的底部还有一个break
,因此它永远不会通过第一次迭代。一旦你解决了这两件事,(同时去掉了reply is None
案例中的break
),它就可以工作了。作为参考,我在几个月前写了一个更复杂的版本,它模拟了实际的命令。