當前位置:編程學習大全網 - 編程軟體 - linux下python如何捕捉網卡上的所有TCP包?

linux下python如何捕捉網卡上的所有TCP包?

Ethereal自帶多種協議的解碼器,簡單易用。它是壹個基於winpcap的開源軟件。但是它的架構並不靈活。如何添加壹個自己定義的解碼器,妳得修改Ethereal的代碼,重新編譯,非常繁瑣。對於普通的明文協議,沒有問題,但是對於加密協議,比如網絡遊戲,壹般客戶端程序在剛連接的時候會發送壹個隨機密鑰,然後用這個密鑰對消息進行加密。所以,如果妳想破解它,妳必須有壹個可編程的數據包抓取器。

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()

在返回的元組中,第壹個參數是接收到的數據包,第二個參數是內核丟棄的數據包。

  • 上一篇:嵌入式linux開發linux和嵌入式
  • 下一篇:編程求壹組成績的平均分以及高於平均分的成績,設給定的成績為90,85,92,77,80,62。
  • copyright 2024編程學習大全網