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

GitHub でソースを見る

このガイドでは、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 つのインターフェースからキャプチャする

インターフェースを初めて使用する場合は、インターフェースの左側にある [オプション] ボタンをクリックします。

OT スニファ Wireshark Extcap キャプチャ

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

OT スニファ Wireshark Extcap オプション

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

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

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

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

  • インターフェース ID(frame.interface_id)- Wireshark がキャプチャ インターフェースを識別するために使用するインターフェース ID
  • インターフェース名(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 でパケットをキャプチャできるのはルートユーザーのみ

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 以降を使用していることを確認します。