tshark.exe というコマンドが WireShark 内に含まれているので、これを使って生データである、*.pcapng から必要なデータだけ CSV に抽出する事ができます。
tshark.exe は、標準で WireSharkをインストールした場合はパスが通ってないので、パスを通す必要がありました。
標準的な WireShark の GUI に表示されるカラムであれば、以下の方法で CSV に抽出する事ができます。
tshark -n -E quote=d –r [pcapngファイル] -T fields -E separator=, -e frame.number -e frame.time_epoch -e ip.src -e ip.dst -e _ws.col.Protocol -e frame.len -e _ws.col.Info > [出力 CSV ファイル名]
オプションの解説は以下の通りです。
-n: 名前解決をしない (デフォルトでは enable)
-r : <pcapng ファイル名>
-T fields : アウトプットの種類が fields
-E separator=, : セパレーターに, (カンマ) を使う
-E quote=d : 各要素を " (double quote) でくくる。(Info カラムが "[SYN, ACK]"のように、, (カンマ)を含んでいる場合があるので )
-E header=n : ヘッダーを付けない(デフォルト no なので指定しなくて良い)
-e <フィールド名> : 出力するフィールド名を指定します。
TIPS1 ) ”Info” のデータのカラムは、 「-e _ws.col.Info」と指定する事で CSV に出力できます。
TIPS2) “プロトコル”は、「-e ip.proto」でも指定できますが、これだと数字で出力されます(例:UDPだと 17)。 「-e _ws.col.Protocol」の様に指定すると、”UDP”のような文字列でCSVに出力されます。
TIPS3) 出力したいフィールド名は WireShark の GUI から確認できます。
以下のように、データを選ぶと(この例では、[Protocol: TCP (6)]) 、ステータスバー上に、該当するデータが、WireShark 上でどのように表すか(この例では、[ip.proto])が表示されます。
処理をバッチ化する
pcapng ファイルがたくさんあると大変なので、バッチファイル化しました。
バッチを実行したディレクトリで、拡張子が、pcapng のファイルを探し、[オリジナル pcapng ファイル名].csv と言うファイルを出力します。
@echo off setlocal enabledelayedexpansion for %%f in (*.pcapng) do ( echo "--------------------------------------" echo !time! "Start Processing:" %%f tshark -n -E quote=d -r %%f -T fields -E separator=, -e frame.number -e frame.time_epoch -e ip.src -e ip.dst -e _ws.col.Protocol -e frame.len -e _ws.col.Info > %%f.csv echo !time! "End Procdessing " %%f echo "--------------------------------------
TIPS1) time 変数は、単純に %time% とやるとバッチ内で常に同じ値になる。
setlocal enabledelayedexpansion を宣言して
!time! を使うとOK
TIPS2) バッチファイルの中で変数を使うばあいは、
%a では無く、 %%a のようにしてあげる。