Wireshark 是一个开源工具,可解码 Thread 堆栈中的网络协议,例如 IEEE 802.15.4、6LoWPAN、IPv6、MLE(网状链路建立)、UDP 和 CoAP。
Pyspinel 嗅探器工具会连接到 Thread NCP 或 RCP 设备,并将其转换为混杂数据包嗅探器,生成 pcap(数据包捕获)数据流,以便保存或直接管道到 Wireshark。
如需将 Wireshark 与 Pyspinel 搭配使用,请参阅下一步中的安装建议。您还需要配置 Wireshark,以便正确显示 Thread 数据包并接收 RSSI 测量结果。
安装 Wireshark
Linux
打开终端并运行以下命令,下载并安装 Wireshark:
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
我们建议以非 root
用户身份运行 Wireshark。为此,请重新配置软件包:
sudo dpkg-reconfigure wireshark-common
当系统显示询问“非超级用户是否应能够捕获数据包?”的对话框时,选择 Yes(是),然后添加 wireshark
用户并更新文件权限:
sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap
macOS 和 Windows
下载并安装 Wireshark。如需优化操作系统的安全性,请参阅 Wireshark - 有关捕获权限的平台专用信息。
配置 Wireshark 协议
如需配置协议,请在 Wireshark 中选择 Preferences...(偏好设置...),然后展开 Protocols(协议)部分。
6LoWPAN
从协议列表中选择 6LoWPAN,然后验证或更改以下设置:
- 取消选中根据 RFC 4944 派生 ID。
- 使用目标线程网络的网状本地前缀更新 Context 0。
Wireshark 使用上下文配置来解析压缩的 IPv6 地址,并正确显示 IPv6 源地址和目标地址。
如需显示在网关上配置的其他网状网前缀的地址,请使用这些前缀更新其他情境 ID。
如需获取特定网状网络前缀的上下文 ID,请查看任何 MLE 数据响应消息中的 Thread 网络数据 TLV。例如:
Context 1: fd00:7d03:7d03:7d03::/64
CoAP
从协议列表中选择 CoAP,并将 CoAP UDP 端口设置为 61631。这样可确保显示 TMF 消息(例如地址征求消息)。
IEEE 802.15.4
从协议列表中选择 IEEE 802.15.4,然后验证或更改以下设置:
- 将 802.15.4 Ethertype(十六进制)设置为“0x809a”。
- 将安全套件设置为“AES-128 加密、32 位完整性保护”。
点击解密密钥旁边的修改...按钮,在该位置添加用于数据包解密的 Thread 网络主密钥。
- 点击 + 以添加解密密钥。
- 在解密密钥列中输入 Thread 网络主密钥。
- 输入“1”作为解密密钥索引。
从“键哈希”列的列表框中选择“线程哈希”。
点击 OK 保存解密密钥。
会话
从协议列表中选择 Thread,然后验证或更改以下设置:
- 为线程序列计数器输入“00000000”。
- 取消选中使用 PAN ID 作为主密钥的前两个八字节。
- 选中 Automatically acquire Thread sequence counter(自动获取线程序列计数器)。
点击 OK 按钮以保存所有协议更改。
系统可能会将某些 Thread 流量分析为 ZigBee 协议。如需正确显示这两种协议,请在 Wireshark 中修改已启用的协议:
- 在 Wireshark 中,前往分析,然后点击已启用的协议。
取消选中以下协议:
- LwMesh
- ZigBee
- ZigBee Green Power
配置 Wireshark RSSI
如需在 Wireshark 中显示 RSSI,请执行以下操作: