中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python-pypcap抓取帶VLAN標簽的數據包方法

發布時間:2020-09-06 12:55:08 來源:腳本之家 閱讀:267 作者:chenxiangneu 欄目:開發技術

1、背景介紹

在采用通常的socket抓包方式下,操作系統會自動將收到包的VLAN信息剝離,導致上層應用收到的包不會含有VLAN標簽信息。而libpcap雖然是基于socket實現抓包,但在收到數據包后,會進一步恢復出剝離的VLAN信息,能夠滿足需要抓取帶VLAN標簽信息的數據包的需求場景。

python-pypcap包是對libpcap庫的python語言封裝,本文主要介紹如果利用python-pypcap在網絡接口抓取帶VLAN標簽的數據包。

2、環境準備

libpcap-0.9.4

python-pypcap-1.15,該包依賴libpcap-0.9.4

可以通過在python交互式環境下運行import pcap,如果導入成功,說明python-pypcap-1.15已成功安裝。

3、抓包實現

pypcap包封裝了libpcap提供的許多接口函數,簡單的抓包可以采用如下幾個步驟完成:

1)Open a handle to a packetcapture descriptor.

fpcap = pcap.pcap(name=iface)

指定從iface接口抓包,此處可以添加其他相關抓包參數,大家可以參考對pcap.pcap類的說明。

2)設置過濾規則

fpcap.setfilter('inbound')

此處inbound表示抓取所有發送到該接口的包,不抓取從該接口發送出的數據包,規則的設置同tcpdump抓包設置過濾規則相同。

3)調用loop函數循環抓包

fpcap.loop(callback,None)

源文件中對loop函數的說明如下:

利用python-pypcap抓取帶VLAN標簽的數據包方法

此處需要說明的是,在實際使用中發現提供了cnt參數后程序運行會報錯,而不加cnt參數可以成功運行,即采用fpcap.loop(callback,None)。

4)實現包處理回調函數callback

callback函數聲明如下:

利用python-pypcap抓取帶VLAN標簽的數據包方法

這里需要說明的是,參數timestamp和pkt會由loop函數自動傳入,pkt表示數據包,但其類型是buffer類型,這里可以采用圖中的scapy.layers.l2.Ether(str(pkt))將pkt轉化為scapy的Ether類型[如果包為dot3類型的,也將自動轉化為Dot3類型的對象,此處針對isis協議]。然后再通過p.time = timestamp將時間戳信息更新到包中。后續就可以按照處理scapy的Ether類型包的方式進行進一步包處理。

4、示例

下述代碼實現了一個線程類,能夠在指定的接口iface上抓取進入該接口的包并打印包概要信息。

利用python-pypcap抓取帶VLAN標簽的數據包方法

以上這篇利用python-pypcap抓取帶VLAN標簽的數據包方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

监利县| 休宁县| 黄石市| 云梦县| 昭苏县| 射阳县| 光泽县| 襄城县| 定南县| 太湖县| 公主岭市| 苗栗市| 类乌齐县| 正安县| 白城市| 宝山区| 延长县| 漳平市| 古蔺县| 平阳县| 信宜市| 石楼县| 内黄县| 酉阳| 克山县| 万宁市| 赞皇县| 尤溪县| 勐海县| 晋州市| 鹤岗市| 高碑店市| 新安县| 铜鼓县| 丰城市| 宝清县| 抚松县| 桐城市| 陵水| 昌邑市| 金山区|