本指南說明如何為 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 的硬體介面。
透過單一介面擷取
如果您是第一次使用介面,請按一下介面左側的 [選項] 按鈕:
- 將 Channel 設為所需的值。
- 檢查 IEEE 802.15.4 TAP 以確保管道資訊包含在 pcap 輸出中,並且可以顯示在 Wireshark GUI 中。
- 勾選「Save on capture start 的儲存參數」,確保系統在擷取開始後儲存這些參數,以避免在下次使用介面時重新設定 (除非您需要變更管道)。
- 按一下「開始」。
如果您已儲存參數,請選取硬體介面,然後按一下左上方的「Wireshark」圖示,開始偵測資料。
從多個介面擷取
選取擷取畫面中列出的所有硬體介面,然後按一下左上方的「Wireshark」圖示。
從多個介面擷取時,請使用以下欄位識別個別剪刀:
- Interface ID (frame.interface_id) — Wireshark 用來識別擷取介面的介面識別碼
- 介面名稱 (frame.interface_name):Wireshark 用來識別擷取介面的介面名稱
- 頻道 (wpan-tap.ch_num) — IEEE 802.15.4 擷取頻道 (範圍:11-26)
疑難排解
OpenThread Sniffer 並未列為 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
使用者擷取封包。
我們不建議使用 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 以上版本。