Libpcap是個不錯的選擇,但是需要反復的“試用->;c語言顯然不是修改這個程序運行的明智選擇。
Python提供了幾個libpcapbind。在windows平臺上,妳需要先安裝winpcap,如果妳已經安裝了Ethereal,這是非常有用的。
標準化的抓包流程
導入pcap
導入dpkt
Pc=pcap.pcap() #註意,參數可以是網卡的名稱,比如eth0。
Pc.setfilter('tcp端口80') #設置監聽過濾器。
對於ptime,pc中的pdata:# ptime是接收的時間,pdata是接收的數據。
打印ptime,pdata #...
解包捕獲的以太網V2數據包。
p=dpkt.ethernet.Ethernet(pdata)
如果p.data.__class__。__name__=='IP ':
ip = ' % d. % d. % d. % d ' %元組(map(ord,list(p.data.dst)))
if p.data.data.__class__。__name__=='TCP ':
如果data.dport==80:
由gashero打印p.data.data.data #
壹些顯示參數
nrecv,ndrop,nifdrop=pc.stats()
在返回的元組中,第壹個參數是接收到的數據包,第二個參數是內核丟棄的數據包。