Network WireShark

WireShark の生データ pcapng を CSV にエクストポートする

2015年12月29日

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])が表示されます。

image

処理をバッチ化する

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 のようにしてあげる。

created by Rinker
¥3,278 (2020/11/26 15:07:48時点 Amazon調べ-詳細)

-Network, WireShark

Copyright© エンジニアの何でもメモ帳 , 2020 All Rights Reserved.