Extcap を使用したパケット スニッフィング

GitHub でソースを見る

このガイドでは、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] ボタンをクリックします。

OT スニッファ Wireshark 外部キャプチャ

  1. [チャンネル] を目的の値に設定します。
  2. IEEE 802.15.4 TAP で、チャネル情報が pcap 出力に含まれ、Wireshark GUI に表示されることを確認します。
  3. [キャプチャ開始時にパラメータを保存] をオンにして、キャプチャ開始後にパラメータが保存されるようにします。これにより、次回インターフェースを使用するときに再度設定する必要がなくなります(チャンネルを変更する必要がない場合)。
  4. [Start] をクリックします。

OT スニッファー Wireshark の外部拡張オプション

パラメータがすでに保存されている場合は、ハードウェア インターフェースを選択し、左上の Wireshark アイコンをクリックしてスニッフィングを開始します。

複数のインターフェースからキャプチャする

キャプチャ画面に表示されているすべてのハードウェア インターフェースを選択し、左上の Wireshark のアイコンをクリックします。

複数のインターフェースからキャプチャする場合、次のフィールドを使用して個々のスニッファを識別します。

  • インターフェース ID(frame.interface_id) - キャプチャ インターフェースを識別するために Wireshark が使用するインターフェース識別子
  • インターフェース名(frame.interface_name) - キャプチャ インターフェースを識別するために Wireshark が使用するインターフェース名
  • チャンネル(wpan-tap.ch_num) - IEEE 802.15.4 キャプチャ チャンネル(範囲: 11 ~ 26)

OT スニッファー Wireshark Extcap パケット

トラブルシューティング

OpenThread スニッファが Wireshark インターフェースとして表示されない

  1. 複数の Python インタープリタがインストールされている場合は、extcap スクリプトで Python 3 インタープリタが使用されていることを確認します。Pyspinel は Python 2 をサポートしていません。
  2. ハードウェアが USB で列挙され、ドライバが読み込まれるかどうかを確認します。
  3. 正しいファームウェア(NCP または RCP)がハードウェアにフラッシュされていることを確認します。
  4. extcap パスにある Python スクリプトが実行可能であることを確認します。
    • OS X および Linux の場合:
      1. extcap_ot.py ファイル(
        ls -l extcap_ot.py
        
        )の実行権限が存在することを確認します。
      2. 実行(x)権限がない場合は、権限を変更します。
        chmod +x extcap_ot.py
        
      3. インターフェースが
        extcap_ot.py --extcap-interfaces
        
        であることを確認します。
    • Windows の場合:
      1. インターフェースが
        extcap_ot.bat --extcap-interfaces
        
        であることを確認します。
      2. Python エラーで終了した場合は、Python のバージョンが 3.x であることを確認します。
        py -3 --version
        

Wireshark は root ユーザーのみにパケットのキャプチャを許可する

Ubuntu で Wireshark をインストールする際、ユーザーは次のいずれかのオプションを選択するよう求められます。

  1. wireshark ユーザー グループを作成し、そのグループのすべてのメンバーがパケットをキャプチャできるようにします。
  2. 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 以降を使用していることを確認します。