首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scapy处理python - traceroute脚本中超时请求

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

Stack Overflow用户
提问于 2019-08-26 23:59:46
回答 1查看 457关注 0票数 0

我正在尝试使用Python和Scapy (使用ICMP)编写traceroute程序。我有一个问题,有时我得不到目的地的回复,而我的程序只是停留在等待它。(在cmd上使用traceroute时,这相当于“请求超时”的情况)。我认为sr1函数在等待答案,但它从未得到答案。我怎么才能修复它?

我也不确定我是否处理了到达目的地的情况,我检查了类型是否等于3,但我不确定它是否正确。我也很高兴得到关于这个问题的答案。

代码语言:javascript
复制
import sys
i, o, e = sys.stdin, sys.stdout, sys.stderr
from scapy.all import *
sys.stdin, sys.stdout, sys.stderr = i, o, e

def 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 += 1

if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-28 16:51:02

使用sr1(tracert_packet, verbose=0, timeout=TIMEOUT_VAL)。如果没有答案,返回值将为None,因此在连接ICMP之前请检查...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57661283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档