为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中处理请求超时-使用scapy的traceroute脚本

如何在python中处理请求超时-使用scapy的traceroute脚本

小唯快跑啊 2022-05-11 14:42:38
我正在尝试使用 Python 和 Scapy(使用 ICMP)编写 traceroute 程序。我有一个问题,有时我没有收到目的地的回复,我的程序只是等待它。(在 cmd 上使用 traceroute 时,这相当于“请求超时”的情况)。我认为 sr1 函数正在等待答案,但它永远不会得到它。我该如何解决?我也不确定我是否处理了到达目的地的情况,我检查了类型是否等于 3 但我不确定它是否正确。我也很乐意得到答案。import sysi, o, e = sys.stdin, sys.stdout, sys.stderrfrom scapy.all import *sys.stdin, sys.stdout, sys.stderr = i, o, edef main():    hostname = input("Enter the destination")    done = False    distance = 1    while not done:        tracert_packet = IP(dst=hostname, ttl=distance)/ICMP()        # Send the packet and get a reply        tracert_resopnse = sr1(tracert_packet, verbose=0)/ICMP()        if tracert_resopnse.type == 3:            # We've reached our destination            print("Done!" + tracert_resopnse[IP].src)            done = True        else:            # We haven't got to the destination yet            print(str(distance) +" hops away: "+ str(tracert_resopnse.src))            distance += 1if __name__ == '__main__':    main()
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

使用sr1(tracert_packet, verbose=0, timeout=TIMEOUT_VAL). 如果没有答案,则返回值将是None,所以在连接之前检查ICMP...



查看完整回答
反对 回复 2022-05-11
  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信