Wireshark

Wiresharkは、ネットワークに流れるデータを採取し、解析するツールです。
ネットワークの実際の流れをつかむことができます。
パケット(データ)を採取することをキャプチャといいます。

「パケットは嘘をつかない」という言葉があります。
以下はパケットキャプチャ実践技術という書籍の抜粋です。

たとえ、仕様やドキュメントに誤りがあったとしても、ネットワークを流れるパケットは真実です。「Packet never lies.」(パケットは嘘をつかない)。これは、Wiresharkの開発者の間で交わされている言葉であり、偽装されて送信されるパケットさえもキャプチャされる、という意味で用いられています。

パケットの流れが見えてくると、ネットワークがおもしろくなってきます。

Wiresharkのインストール

2018年10月時点の最新版 バージョン2.6.3の64ビット版で確認しています。
グラフィカルなGUI版の表示や操作は、バージョンによって変更されていきますが、コマンドベースのCLI版の操作はあまり変わりません。
このサイトでは、CLI版のtsharkをご紹介します。

  1. 窓の杜からダウンロードできます。64ビット版は32ビット版の下方にあります。
  2. ダウンロードしたファイルを実行します。英語表示となりますが、そのまま「I Agree」「Next」「Install」「Yes」などで問題ありません。途中でWinPcapもいっしょにインストールされます。WinPcapのインストールが完了するとFinishとなりますが、まだWireshark本体のインストールは続きます。
  3. もう一度、Finishになれば、完了です。もし、「os reboot」などが表示された場合は、OSを再起動します。

Wiresharkの利用

Wiresharkは、コマンドプロンプト上でも操作できます。CLI版のコマンドは、tshark.exeです。
ここでは、PINGのキャプチャを保存し、その内容を確認する例で説明します。

コマンドプロンプトの操作については、コマンドライン操作も参照してください。
C:\WORKフォルダは作成済みとします。

パスを通す

Wiresharkのコマンドを実行するためには、以下のように一旦Wiresharkのフォルダに移動する必要があります。
> cd “c:\Program Files\Wireshark”

Wiresharkのインストールフォルダにパスを通しておくと、上の操作が不要になり便利です。

管理者権限でコマンドプロンプトを起動し、現在のパス設定を確認しておきます。
> echo %path% > C:\WORK\path_before.txt「ENTER」← パス設定をpath_before.txtに出力。

以下を実行するとシステムのパスにWiresharkのインストールパスが追加されます。間違うとOSが起動できなくなる可能性もありますので注意してください。

> setx /M path “%path%;C:\Program Files\Wireshark”「ENTER」← 次の行のメッセージが出力します。コマンドプロンプトの文字コードをUTF-8(65001)に変更している場合は同じ意味の英語になります。

成功: 指定した値は保存されました。

別のコマンドプロンプトを起動し、Wiresharkのパスが追加されたことを確認します。
> echo %path% > C:\WORK\path_after.txt「ENTER」← path_after.txtに出力。

※ C:\Users\(ユーザ)\AppData\Local\Microsoft\WindowsApps;といったpathが2重に表示されることがありますが、問題ないようです。

インターフェースの確認

別で説明するVMwareをインストールしたPCや、有線LANや無線LANが利用できるPCでは複数のインターフェースが認識されています。
Wiresharkはインターフェースごとにキャプチャする仕組みで、インターフェースを指定しなければ、最初に認識したインターフェースのみがキャプチャされます。
どのインターフェースを指定するか、確認しておきます。

> chcp 65001「ENTER」← 文字コードをUTF-8に変更します。次のコマンドの文字化けを防ぐためです。環境によっては不要です。
> dumpcap -D > C:\WORK\dumpcap_result.txt「ENTER」← 全てのインターフェースを確認するコマンドです。次の例では4つが認識されています。

1. \Device\NPF_{6F23880E-9BCE-4DEB-BE60-123456789001} (ローカル エリア接続* 1)
2. \Device\NPF_{F9F6EBED-4F21-4EC7-9F63-123456789002} (ローカル エリア接続* 2)
3. \Device\NPF_{62EEC3AD-F8AC-4B49-B7D8-123456789003} (Wi-Fi)
4. \Device\NPF_{8018F152-3116-431B-8115-123456789004} (イーサネット)

最初の数字が指定する番号です。例えば、無線LANで接続している場合は、3番を利用します。

連続PINGの実行

キャプチャ用に、デフォルトゲートウェイへ連続でPINGをします。
先にデフォルトゲートウェイを確認します。

> ipconfig > C:\WORK\ipconfig‗result.txt「ENTER」← ipconfigの結果をipconfig_result.txtに出力します。ipconfig.txtの「デフォルトゲートウェイ」で始まる行にIPが記載されています。複数のインターフェースがある場合は、デフォルトゲートウェイの行は複数ありますが、記載されているIPは1つです。

デフォルトゲートウェイに連続PINGを実行します。
> ping -t 192.168.255.2 > C:\WORK\ping.txt 「ENTER」 ← 192.168.255.2 がデフォルトゲートウェイだった場合の例です。-tをつけることで、PINGが連続実行されます。

Ctrl+Cで停止できます。PINGの結果を確認したい場合は、ping.txtで確認できます。
以下のキャプチャ取得が終わるまで、連続PINGしておきます。

キャプチャファイルの保存

キャプチャファイルも、その出力を保存すると便利です。
ここでは、キャプチャファイルを.pcapの拡張子で保存します。
PINGとは別のコマンドプロンプトを起動します。以下を実行すると、100パケット分をcapture1.pcapとして保存できます。

> tshark.exe -i 3 -w C:\WORK\capture1.pcap -c 100「ENTER」 ← 先ほど確認したインターフェース3番を指定するオプションは「-i 3」です。-wが出力先の指定、-cが何パケット保存するかのオプションです。

通信内容によりますが、およそ30秒以内に100パケットは取得されます。読み上げは続くので、Ctrlで読み上げを止めて構いません。Enterを押し、プロンプトが帰ってくれば、100パケット取得は完了しています。
別のコマンドプロンプトで実行していたPINGを停止します。

キャプチャファイルの確認

目的にあわせて、さまざまなオプションを利用し、キャプチャ内容を確認できます。
必要な情報のみを出力することをフィルタと呼びます。
キャプチャファイルを読み込み、テキストファイルにリダイレクトし、テキストエディタで確認することもできます。-rは、読み込むファイルを指定するオプションです。

> tshark -r C:\WORK\capture1.pcap > C:\WORK\read_capture1.txt  ← 先ほど保存したキャプチャファイルをフィルタせずに読み込み、テキストファイルにリダイレクトします。

> tshark -r C:\WORK\capture1.pcap -Y icmp > C:\WORK\icmp_caputer1.txt  ← ICMP(PING)プロトコルでフィルタしています。-Yはフィルタ指定のオプションです。PINGのパケットのみを確認できます。

> tshark -r C:\WORK\capture1.pcap -Y icmp -t a > C:\WORK\icmp_time.txt  ← 時間表示を時刻にします。日付も付けたい場合は、「-t ad」 にします。これらの時刻オプションをつけない場合は、経過時間で表示されます。

> tshark -r C:\WORK\capture1.pcap -Y frame.number==30 -V > C:\WORK\read_Cap30.txt  ← あるパケットの詳細を確認したい場合は、フレーム番号を指定し、「-V」をつけます。フレーム番号は、各行の最初の数字です。

その他、tsharkを利用したDHCPメッセージの確認例をDHCP設定検証で紹介しています。

(ここがページの最後です。更新日:2022年9月28日)