Wireshark 是一款可以对 Thread 堆栈中的网络协议进行解码的开源工具,例如 IEEE 802.15.4、6LoWPAN、IPv6、MLE(网状网建立)、UDP 和 CoAP。
Pyspinel Sniffer 工具连接到 Thread NCP 或 RCP 设备,并将其转换为混杂的数据包嗅探器,从而生成 pcap(数据包捕获)数据流,用于保存或直接传输到 Wireshark。
如需将 Wireshark 与 Pyspinel 搭配使用,请参阅下一步中的安装建议。您还需要配置 Wireshark 以正确显示线程数据包并接收 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
当您看到询问“非超级用户是否应该能够捕获数据包?”的对话框时,请选择是,然后添加 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 数据响应消息中查看线程网络数据 TLV。例如:
Context 1: fd00:7d03:7d03:7d03::/64
哥伦比亚特区
从协议列表中选择 CoAP,并将 CoAP UDP 端口设置为 61631。这样可以确保显示 TMF 消息(例如地址请求)。
IEEE 802.15.4
从协议列表中选择 IEEE 802.15.4,然后验证或更改以下设置:
- 将 802.15.4 Ethertype(十六进制)设置为“0x809a”。
- 将安全套件设置为“AES-128 加密, 32 位完整性保护”。
点击解密密钥旁边的修改...按钮,您可以在其中添加线程网络主密钥以进行数据包解密。
- 点击 + 以添加解密密钥。
- 在解密密钥列中输入线程网络主密钥。
- 输入“1”作为解密密钥索引。
从密钥哈希列列表框中选择线程哈希。
点击 OK 以保存解密密钥。
会话
从协议列表中选择 Thread,然后验证或更改以下设置:
- 在线程序列计数器中输入“00000000”。
- 取消选中使用 PAN ID 作为主密钥的前两个八位字节。
- 勾选自动获取线程序列计数器。
点击确定按钮以保存所有协议更改。
某些线程流量可作为 ZigBee 协议进行分析。如需正确显示这两个协议,请修改 Wireshark 中已启用的协议:
- 在 Wireshark 中,转到 Analyze,然后点击 Enabled Protocols(已启用协议)。
取消选中以下协议:
- LwMesh
- ZigBee
- ZigBee 绿色电力
配置 Wireshark RSSI
如需在 Wireshark 中显示 RSSI,请执行以下操作: