2018
12
15

よく使うtsharkワンライナー

基本フォーマット
tshark -r example.pcap -Y "< Wireshark Filter >" -T fields -e < Wireshark Field > -e < Wireshark Field >

HTTP/HTTPS編


SSLの証明書を抽出
tshark -r example.pcap -Y ssl.handshake.certificates -T fields -e ssl.handshake.certificate | xxd -r -p | openssl x509 -inform DER -text

HTMLのフォーム経由でデータがPOSTされた場合

## パラメータ名のみを表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e urlencoded-form.key

## 値のみを表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e urlencoded-form.value

## パラメータ名と値の両方を表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e http.file_data

使用しているtshark/wiresharkのバージョンがhttp.file_dataフィルタをサポートしていない場合は以下のようにするのもアリ
tshark -r example.pcap -Y "http.request.method eq POST" -T json | grep 'urlencoded-form.key\|urlencoded-form.value' | awk '{print $2}' | perl -pe 's/,\n/=/g'
(上記のように場合によっては "-T json"でjson形式で出力したほうがデータ整形しやすいかも。。。)

直接バイナリデータがPOSTされた場合

## バイナリデータを16進数で表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data
※ "-e data" を "-e data.data" にすると16進数がコロン(:)で区切られます。(aa:3f:56)

## バイナリデータを平文で表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data | xxd -r -p

## POSTリクエストが複数あった場合、それぞれのバイナリデータを平文で1行ずつ表示
for i in $(tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data); do echo $i | xxd -r -p; echo; done

## POSTリクエストが複数あった場合、それぞれのバイナリデータをファイルとして保存
for i in $(tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data); do tmpfile=$(jot -w out -r 3 1 100); echo $i | xxd -r -p > $tmpfile; done

SMB編


## SMBコマンドを発行したプロセスIDを確認する
tshark -r example.pcap -Y "smb" -T fields -e smb.pid
## NTLM認証要求を送ったクライアント情報を取得する。(ドメイン名、ユーザー名、ホスト名)
tshark -r example.pcap -Y "smb" -T fields -e ntlmssp.auth.domain -e ntlmssp.auth.username -e ntlmssp.auth.hostname

その他


## 時刻 (UTC)も一緒に表示
tshark -r example.pcap -o gui.column.format:"utctime","%Yut" -Y "http.request.method eq POST" -T fields -e _ws.col.utctime -e http.file_data

## 直前のパケットとの時間差を確認したいとき(1つ目のパケットが送信されてから2つ目のパケットが送信されるまでの経過時間が知りたいとき)
tshark -r example.pcap -T fields -e frame.time_delta_displayed

重複データを無視したい場合はsort -uにパイプするなど、用途に応じて、どんどんコマンドをパイプさせていく。

以上。
Comment



Only the blog author may view the comment.


Trackback
Trackback URL

«  | HOME |  »

奇妙な風景 Unique Scene
<< >>

プロフィール


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


スポンサード リンク


FC2カウンター


検索フォーム


RSSリンクの表示


リンク


ブロとも申請フォーム


QRコード