如何使用nRF BLE Sniffer捕获已连接设备间的BLE数据包?
解决nRF Sniffer捕获已连接BLE设备通信的方法
要捕获已建立连接的BLE设备(如智能手环与手机)的通信数据包,核心是获取BLE连接的关键参数并手动配置nRF Sniffer跟踪该连接,以下是具体可行的方法:
方法1:提前捕获连接建立过程,提取连接参数
- 启动nRF Sniffer捕获,再触发手环与手机的连接流程。此时Sniffer会捕获到连接建立的完整数据包(包括
CONNECT_REQ、CONNECT_RSP等帧)。 - 在Wireshark的数据包列表中找到连接请求帧,从中提取以下关键参数:
- 访问地址(Access Address)
- 连接间隔(Connection Interval)
- 跳频通道映射(Channel Map)
- 时钟偏移(Clock Offset)
- 保存这些参数,后续需跟踪已连接设备时,直接在Sniffer配置中填入即可启动捕获。
方法2:从设备端日志提取连接参数
- 安卓手机端:开启开发者选项中的「蓝牙HCI snoop日志」,连接手环后导出日志文件(通常在
/sdcard/Android/data/com.android.bluetooth/files/目录下),用Wireshark打开日志提取连接参数;也可通过ADB命令直接抓取日志:adb logcat -s BluetoothHci BluetoothGatt - 手环端:如果手环支持调试模式,可通过厂商提供的调试工具导出连接日志,从中提取所需参数。
方法3:手动配置nRF Sniffer跟踪现有连接
- 打开Wireshark,进入捕获界面,选择nRF Sniffer对应的接口并点击「选项」。
- 在弹出的配置窗口中,找到「LE Sniffer」设置项,手动填入:
- 手环的LE蓝牙地址
- 之前获取到的访问地址、连接间隔、跳频通道映射等参数
- 确认配置后启动捕获,Sniffer即可跟踪已建立的BLE连接,捕获两者间的通信数据包。
注意事项
- BLE连接使用私有访问地址和跳频机制,仅添加设备地址不足以让Sniffer定位到连接通信,必须完整配置所有连接参数。
- 部分手环可能使用随机私有地址且地址会定期更新,需确保获取的是当前连接使用的有效地址。
内容的提问来源于stack exchange,提问作者qiu ye
相关产品推荐
相关产品推荐

