Wiresharkコマンド一覧 tsharkでパケットキャプチャを行う方法

IT技術解説

ネットワークを通信を行う際に発生する「パケット」を採取する行為のことを、パケットキャプチャといいます。

パケットには、転送されるデータの中身と一緒に通信している送信元の情報や宛先の情報、使用しているプロトコルやMTUなど様々な情報が含まれています。パケットキャプチャを行うことで、通信のフローを理解したり、障害の際のトラブルの調査、セキュリティのテストが可能です。

ネットワークスイッチの通信を複製する「ミラーリングポート」を設定して、キャプチャを行う場合は下記記事を参考にしてみてください。

パケットキャプチャ専用ソフトのインストールを行い、そのパソコンをキャプチャしたいパケットが発生するネットワークに接続することで、パケットキャプチャを行うことができます。

Wireshark / ワイヤーシャークの説明

パケットキャプチャを行う際の最も代表的なソフトが「Wireshark」です。フリーソフトということもあり、大半のネットワークエンジニアはこのソフトをPCにインストールしているかと思います。

有線LAN、無線LAN、InfiniBand、とPCがネットワークに接続可能なインターフェイスは一通り対応しているといっても良いかと思います。このソフトは縦に3分割された画面で結果の表示が行われ、上段には実際に今流れているパケットがリアルタイムでリスト表示されます。また、プロトコルやポート、送信・宛先IPアドレスなど、絞り込みたい条件を入力したフィルタリング表示も可能です。

ソフトのインストールはこちら「窓の杜-Wireshark」から行えます。

Wiresharkはソフトを起動した画面よりキャプチャ、結果確認を行うのが大多数かと思いますが、今回は通常の操作に加え、パソコンのコマンドプロンプトよりWiresharkを実行、結果の確認を行う方法をメインに解説していきます。

  ※本記事は「Wiresharkをコマンドプロンプトで動かす」という点の解説を行います。通常のキャプチャ方法、キャプチャ結果の内容解析についてはあまり触れずに記載しているのでご了承ください。

Wiresharkの使い方 -tshark利用コマンド-

まずはコマンドプロンプトよりwiresharkの起動を行う方法から解説します。

Wiresharkの保存フォルダへの移動

ワイヤーシャークをインストール済みのPCで、コマンドプロンプトを開き「cd」コマンドでワイヤーシャークのソフトがインストールされているフォルダまで移動します。

インストールする場所をデフォルトから変更していない場合は「C:\Program Files\Wireshark」にあると思います。

不明な場合は、Windowsの検索で「wireshark.exe」と検索してみてください。

上記のように検索すると、Wireshark.exeが引っかかるので、「ファイルの場所を開く」➡ファイルパスコピーでwiresharkの保存場場所がわかります。
私の場合は「C:\Program Files\Wireshark」にあるので下記のようにフォルダの移動を行います。
コマンドは「cd」+「上でコピーしたフォルダパス」で移動可能です。
cd [フォルダパス]

使用可能なインターフェイスの番号確認

キャプチャを行うネットワークに接続しているインターフェイスの指定を行います。

下記のコマンドで、使用しているPCのインターフェイス一覧が表示されるので確認を行います。

tshark -D
結果の一覧の一番左に振られている番号を、キャプチャ実行の際に指定することになるので
キャプチャを行うインターフェイスの番号を確認しておきます。
例えばこのPCの、Wi-Fiインターフェイスのキャプチャを行う場合は「6」という番号を指定することになります。

キャプチャの実行

コマンドプロンプトよりwiresharkを利用する際、実行のコマンドを入力する段階で、どこのファイルに保存するか、何メガずつにファイルを分けるか、停止する時間、など様々なオプションをつけることが可能です。

各オプションの使用方法いついては後述していきますが、まず全パケットのリアルタイム表示の方法を解説します。

tshark -i [キャプチャしたいインターフェイスの番号]
上記のコマンドで指定したインターフェイスのキャプチャを開始します。
インターフェイス2を指定したので、[-i 7]と入力しています。
下記のようにリアルタイムでのキャプチャ結果が表示されます。

追加オプションコマンド -プロトコルの絞り込み表示-

コマンドプロンプトでのwiresharkの操作は上記の[-i インターフェイス]の後ろにコマンドを付け加えることで、絞り込みや保存先などのオプションをつけることになります。

表示する結果の絞り込みは下記のコマンドで行います。

tshark -i [インターフェイス] -Y [プロトコル]
[-Y]の後にプロトコル名もしくはポート番号を入力することで、表示結果の絞り込みを行うことが可能です。
 
  ※ポート番号で絞り込む場合は["port 443"]、IPで絞る場合は["host 10.10.99.1"]というような記載をします。
下記は実行例です。PC(IP:10.10.10.5)から他の機器(IP:10.10.10.1)にpingを飛ばしながらicmpに絞り込んだ結果です。

追加オプションコマンド -プロトコルの絞り込みキャプチャ-

上記の[-Y]のコマンドでは「表示」の絞り込みを行っており、実際には他のパケットもキャプチャしているのですが、結果画面への表示を絞り込むというコマンドです。

続いて紹介するのはキャプチャする対象を絞り込むコマンドです。

tshark -i [インターフェイス] -f [プロトコル]
[-Y]と同様[-f]の後ろにプロトコル名もしくはポート番号を入力するという使い方で、キャプチャの絞り込みを行うことが可能です。
下記は先ほどと同じ環境での実行例です。
先ほどの[-Y]の結果と比較していただくと、一番左の通し番号が違うことがわかると思います。今回は「1」からすべてicmpのパケットのため、でicmp以外はキャプチャをしていないということになります。

