PyShark入門(1):簡介

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

本系列文章譯自thePacketGeek的系列文章。原創翻譯,轉載請註明出處。git

文章做者以PyShark爲基礎開發了Cloud-Pcap,一個相似CloudShark的pcap在線存儲、分析工具。github

你能夠使用PyShark在網絡接口上進行嗅探,或者打開存儲的pcap文件進行分析。如PyShark主頁文檔中展現的:網絡

import pyshark

# 打開存儲的捕獲文件
cap = pyshark.FileCapture('/tmp/mycapture.cap')

# 從網絡接口上進行捕獲
capture = pyshark.LiveCapture(interface='eth0')
capture.sniff(timeout=10)
<LiveCapture (5 packets)>

使用 LiveCapture 或者 FileCapture 方法創建 Capture 對象後,在捕獲(capture)和數據包(packet)層面就會有多個方法和屬性可用。PyShark的強大在於能夠調用tshark內建的全部數據包解碼器。我這裏只簡單展現一下你能夠作的一些事情,後續的文章中會展開更深刻的說明。app

  1. 獲取數據包摘要(相似於tshark捕獲的輸出)函數

    >>> for pkt in cap:
    ...:     print pkt
    ...:
    2 0.512323 0.512323 fe80::f141:48a9:9a2c:73e5 ff02::c SSDP 208 M-SEARCH * HTTP/
    3 1.331469 0.819146 fe80::159a:5c9f:529c:f1eb ff02::c SSDP 208 M-SEARCH * HTTP/
    4 2.093188 0.761719 192.168.1.1 239.255.255.250 SSDP 395 NOTIFY * HTTP/1.  0x0000 (0)
    5 2.096287 0.003099 192.168.1.1 239.255.255.250 SSDP 332 NOTIFY * HTTP/1.  0x0000 (0)
  2. 按層深刻獲取數據包屬性工具

    >>> pkt.   #(tab auto-complete)
    pkt.captured_length     pkt.highest_layer       pkt.ip                  pkt.pretty_print        pkt.transport_layer
    pkt.eth                 pkt.http                pkt.layers              pkt.sniff_time          pkt.udp
    pkt.frame_info          pkt.interface_captured  pkt.length              pkt.sniff_timestamp
    >>>
    >>> pkt[pkt.highest_layer].    #(tab auto-complete)
    pkt_app.                 pkt_app.get_field_value  pkt_app.raw_mode         pkt_app.request_version
    pkt_app.DATA_LAYER       pkt_app.get_raw_value    pkt_app.request
    pkt_app.chat             pkt_app.layer_name       pkt_app.request_method
    pkt_app.get_field        pkt_app.pretty_print     pkt_app.request_uri
  3. 遍歷數據包,對每一個數據包使用給定函數處理性能

    >>> cap = pyshark.FileCapture('test.pcap', keep_packets=False)
    >>> def print_highest_layer(pkt)
    ...: print pkt.highest_layer
    >>> cap.apply_on_packets(print_highest_layer)
    HTTP
    HTTP
    HTTP
    HTTP
    HTTP
    ... (truncated)

這些只算是管中窺豹! 誰能想到在Python腳本中使用tshark/Wireshark的強大力量會如此容易呢!
我如今發現的惟一缺陷是性能。一旦你開始處理幾千個數據包,PyShark就開始變慢了。
後續文章中會說明須要那些措施來保留內存。.net


下一篇:PyShark入門(2): FileCapture和LiveCapture模塊翻譯

相關文章
相關標籤/搜索