全3116文字
PR

 今回は、Pktmonで取得したログファイルを自作のプログラムで分析する方法を紹介する。例えば可視化を考えてみよう。Wiresharkを使えばパケットの様々な情報を確認できる。しかしWiresharkの機能では取得できない情報を見たい場合もある。その場合、パケットキャプチャーソフトを自分でプログラミングできれば融通が利く。また取得したパケットに同じ分析を繰り返し適用したり、処理を自動化したりすることも可能だ。

Pythonの実行環境を導入

 プログラミング言語の種類は多いが、ここでは人気のプログラミング言語である「Python」を使う。Pythonには、ネットワーク管理のためのライブラリーが多数用意されている。

 まずWindows 10にPythonの実行環境をインストールする。PowerShellで「python」と入力してEnterキーを押す。Windows Storeが起動し、「Python 3.10」をインストールするかどうかを聞いてくる。「入手」ボタンをクリックしてインストールを進める。

Windows Storeから実行環境を入手
Windows Storeから実行環境を入手
[画像のクリックで拡大表示]

 正しく実行環境がインストールできたかどうかは、pythonコマンドで確認できる。PowerShellで「python --version」と入力して実行する。Pythonのバージョンが「Python 3.10.2」のように表示されれば、実行環境が正しくインストールされている。

 続いて、ライブラリーをインストールする。Pythonの実行環境には「pip」というパッケージ管理システムが用意されている。pipを使えば、インストールしたいライブラリーを簡単にインストールおよびアンインストールできる。

 ここでは「Pyshark」というライブラリーをインストールする。Pysharkを使えば、Pythonプログラムでパケットを取得したり、PCAPNG形式のログファイルを読み込んだりできる。このためPktmonで取得したログファイルはPCAPNG形式のファイルに変換しておく必要がある。またWiresharkに付属するCLIツールである「Tshark」を利用するため、Wiresharkのインストール時にTsharkも合わせてインストールしておく必要がある。

Pysharkをインストールする
Pysharkをインストールする
[画像のクリックで拡大表示]

 TsharkがインストールされたパソコンでPowerShellを起動し、「pip install pyshark」というコマンドを入力すれば、Pysharkがダウンロードおよびインストールされる。

プログラムでパケットを表示

 早速、Pysharkを使ってプログラムを記述してみよう。プログラムの記述にはメモ帳などのテキストエディターを用いる。プログラムファイルは「test1.py」のように「.py」という拡張子を付けて、文字コードをUTF-8で保存する。読み込むPCAPNG形式のファイルはプログラムファイルと同じフォルダーに配置する。

Pysharkを使いパケットを取り出す
Pysharkを使いパケットを取り出す
[画像のクリックで拡大表示]

 このPythonプログラムは、1行目でPysharkのライブラリーを読み込む。そしてキャプチャー結果を変数capに格納する。この時点でcapには、キャプチャーしたパケットが順番に入っている。ここではprint関数を使って先頭(0番目)のパケットを表示し、closeメソッドでPysharkの処理を終了している。このプログラムを実行すると、パケットの詳細が表示される。