1.tsharkコマンドとは
2.環境設定
3.実行
4.pcapファイルのフィルタリング方法
5.オプション
6.参考
tsharkコマンドとは
Wiresharkの実行をCLIで実現できるものです。
CLIなので、並列処理、シェルスクリプトでの記載、cron、grepなどなど、CLI職人にとってはpcapデータをかなり楽に扱えるようになります!
環境設定
本記事ではMacOSで試しています。
まずお持ちのMacでtsharkを利用できる状態にします。GUIでもCLIでもどちらからでも可能です。
GUI(Webから)でインストールの場合
下記からインストールできます。
https://www.wireshark.org/download.html
CLI(ターミナル)でインストールの場合
brew install wireshark
※まだhomebrew(brewコマンド)が利用できない場合は、下記を参考に利用できるようにしてみてください!
Homebrewのインストール方法
実行
早速実行していきましょう!今回はtest.pcapというデータを見ていきます。
tshark -r test.pcap
これでデータの中身が確認できたと思います。
ちなみにデータの並び方と表示されている項目はデフォルト状態ですが、確認したいデータや表示順などを指定することができます。
GUIのWiresharkで列の表示変更を行った場合もtsharkコマンドの結果に影響されます。
pcapファイルのフィルタリング方法
今回は下記の条件をつけてフィルタリングして、再度実行してみましょう。
条件
(※)通常のWireShark(GUI)で利用できるフィルター
・smb2プロトコルの通信に絞る
smb2.tree && tcp.dstport==445
・ファイル名や利用アカウント名が抜けている余分な通信は除去する
smb2.filename != "" && smb2.acct != ""
表示
(※)通常のWireShark(GUI)で利用できる列の書き方
・アカウント名
smb2.acct
・フォルダパス(共有パス)
smb2.tree
・操作ファイル名
smb2.filename
・アクセスしている端末名
smb2.host
tshark -r test.pcap -T fields -e smb2.acct -e smb2.tree -e smb2.filename -e smb2.host -Y 'smb2.tree && tcp.dstport==445 && smb2.filename != "" && smb2.acct != ""'
下記のようにパイプやリダイレクトを利用して簡単に扱えるデータに変換ももちろん可能です。
tshark -r test.pcap <オプション系> | grep -i test
tshark -r test.pcap <オプション系> > test.csv
オプション
| オプション | 内容 |
|---|---|
| -i <interface> | キャプチャするインターフェイスを指定 |
| -f <capture filter> | libpcapフィルタsyntaxによるフィルタを指定 |
| -s <snaplen> | snapshot lengthを指定(デフォルト:65535) |
| -p | プロミスキャスモードを使用しない |
| -y <link type> | リンクレイヤータイプを指定(デフォルト:first appropriate) |
| -D | インターフェイスリストを表示 |
| -L | インターフェイスのリンクレイヤータイプリストを表示 |
| -c <packet count> | 指定したパケット数で停止(デフォルト:無限) |
| -a <autostop cond.> | ・duration:NUM NUMで指定した秒数経過により停止 ・filesize:NUM NUMで指定したサイズ(KB)に保存ファイルが達したら停止 ・files:NUM NUMで指定した数の保存ファイル数に達したら停止 |
| -b <ringbuffer opt.> | ・duration:NUM NUMで指定した秒数経過により次のファイルへ保存 ・filesize:NUM NUMで指定したサイズ(KB)に保存ファイルが達したら次のファイルへ保存 ・files:NUM NUMで指定した数の保存ファイル数に達したらファイルの置き換え |
| -r <infile> | パケットfileから読出し |
| R <read filter> | Wiresharkディスプレイフィルタを指定 |
| -n | すべての名前解決を無効にする(デフォルト:有効) |
| -N <name resolve flags> | 特定の名前解決を有効にする |
| -d <layer_type>==<selector>,<decode_as_protocol> | 特定のポートを特定のプロトコルと紐付け tcp.port==8888,httpの場合は 「tcpポート8888番はhttpとする」となる |
| -C <config profile> | 設定ファイルを指定 |
| -F <output file type> | 出力ファイルタイプを指定 |
| -V | 表示にパケットツリーを追加 |
| -S | [-w]オプションを有効にしている場合でもパケットを表示 |
| -x | hex、ACSIIダンプ表示を追加 |
| -e <field> | アウトプットしたいフィールドを指定 |