追加オプションコマンド -指定したフォルダへの保存-

今までのコマンドだけでは、コマンドプロンプト上に表示されているだけなので、保存の際は画面のコピーを行う必要があります。

下記がキャプチャ結果を保存するフォルダを、予め指定しておくコマンドです。

tshark.exe -i [インターフェイス] -w [保存フォルダ名] -b filesize:[1ファイルの容量上限] -a files:[保存ファイル数の上限]
今回は[tshark]ではなく[tshark.exe]から初め、[-w]の後ろに保存場所のファイルパスと、キャプチャファイルの名前を入力します。

例えば[-w \CAP\capture.pcpa]と入力すると、「CAP」という場所に「capturexxxxx.pcap」というキャプチャファイルが保存されることになります。xxxxxの箇所には日付情報が自動で入ります。

[-b]は、キャプチャファイル1つ当たりの上限を何KBにするか、を設定できます。
[filesize:1000]と入力してキャプチャを開始すると、キャプチャデータが1000KBを超える前に、2つ目のファイルを自動作成しそこに保存します。

最後の[-a]はファイル数が何個に達するまでキャプチャを続けるか、というコマンドになります。
[files:1000]と入力するとキャプチャしたファイルが合計1000個に達すると自動で終了します。

ここのファイル数を指定する場面でもコマンド[-b]が存在し、
これは[-b files:1000]と指定すると、1000個目のキャプチャ完了しても終了せずに1個目を削除し、1001個目を保存します。
上の画像は1000KBを1つのファイルの上限とし、2ファイル保存したら終了するというコマンドの例です。
100KBに達する前に次のファイルを作成しそこに保存、2個目が完了したら、自動で終了しています。

プロトコルの絞り込み+フォルダへの保存-

上記で紹介した、「プロトコルの絞り込み」と「フォルダへの保存」は組み合わせて利用することが可能です。

しかし気をつけるべき点が1つあります。フォルダへの保存と組み合わせる場合は[-Y]は使用できないということです。

ですので、プロトコルorポート番号での絞り込み+保存を行う際は、下記のように[-f]を利用します。  

  ※今回はポート番号での絞り込みを行います。

[tshark.exe]ではなく[tshark]で実行します。[-f]の入れる位置に注意ですね。
これでポート番号443(https)のパケットのみに絞り、指定のフォルダげ保存することが可能です。

キャプチャした結果の表示方法

これまでの[tshark.exe]、[tshark]コマンドでキャプチャを行い、保存したデータは[.pcap]の形式になっているので、そのファイルをダブルクリックすることで、通常のwireshark同様、画面で結果を確認することができます。

また、キャプチャ結果を表示するコマンドもあるので紹介します。

「キャプチャ行う時点でプロトコルやIPの絞り込みを行いそれを表示する方法」と「全パケットをキャプチャし、表示する際に見たいものだけに絞り込む方法」の2つがあります。

取得の時点で対象を絞る方法

まずは、キャプチャを行う時点でプロトコルの絞り込みを行い、絞った結果のみを表示する方法を解説します。

キャプチャ方法は既に紹介したものと同じです。 icmpのみ取得し、その結果の表示を行っていきます。

[-f]のコマンドで、icmpだけに絞り込んでキャプチャを行います。
結果が指定したフォルダに出力されているので、ファイルの名前を全てコピーします。
上記の画像でいうと「capture_00001_20220208162048.pcap」をコピーします。

次のコマンドによりファイル名を指定することで、結果の表示が行えます。
tshark -r C:\CAP\[表示するキャプチャデータのファイル名]
[-r]は指定したファイルを読み込むコマンドです。
表示結果は下記のようになります。

表示の際に結果を絞る方法

次に、キャプチャを行う時点では絞り込みを行わず、表示する際にフィルターをかける方法を解説します。

キャプチャ方法は既に紹介したものと同じです。

全てのパケットを保存し、その結果の中からicmpだけの表示を行っていきます。

まずは[-f]を使用せず、キャプチャの実行、保存を行います。
表示する結果のファイル名のコピーをしておきます。

次のコマンドで、絞り込みとファイル表示を同時で行います。
tshark -r C:\CAP\[表示するキャプチャデータのファイル名] -Y [プロトコル]
[-r]コマンドを使用し表示する点は同じですが、今回は最後に[-Y]をつけることでicmpのみの表示が可能です。
下記が実行結果です。全体で見て28パケット目と29パケットが、icmpのパケットということで、この2つのみ表示されます。

結果表示に時刻を表示させる方法

[-r]での結果の表示に時刻が表示されていないので、最後に[-ta]というコマンドを追記することで、パケットが発生した時間を表示することが可能です。

tshark -r C:\CAP\capture_00001_20220208165322.pcap -Y icmp -ta
[-ta]をつけることで下記の画像ように時刻が表示されます。

tsharkコマンド一覧

コマンドでのキャプチャ、絞り込み、結果の表示と一通り解説しましたが、最後に主に使用するコマンドの一覧を記載します。

コマンド効果の説明
[-f]キャプチャする対象(プロトコル,ポート番号)の指定
[-i]キャプチャする対象のインターフェイスの指定
[-w]出力ファイル名の指定
[-a]条件を満たしたときにキャプチャを終了[duration,filesize,files]
[-b]条件を満たしたときに次のファイルへ保存[duration,filesize,files]
[-r]指定したファイルの読み込み
[-Y]表示する対象(プロトコル,ポート番号)の指定
[-D]指定可能なインターフェイスを表示
[-V]表示に詳細情報を追加
[-q]標準出力の抑制
tsharkコマンドオプション一覧表