成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PyShark入門(2):FileCapture和LiveCapture模塊

joyqi / 2993人閱讀

摘要:中進行數(shù)據(jù)包分析的兩個典型方法是使用和模塊。僅用于在嗅探時使用的過濾條件。僅用于保存的捕獲文件的路徑格式。用于在讀取較大的捕獲時節(jié)省內(nèi)存。類似于使用或者進行嗅探,過濾器可以用于確定進入到返回的對象中的流量。

原文地址:http://zodiacg.net/2016/07/in...

本系列文章譯自thePacketGeek的系列文章。原創(chuàng)翻譯,轉(zhuǎn)載請注明出處。

PyShark中進行數(shù)據(jù)包分析的兩個典型方法是使用 FileCaptureLiveCapture 模塊。
前者從一個存儲的捕獲文件中導入u數(shù)據(jù)包,后者將使用本機的網(wǎng)絡接口進行嗅探。
使用這兩個模塊都會返回一個 capture 對象。之后的文章中會詳細介紹。
我們首先來了解一下這兩個模塊如何使用。

兩個模塊提供相似的參數(shù)來控制 capture 對象中返回的數(shù)據(jù)包。下面的定義直接從模塊的docstring中獲取:

__interface__: [僅用于LiveCapture] 進行嗅探的網(wǎng)絡接口。如果沒有給出,使用可用的第一個接口。

__bpf_filter__: [僅用于LiveCapture] 在嗅探時使用的BPF(tcpdump)過濾條件。

__input_file__: [僅用于FileCapture] 保存的捕獲文件的路徑(PCAP, PCAPNG格式)。

__keep_packets__: 設(shè)定在調(diào)用next()函數(shù)之后是否保留之前讀取的數(shù)據(jù)包。用于在讀取較大的捕獲時節(jié)省內(nèi)存。

__display_filter__: 設(shè)定在讀取捕獲時使用的display過濾條件(即Wireshark過濾器)。

__only_summaries__: 僅產(chǎn)生數(shù)據(jù)包摘要,比正常讀取速度快的多,但包含信息很少。

__decryption_key__: 可選的用于加密解密捕獲的流量的密鑰。

__encryption_type__: 捕獲的數(shù)據(jù)流量所使用的加密標準(必須是WEP,WPA-PWD或WPA-PWK中之一,默認是WPA-PWK)。

only_summaries選項

使用 only_summaries 后,返回的 capture 對象中的數(shù)據(jù)包將只包含摘要信息,類似于tshark的默認輸出:

>>> cap = pyshark.FileCapture("test.pcap", only_summaries=True)
>>> print cap[0]
2 0.512323 0.512323 fe80::f141:48a9:9a2c:73e5 ff02::c SSDP 208 M-SEARCH * HTTP/

使用這個選項,讀取捕獲文件將變得很快,但每個數(shù)據(jù)包將只包含下面的這些屬性。如果你想獲取嗅探中的IP地址來構(gòu)建會話列表,或者使用時間和包長度來計算帶寬的統(tǒng)計數(shù)據(jù),那么這些信息也足夠了。

>>> pkt.     #(tab auto-complete)
pkt.delta         pkt.info          pkt.no            pkt.stream        pkt.window
pkt.destination   pkt.ip id         pkt.protocol      pkt.summary_line
pkt.host          pkt.length        pkt.source        pkt.time
keep_packets選項

PyShark只會在要對數(shù)據(jù)包進行處理的時候才會將其讀入內(nèi)存。在你處理數(shù)據(jù)包的過程中,PyShark會將每個數(shù)據(jù)包添加到 capture 對象中叫 _packet 的列表屬性的末尾。當處理大量的數(shù)據(jù)包時,這個列表將占用大量的內(nèi)存,因此PyShark提供了這個選項使得內(nèi)存中一次僅保留一個數(shù)據(jù)包。如果 keep_packets 設(shè)置為False(默認為True),PyShark在讀取新數(shù)據(jù)包時會將上一個從內(nèi)存中清除。我發(fā)現(xiàn)這樣能提升一點數(shù)據(jù)包遍歷處理的速度,提升一點也是好的!

display_filter和bpf_filter

這些過濾器有助于使你的應用集中精力于你想要分析的內(nèi)容上。類似于使用Wireshark或者tshark進行嗅探,BPF過濾器可以用于確定進入到返回的 capture 對象中的流量。
BPF過濾器的靈活性不如Wireshark的display過濾器,但是你仍可以創(chuàng)造性的使用這些有限的關(guān)鍵字和偏移過濾器。
如果需要對使用BPF過濾器更詳細的說明,參考Wireshark的官方文檔。
下面是一個使用BPF過濾器嗅探目標HTTP流量的例子:

