Google 致力于为黑人社区推动种族平等。查看具体行动

使用 Extcap 进行数据包 探

在 GitHub 上查看源代码

本指南介绍如何配置 Wireshark 的 extcap 以 探来自线程网络的数据包。

如需在不使用 extcap 的情况下对 Pyspinel 进行数据包 探,请参阅使用 Pyspinel 进行数据包 P 探

设置 the 探器环境

开始之前,请完成以下步骤:

验证

本指南已通过以下主机系统上的 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

构建并刷写 the 探器

构建和刷写说明因平台而异。

如需了解如何构建和刷写 CC2538,请参阅 GitHub 上的 CC2538 示例 README

如需了解常规构建说明,请参阅如何构建 OpenThread

使用 the 探器

首次启动 Wireshark 时,系统会显示 Wireshark 捕获屏幕。它应列出已连接到 OpenThread 探器的硬件接口。

从单个接口捕获数据

如果这是您首次使用接口,请点击接口左侧的选项按钮:

OT 探器 Wireshark Extcap 捕获

  1. 频道设置为所需的值。
  2. 检查 IEEE 802.15.4 TAP,以确保频道信息已包含在 pcap 输出中,并可在 Wireshark GUI 中显示。
  3. 选中在拍摄开始时保存参数,以确保这些参数在拍摄开始后保存,以避免在下次使用接口时再次设置这些参数(除非您需要更改频道)。
  4. 点击开始

OT 探器 Wireshark Extcap 选项

如果参数已保存,请选择硬件接口并点击左上方的 Wireshark 图标,开始 探。

从多个接口进行捕获

选择截取屏幕中列出的所有硬件接口,然后点击左上角的 Wireshark 图标。

从多个接口进行捕获时,请使用这些字段来识别各个 探器:

  • Interface ID (frame.interface_id) - 供 Wireshark 识别捕获接口的接口标识符
  • Interface name (frame.interface_name) - Wireshark 用于标识捕获接口的接口名称
  • 声道 (wpan-tap.ch_num) - IEEE 802.15.4 捕获通道(范围:11-26)

OT 探器 Wireshark Extcap 数据包

问题排查

OpenThread 探器未被列为 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 或更高版本。