本指南將說明如何設定 Wireshark 的 extcap,以便從 Thread 網路嗅探封包。
如要使用 Pyspinel 進行封包嗅探 (不使用 extcap),請參閱「使用 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 嗅探器的硬體介面。
從單一介面擷取
如果這是您第一次使用介面,請按一下介面左側的「選項」按鈕:
- 將「Channel」設為所需值。
- 檢查 IEEE 802.15.4 TAP,確認 pcap 輸出內容包含頻道資訊,且可在 Wireshark GUI 中顯示。
- 勾選「Save parameters on capture start」,確保系統在開始擷取後儲存這些參數,避免下次使用介面時需要再次設定 (除非您需要變更管道)。
- 按一下「開始」。
如果參數已儲存,請選取硬體介面,然後按一下左上方的 Wireshark 圖示,開始嗅探。
從多個介面擷取
選取擷取畫面中列出的所有硬體介面,然後按一下左上方的 Wireshark 圖示。
從多個介面擷取時,請使用這些欄位來識別個別嗅探器:
- 介面 ID (frame.interface_id):Wireshark 用來識別擷取介面的介面 ID
- 介面名稱 (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
使用者擷取封包。
我們強烈建議您不要使用 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 以上版本。