Wiresharkを使って一定時間でパケットを自動保存するバッチファイル
1 はじめに
解析等でネットワークパケットを保存したい場合、Windows OSではWiresharkを使ってパケットキャプチャするのが一般的だと思います。また、毎日、長時間パケットキャプチャする場合は、PCが突然落ちてしまうことも考え、一定時間で自動保存してほしいです。
そのバッチファイルを作成したので共有します。
※WiresharkのGUIからでもできます
※こちらの記事はQiitaで投稿した記事を移行したものとなります
2 やりたいこと
- Wiresharkを使いたい
- 一定時間でパケットを保存したい
- 日毎にパケットをフォルダに分けたい
※毎日バッチを実行、終了する前提 - バッチファイルで実行したい
3 動作確認環境
Wiondows 10
Wireshark Version 2.0.5
4 バッチファイル
@echo off @Rem 保存するフォルダを指定する Set BASE_DIR=C:\packets\ @Rem BASE_DIRで指定したフォルダの下で日付のフォルダを作成する Set TODAY=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2% Set FILE_DIR=%BASE_DIR%%TODAY% Mkdir %FILE_DIR% @Rem ネットワークインターフェイスを表示する @echo ネットワークインターフェイス一覧 "C:\Program Files\Wireshark\tshark.exe" -D @Rem ネットワークインターフェイスを入力する set /p interface_id="パケットをキャプチャしたいネットワークインターフェイスを入力してください:" @Rem パケットの保存間隔を入力する set /p time_duration="保存間隔(分):" set /a "time_duration *= 60" @echo Wiresharkでパケットを保存します。終了させたい場合はCtrl+Cを押してください。 "C:\Program Files\Wireshark\dumpcap.exe" -i %interface_id% -b duration:%time_duration% -w %FILE_DIR%\packet.pcapng
5 解説
保存フォルダを指定します。好きなフォルダを指定してください。
Set BASE_DIR=C:\packets\
指定した保存フォルダに日付名でフォルダを作成します。
Set TODAY=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2% Set FILE_DIR=%BASE_DIR%%TODAY% Mkdir %FILE_DIR%
ネットワークインターフェイス番号を表示します。Wireshrakのインストールされているフォルダにあるtshark.exeを指定します。-Dのオプションでインターフェイス番号を表示することができます。
"C:\Program Files\Wireshark\tshark.exe" -D
パケットキャプチャしたいネットワークインターフェイスの番号、パケットの保存間隔(分)を入力してもらいます。後述しますが、dumpcap.exeは秒間隔での指定となるため、分から秒に換算しています。
@Rem ネットワークインターフェイスを入力する set /p interface_id="パケットをキャプチャしたいネットワークインターフェイス番号を入力してください:" @Rem パケットの保存間隔を入力する set /p time_duration="保存間隔(分):" set /a "time_duration *= 60"
Wireshrakのインストールされているフォルダにあるdumpcap.exeを指定します。
"C:\Program Files\Wireshark\dumpcap.exe" -i %interface_id% -b duration:%time_duration% -w %FILE_DIR%\packet.pcapng
各オプションの説明は以下のとおりです。
オプション | 説明 |
---|---|
-i | ネットワークインターフェイス番号を指定する |
-b duration | 保存間隔(秒) |
-w | キャプチャ結果をファイルに保存する |
6 実行結果
コマンドプロンプトの出力は以下の通りになります。
パケットは指定したフォルダ以下に自動で保存されます。パケットのファイル名には自動で連番が振られます。