#1 はじめに
解析等でネットワークパケットを保存したい場合、Windows OSではWiresharkを使ってパケットキャプチャするのが一般的だと思います。また、毎日、長時間パケットキャプチャする場合は、PCが突然落ちてしまうことも考え、一定時間で自動保存してほしいです。
そのバッチファイルを作成したので共有します。
※WiresharkのGUIからでもできます
#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 実行結果
コマンドプロンプトの出力は以下の通りになります。
パケットは指定したフォルダ以下に自動で保存されます。パケットのファイル名には自動で連番が振られます。
#7 参考サイト
https://knowledge.sakura.ad.jp/6311/