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数据包的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 响应式高端大气的模板源码图库素材资源下载
- 下一篇: python 端口扫描_Python实现