>>> cap = pyshark.LiveCapture(interface="en0", bpf_filter="ip and tcp port 80")
>>> cap.sniff(timeout=5)
>>> cap
   
>>> print cap[5].highest_layer
HTTP

在讀取保存的捕獲文件時,你可以通過設(shè)置 display_filter 選項,利用Wireshark強大的解析器來限制返回的數(shù)據(jù)包。
下面是沒有使用過濾器的情況下,我的test.pcap文件中的前幾個數(shù)據(jù)包:

>>> cap = pyshark.FileCapture("test.pcap")
>>> for pkt in cap:
...:    print pkt.highest_layer
...:
HTTP
HTTP
HTTP
TCP
HTTP
... (truncated)

使用了display過濾器來限制只顯示DNS數(shù)據(jù)流量:

>>> cap = pyshark.FileCapture("test.pcap", display_filter="dns")
>>> for pkt in cap:
...:    print pkt.highest_layer
...:
DNS
DNS
DNS
DNS
DNS
... (truncated)
針對LiveCapture的附加說明

在遍歷 LiveCapture 返回的 capture 對象時我發(fā)現(xiàn)了一個奇怪的現(xiàn)象。似乎當你試圖遍歷數(shù)據(jù)包列表時,它會從頭開始進行嗅探,然后實時的進行遍歷(來一個數(shù)據(jù)包就進行一次遍歷)。我目前沒有發(fā)現(xiàn)能夠存儲下數(shù)據(jù)包的方法, LiveCapture 僅能用于實時處理數(shù)據(jù)包。


上一篇:PyShark入門(1):簡介
下一篇:PyShark入門(3):capture對象

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38069.html

相關(guān)文章

  • PyShark入門(3):capture對象

    摘要:,和屬性是之前傳遞給或者的值。方法使得對象可以通過循環(huán)進行遍歷。方法是另一種遍歷數(shù)據(jù)包的方式,它接受一個函數(shù)作為參數(shù)并將之作用于所有的數(shù)據(jù)包。下面的腳本會將所有的數(shù)據(jù)包加入到一個列表中并打印總數(shù)上一篇入門和模塊下一篇入門對象 原文鏈接:http://zodiacg.net/2016/07/in... 本系列文章譯自thePacketGeek的系列文章。原創(chuàng)翻譯,轉(zhuǎn)載請注明出處。 我們已...

    Youngdze 評論0 收藏0
  • PyShark入門(1):簡介

    摘要:如主頁文檔中展示的打開存儲的捕獲文件從網(wǎng)絡接口上進行捕獲使用或者方法建立對象后,在捕獲和數(shù)據(jù)包層面就會有多個方法和屬性可用。的強大在于可以調(diào)用內(nèi)建的所有數(shù)據(jù)包解碼器。后續(xù)文章中會說明需要那些措施來保留內(nèi)存。下一篇入門和模塊 原文地址:http://zodiacg.net/2016/07/in... 本系列文章譯自thePacketGeek的系列文章。原創(chuàng)翻譯,轉(zhuǎn)載請注明出處。 文章作者...

    includecmath 評論0 收藏0
  • PyShark入門(4):packet對象

    摘要:以字節(jié)表示的數(shù)據(jù)包長度。當前數(shù)據(jù)包到達時間與第一個數(shù)據(jù)包的差值。的窗口大小僅用于數(shù)據(jù)包。如果你對的應用實例感興趣,你可以看看我的項目上一篇入門對象 原文鏈接:http://zodiacg.net/2016/07/in... 本系列文章譯自thePacketGeek的系列文章。原創(chuàng)翻譯,轉(zhuǎn)載請注明出處。 目前在這一系列文章中我們已經(jīng)了解了如何捕獲數(shù)據(jù)包和使用 capture 對象,我們終...

    cooxer 評論0 收藏0
  • 構(gòu)建基于Spark的推薦引擎(Python)

    摘要:協(xié)同過濾提出了一種支持不完整評分矩陣的矩陣分解方法不用對評分矩陣進行估值填充。使用的是交叉最小二乘法來最優(yōu)化損失函數(shù)。 構(gòu)建基于Spark的推薦引擎(Python) 推薦引擎背后的想法是預測人們可能喜好的物品并通過探尋物品之間的聯(lián)系來輔助這個過程 在學習Spark機器學習這本書時,書上用scala完成,自己不熟悉遂用pyshark完成,更深入的理解了spark對協(xié)同過濾的實現(xiàn) 在這里我...

    nanfeiyan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<