このガイドでは、Wireshark の extcap を構成して Thread ネットワークからパケットをスニファする方法について説明します。
extcap を使用せずに Pyspinel でパケット スニッフィングを行うには、Pyspinel を使用したパケット スニッフィングをご覧ください。
スニファ環境を設定する
始める前に、次の手順を行います。
確認
このガイドは、次のホストシステムで Zolertia Firefly(Texas Instruments CC2538 SoC)で検証されています。
- Debian 4.19.37 - Wireshark 3.0.4
- macOS Mojave 10.14.6 - Wireshark 3.0.5
- 64 ビット Windows 10 バージョン 17134 - Wireshark 3.0.6
スニファをビルドしてフラッシュする
ビルドとフラッシュの手順はプラットフォームによって異なります。
CC2538 のビルドと書き込みの手順については、GitHub の CC2538 の例の README をご覧ください。
一般的なビルド手順については、OpenThread のビルド方法をご覧ください。
スニファを使用する
Wireshark を初めて起動すると、Wireshark キャプチャ画面が表示されます。OpenThread スニファに接続されているハードウェア インターフェースが一覧表示されます。
1 つのインターフェースからキャプチャする
インターフェースを初めて使用する場合は、インターフェースの左側にある [オプション] ボタンをクリックします。
- [Channel] に適切な値を設定します。
- IEEE 802.15.4 TAP をチェックして、チャンネル情報が pcap 出力に含まれ、Wireshark GUI に表示できることを確認します。
- [キャプチャ開始時にパラメータを保存] をオンにして、キャプチャの開始後にこれらのパラメータが保存されるようにします。これにより、次回インターフェースを使用するときにパラメータを再度設定する必要がなくなります(チャンネルを変更する必要がある場合を除く)。
- [開始] をクリックします。
パラメータがすでに保存されている場合は、ハードウェア インターフェースを選択し、左上の Wireshark アイコンをクリックしてスニッフィングを開始します。
複数のインターフェースからキャプチャする
キャプチャ画面に表示されているすべてのハードウェア インターフェースを選択し、左上の Wireshark アイコンをクリックします。
複数のインターフェースからキャプチャするときに、個々のスニファを識別するには、次のフィールドを使用します。
- インターフェース ID(frame.interface_id)- Wireshark がキャプチャ インターフェースを識別するために使用するインターフェース ID
- インターフェース名(frame.interface_name)- Wireshark がキャプチャ インターフェースの識別に使用するインターフェース名
- チャンネル(wpan-tap.ch_num)- IEEE 802.15.4 キャプチャ チャンネル(範囲: 11 ~ 26)
トラブルシューティング
OpenThread スニファが Wireshark インターフェースとして表示されない
- 複数の Python インタープリタがインストールされている場合は、extcap スクリプトで Python 3 インタープリタが使用されていることを確認します。Pyspinel は Python 2 をサポートしていません。
- ハードウェアが USB で列挙され、ドライバが読み込まれているかどうかを確認します。
- 正しいファームウェア(NCP または RCP)がハードウェアにフラッシュされていることを確認します。
- extcap パスにある Python スクリプトが実行可能であることを確認します。
- OS X と Linux の場合:
extcap_ot.py
ファイルに実行権限があることを確認します。ls -l extcap_ot.py
- 実行(x)権限がない場合は、権限を変更します。
chmod +x extcap_ot.py
- インターフェースがリストされていることを確認します。
extcap_ot.py --extcap-interfaces
- Windows の場合:
- インターフェースがリストされていることを確認します。
extcap_ot.bat --extcap-interfaces
- Python エラーで終了した場合は、Python のバージョンが 3.x であることを確認します。
py -3 --version
- インターフェースがリストされていることを確認します。
- OS X と Linux の場合:
Wireshark でパケットをキャプチャできるのはルートユーザーのみ
Ubuntu に Wireshark をインストールする際に、次のいずれかのオプションを選択するよう求められます。
wireshark
ユーザー グループを作成し、そのグループのすべてのメンバーがパケットをキャプチャできるようにします。root
ユーザーにのみパケットのキャプチャを許可します。
root
ユーザーとして Wireshark を使用することは強くおすすめしません。このオプションを選択した場合は、設定を変更します。
sudo dpkg-reconfigure wireshark-common
キャプチャを wireshark
グループのメンバーに制限するように Wireshark が構成されている場合は、適切なユーザーをグループに追加する必要があります。
sudo usermod -a -G wireshark user
また、適切なユーザーを dialout
グループに追加します。
sudo usermod -a -G dialout user
Wireshark を閉じて再起動して、新しいユーザー グループ設定を適用します。
Windows で複数の USB インターフェースでキャプチャする際の Wireshark 形式エラー
これは、Wireshark の古いバージョンの既知の問題です。Wireshark 3.0.6 以降を使用していることを確認します。