2014-01-14 116 views
-2

我試圖編寫一個程序來嗅探輸出ICMP & TCP請求數據包由python2.7套接字 但是,我只知道如何嗅探端口上的傳入數據包。如何使用python套接字來嗅探ICMP和TCP請求

該程序可以執行以通過超級用戶在Llnux上嗅探任何傳出的ICMP & TCP數據包。 我該怎麼辦?

+0

你嘗試過什麼?你堅持什麼部分?你想使用'libpcap'還是顯式原始套接字或其他選擇? – abarnert

+0

我是python的初學者。我參考了一些套接字示例來練習網絡編程。示例導入套接字,創建套接字對象,設置套接字和綁定端口以偵聽傳入數據包。 但是這個程序只是能夠嗅探套接字綁定的端口。所以,我混淆瞭如何嗅探任何傳出的數據包。 –

+0

那麼,你需要了解原始套接字(也可能是混雜模式)。閱讀手冊頁或找到教程。玩Wireshark並閱讀它的文檔。也許用簡單的方法編寫一些基本的腳本來與原始套接字一起玩。那麼你可能會想要爲你的真正的程序使用帶有各種Python綁定的'libpcap'。 – abarnert

回答

0

pycap

(從項目頁例)

>>> import dpkt, pcap 
>>> pc = pcap.pcap() 
>>> pc.setfilter('icmp') 
>>> for ts, pkt in pc: 
...  print `dpkt.ethernet.Ethernet(pkt)` 
... 
Ethernet(src='\x00\x03G\xb2M\xe4', dst='\x00\x03G\x06h\x18', data=IP(src='\n\x00\x01\x1c', dst='\n\x00\x01\x10', sum=39799, len=60, p=1, ttl=128, id=35102, data=ICMP(sum=24667, type=8, data=Echo(id=512, seq=60160, data='abcdefghijklmnopqrstuvwabcdefghi')))) 
Ethernet(src='\x00\x03G\x06h\x18', dst='\x00\x03G\xb2M\xe4', data=IP(src='\n\x00\x01\x10', dst='\n\x00\x01\x1c', sum=43697, len=60, p=1, ttl=255, id=64227, data=ICMP(sum=26715, data=Echo(id=512, seq=60160, data='abcdefghijklmnopqrstuvwabcdefghi')))) 
^CTraceback (most recent call last): 
    File '<stdin>', line 1, in ? 
    File 'pcap.pyx', line 298, in pcap.pcap.__next__ 
KeyboardInterrupt 
>>> 
>>> pc.stats() 
(4851, 0, 0) 
相關問題