python构造icmp数据包_Python原始套接字未接收ICMP数据包
在
我嘗試在Python中使用原始套接字將UDP包發(fā)送到主機,然后獲取包的ICMP響應——基本上是重新實現(xiàn)traceroute。在
我已經(jīng)成功地構造了IP和UDP報頭并發(fā)送了數(shù)據(jù)包。我可以在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))
然后,在發(fā)送數(shù)據(jù)包后,我調用另一個函數(shù)來偵聽傳入的數(shù)據(jù)包,其中包括以下代碼段:
^{pr2}$
我能夠成功地解包IP報頭并檢查協(xié)議,但它總是6或17(TCP或UDP)。即使包含Wireshark的ICMP包中也沒有出現(xiàn)它。在
我嘗試過將Wireshark中的ICMP包與我的程序可以看到的Wireshark中的其他包進行比較,IP報頭幾乎完全相同。我不知道怎么了。在
謝謝你的幫助
總結
以上是生活随笔為你收集整理的python构造icmp数据包_Python原始套接字未接收ICMP数据包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 响应式高端大气的模板源码图库素材资源下载
- 下一篇: Java旅游网站源码+页面