跟踪路由在Python上的实现

跟踪路由在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)

因此,在我尝试为我的项目创建一个类似的traceroute时,我一直在试图理解在Python上使用Scapy是如何工作的。然而,这是行不通的。我试着打印回复类型,它在两个跃点之间显示“11”。有人对如何解决这个问题有什么建议吗?或者这整件事都不管用吗

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
),它就可以工作了。作为参考,我在几个月前写了一个更复杂的版本,它模拟了实际的命令。