使用 Extcap 執行封包加密

前往 GitHub 查看原始碼

本指南說明如何為 Wireshark 設定 extcap,藉此從 Thread 網路中提取封包。

如要在不使用 capcap 的情況下使用 Pyspinel 進行封包封裝,請參閱使用 Pyspinel 封包封包

設定 Sniffer 環境

在開始之前,請先完成下列步驟:

驗證

本指南已通過 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

使用 Sniffer

首次啟動 Wireshark 時會顯示 Wireshark 擷取畫面。畫面上應會列出已連線至 OpenThread Sniffer 的硬體介面。

透過單一介面擷取

如果您是第一次使用介面,請按一下介面左側的 [選項] 按鈕:

OT Sniffer Wireshark Extcap 擷取

  1. Channel 設為所需的值。
  2. 檢查 IEEE 802.15.4 TAP 以確保管道資訊包含在 pcap 輸出中,並且可以顯示在 Wireshark GUI 中。
  3. 勾選「Save on capture start 的儲存參數」,確保系統在擷取開始後儲存這些參數,以避免在下次使用介面時重新設定 (除非您需要變更管道)。
  4. 按一下「開始」

OT Sniffer Wireshark Extcap 選項

如果您已儲存參數,請選取硬體介面,然後按一下左上方的「Wireshark」圖示,開始偵測資料。

從多個介面擷取

選取擷取畫面中列出的所有硬體介面,然後按一下左上方的「Wireshark」圖示。

從多個介面擷取時,請使用以下欄位識別個別剪刀:

  • Interface ID (frame.interface_id) — Wireshark 用來識別擷取介面的介面識別碼
  • 介面名稱 (frame.interface_name):Wireshark 用來識別擷取介面的介面名稱
  • 頻道 (wpan-tap.ch_num) — IEEE 802.15.4 擷取頻道 (範圍:11-26)

OT Sniffer Wireshark Extcap 封包

疑難排解

OpenThread Sniffer 並未列為 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 使用者擷取封包。

我們不建議使用 Wireshark 做為 root 使用者。如果您選擇該選項,請變更設定:

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 以上版本。