欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python构造icmp数据包_Python原始套接字未接收ICMP数据包

发布时间:2024/8/1 python 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python构造icmp数据包_Python原始套接字未接收ICMP数据包 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我尝试在Python中使用原始套接字将UDP包发送到主机,然后获取包的ICMP响应——基本上是重新实现traceroute。在

我已经成功地构造了IP和UDP报头并发送了数据包。我可以在Wireshark上看到。我还看到Wireshark中的ICMP响应告诉我TTL超过了。在

我有以下代码:me = gethostbyname(gethostname())

my_socket = socket(AF_INET, SOCK_RAW)

my_socket.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)

my_socket.bind((me, 0))

hostname = 'www.google.com'

hostip = gethostbyname(hostname)

packet = create_packet(hostname)

send_socket.sendto(packet, (hostip , 0))

然后,在发送数据包后,我调用另一个函数来侦听传入的数据包,其中包括以下代码段:

^{pr2}$

我能够成功地解包IP报头并检查协议,但它总是6或17(TCP或UDP)。即使包含Wireshark的ICMP包中也没有出现它。在

我尝试过将Wireshark中的ICMP包与我的程序可以看到的Wireshark中的其他包进行比较,IP报头几乎完全相同。我不知道怎么了。在

谢谢你的帮助

总结

以上是生活随笔为你收集整理的python构造icmp数据包_Python原始套接字未接收ICMP数据包的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。