LoginSignup
5
1

More than 1 year has passed since last update.

wiresharkで保存したデータをpysharkで扱う

Last updated at Posted at 2023-02-15

はじめに

WiresharkでキャプチャしたデータをPythonで使いたい。
そんなあなたに「pyshark」。
結構探しても出てこなかったのでまとめておきます。

インストール

インストールはこれだけ

コンソール
 $ pip install pyshark

使ってみる

Wiresharkで保存したデータを読み込んで一つ目のパケットを覗いてみる。

main.py
import pyshark
capture = pyshark.FileCapture("Wiresharkで保存したファイル.pcapng")
print(capture[0])

上記のコードを実行すると、

Layer ETH:
        Destination: 00:00:00:00:00:00:00
        Address: 00:00:00:00:00:00
        ...
Layer IP:
        0100 .... = Version: 4
        .... 0101 = Header Length: 20 bytes (5)
        ...
Layer TCP:
        Source Port: ~~~
        Destination Port: ~~~
        ...

パケットの情報がいろいろ表示される。

print(capture[0].layers)

でレイヤーの種類が見れる。

フィルターを使う

引数にdisplay_filterを追加する

capture = pyshark.FileCapture("Wiresharkで保存したファイル.pcapng",
                                display_filter='ip.src == xxx.xxx.xxx.xx')

暗号化されたデータを復号化する

wiresharkで復号化したときのSSLKEYLOGFILEを引数に使う。

capture = pyshark.FileCapture("Wiresharkで保存したファイル.pcapng",
                                override_prefs={'tls.keylog_file':"SSLKEYLOGFILEに保存したファイル")})

リアルタイム処理したいときは

リアルタイム処理したいときはLiveCaptureを使う。

capture = pyshark.LiveCapture ('イーサネット', bpf_filter='フィルター')

※注意:pythonコードを実行する前にSSLKEYLOGFILEを更新しないとうまくいかない。

うまくいかない場合は

引数のdebugをオンにして頑張る。
裏ではtsharkが動いているのでtsharkの実行コードなどが覗ける。

capture = pyshark.FileCapture("Wiresharkで保存したファイル.pcapng",
                                display_filter='ip.src == xxx.xxx.xxx.xx',
                                override_prefs={'tls.keylog_file':"SSLKEYLOGFILEに保存したファイル")},
                                debug=True)

参考文献

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1