WiresharkのCLIコマンドtshark
WiresharkにCLIコマンドtsharkが付属している。通常の解析はGUIで十分だが、数十個のトレースファイルから特定のパケットを見つけるときはtsharkが便利だ。ファイルをひとつずつGUIで開いて検索していては埒があかない。
tsharkに渡すパスはかならずASCII文字にすること。tsharkは日本語のパス名を正しく処理できない。こんなエラーが出る。
tshark: The file "D:\テスト\copy_to_temp.pcap" could not be created because an invalid filename was specified.
tsharkにフィルタを渡して、Create AndX要求パケットだけを抽出する。結果はテキストファイルで出力する。PowerShellでこの処理を組んでみた。
Get-Item *.pcap | foreach ($_) {& 'C:\Program Files\wireshark\tshark.exe' -V -R 'smb.cmd == 0xa2 && ip.src == 192.168.185.15' -r $_ | Out-File -encoding default -filepath $_".txt"}
テキストエディタやgrepでさらに絞り込んで、目的のパケットを探す。たとえば、どんなファイルがオープンされているかを見るには、次のようなgrepを実行すればよい。あらかじめGnuWin32のgrepをインストールしておく。
"c:\Program Files\GnuWin32\bin\grep.exe" " File Name:" *.txt > filename.txt
パケット抽出とgrepを一気にやりたいところだが、PowerShellのパイプ処理は前段の結果をすべてメモリに展開するらしく、大量のメモリを消費する。もしやるとすると、こう書けばよい。
Get-Item *.pcap | foreach ($_) {& 'C:\Program Files\wireshark\tshark.exe' -V -r $_ | & 'C:\Program Files\GnuWin32\bin\grep' ' File Name:' | Out-File -encoding default -filepath $_".txt"}
| 固定リンク
この記事へのコメントは終了しました。
コメント