Pypcap和dpkt 轉載

pypcap 的庫特別難裝,反正我是莫名其妙裝上了。可是在另外一臺電腦就裝不上去。暫時就不寫安裝方法。此處,先標記下,之後有機會補充。python

一、認識下Pypcap和dpkt編程

要介紹pypcap和wincap等庫,首先必須知道libpcap。Libpcap是一個開源代碼庫,它提供了一個爲網絡數據報抓取系統設計的高層接口。它發明於1994年,做者是來自加利福尼亞大學的研究學者,當時製做Libpcap目的是爲了更好的研究TCP協議和因特網接口。windows

Libpcap的做者的主要目的是創造一種與運行平臺無關的API庫。它能夠消除在各類不一樣應用中設立基於不一樣平臺的數據報捕獲模型的須要,消除各類操做系統創建不一樣捕獲軟件的須要。緩存

一開始,lipcap API庫被設計成使用C和C++語言運行。但隨着更多不用高級編程語言的出現,好比Perl、Python、Java、C#和Ruby等,lipcap被容許能夠被封裝成不一樣語言的庫被調用。Libpcap能夠在大部分的Unix操做系統下運行,同時也支持windows系統,也就是winpcap庫。網絡

有了上面概念,pypcap庫的介紹就簡單不少了,它是一款基於libpcap封裝的爲python語言提供接口的抓包庫,專門在python上運行。因爲Mac OS系統預安裝了python2.7,所以它能夠運行Pypcap庫。python2.7

至於dpkt,它則是用來解析數據包的庫,不過我對它的瞭解不是不少。編程語言

這邊再講一下pypcap和dpkt的安裝,個人建議是用pip或者easy_install的方式,比較省時省力。這裏值得一提的是,一開始在安裝pypcap的時候,我使用了網上一個帖子的方法,在官網下載pypcap的壓縮包後,經過命令行的方法手動軟連接,可是在調用import pcap的時候仍然發生了錯誤。在查找了網上的資料後,安裝了homebrew,而後使用了brew doctor的命令,檢測了軟連接的錯誤。隨後使用了pip成功進行了安裝。函數

二、開始一場糾結的冒險吧操作系統

好的這部分將要講的內容是編程部分,將會站在一個小白的角度逐步講解。命令行

首先是建文件,用sublime新建個py文件(command+N),目錄麼。。我的喜愛吧,我就放在桌面了。command+S保存,右下角改爲python語言,這樣能夠自動檢查語法上的一些問題。

既然辛辛苦苦把庫都安裝好了,確定得用對吧。這邊直接import把庫調用一下。對了,爲了後面實現另一些功能,除了pcap和dpkt,還須要調用一下time、math和os庫。

 

好的接下來咱們使用pcap庫來進行抓包,這裏要用到一個函數pcap.pcap()。這個函數是用來定義嗅探器的,咱們的抓包就是經過這個函數定義的嗅探器實現的。若是給嗅探器取名爲sniffer,那麼參考的定義以下:

sniffer=pcap.pcap(name=None,promisc=True,immediate=True)#這個函數是用來定義嗅探器的,咱們的抓包就是經過這個函數定義的嗅探器實現的

  

其中括號裏是能夠加入參數的,好比name、promisc、immediate和所要抓包的網卡名稱等等。網上的中文資料對這個函數的介紹很是有限,因此我也沒有找到一個參數列表。可是不加參數也是能夠運行的。

好的有了嗅探器之後,咱們就能夠進行抓包了。那麼抓下來的包在哪裏呢了(我以爲應該是在緩存裏面,請原諒個人無知。。),咱們去sniffer裏面找找。在這裏sniffer是一直在抓包的並把數據源源不斷存入內存,可是咱們解包得一個個解吧。因此咱們作一個循環:

for timestamp,raw_buf in sniffer:

  

這邊sniffer中應該是有兩個對象,一個timestamp是指時間戳,raw_buf是指包中的原始數據。

接下來咱們用dpkt進行解包了,注意如下定義:

相關文章
相關標籤/搜索