このガイドでは、Thread ネットワークからパケットを盗聴するように Wireshark 向けに extcap を構成する方法について説明します。
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 スニッファーに接続されているハードウェア インターフェースがリスト表示されます。
単一のインターフェースからのキャプチャ
インターフェースを初めて使用する場合は、インターフェースの左側にある [Options] ボタンをクリックします。
- [チャンネル] を目的の値に設定します。
- IEEE 802.15.4 TAP で、チャネル情報が pcap 出力に含まれ、Wireshark GUI に表示されることを確認します。
- [キャプチャ開始時にパラメータを保存] をオンにして、キャプチャ開始後にパラメータが保存されるようにします。これにより、次回インターフェースを使用するときに再度設定する必要がなくなります(チャンネルを変更する必要がない場合)。
- [Start] をクリックします。
パラメータがすでに保存されている場合は、ハードウェア インターフェースを選択し、左上の Wireshark アイコンをクリックしてスニッフィングを開始します。
複数のインターフェースからキャプチャする
キャプチャ画面に表示されているすべてのハードウェア インターフェースを選択し、左上の Wireshark のアイコンをクリックします。
複数のインターフェースからキャプチャする場合、次のフィールドを使用して個々のスニッファを識別します。
- インターフェース ID(frame.interface_id) - キャプチャ インターフェースを識別するために Wireshark が使用するインターフェース識別子
- インターフェース名(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 は root ユーザーのみにパケットのキャプチャを許可する
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 以降を使用していることを確認します。