蓝牙空中抓包 (WireShark + nRF Sniffer)
话不多说!先上图展示下抓包的效果:(∩_∩)
这是 NORDIC 官方提供的蓝牙抓包方法,优点就是便宜!整套硬件成本不超过 100RMB,比公司 30W 的 ellisys 专业蓝牙分析仪要便宜得多了。缺点就是在嘈杂的蓝牙环境下,抓包比较困难,但是在家里蓝牙设备不多的情况下还是可以用用的。适合初学者入门学习蓝牙协议栈的数据流!
接下来就是正文!介绍如何使用 WireShark + nRF Sniffer 进行抓包。
一共分为两个部分:
(一)软件安装配置
(二)蓝牙抓包分析
wireshark 软件地址: https://www.wireshark.org/
nRF Sniffer 硬件:https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE/Download#infotabs (建议直接在某宝上淘一个 nRF52840 抓包器)
(一)软件安装配置
NORDIC 官网有英文教程 https://infocenter.nordicsemi.com/pdf/nRF_Sniffer_BLE_UG_v4.1.0.pdf 这个文档里会介绍如何将你的 NORDIC 开发板刷成蓝牙抓包器以及如今配置 wireshark 。以下是中文详细步骤描述:
安装 python 环境
python 的版本要求是在 3.6 及以上,并且不要忘记勾选 pip 安装选项!
安装 WireShark
以下三张图是安装 WireShark 时的选项:
安装完 Wireshark 还需要对软件进行配置:
去 NORDIC 官网下载配置文件 https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE/Download#infotabs
解压下载下来的软件包,使用命令行工具 Powershell 进入 nrf_sniffer_for_bluetooth_le_4.1.0/extcap
目录运行命令:python -m pip install -r requirements.txt
将 nrf_sniffer_for_bluetooth_le_4.1.0/extcap
目录里的内容原封不动的拷贝到 Wireshark 安装目录里的 extcap 下。
将 Profile_nRF_Sniffer_Bluetooth_LE
拷贝到如下图所示目录:
自此我们的软件环境就已经搭建完毕!
(二)蓝牙抓包分析
启动 Wireshark ,勾选接口工具栏里的 nrf sniffer for Bluetooth LE
选项。
双击如下图所示 nrf sniffer for Bluetooth LE COMxx
栏。
如下图可以选择捕获 37,38,39 广播信道
上的数据包。
选择要抓包的设备对象
如下图所示,可将蓝牙协议数据包的成员变量单独变成一个列表,便于显示:
以下是手机 BLE 调试助手 app 连接蓝牙设备并读写设备的步骤:
通过 WireShark 查找功能找到连接蓝牙的起始步骤 CONNECT_IND
:
为了便于查找我们可以先如下图所示过滤空包:
手机 app 获取蓝牙设备名时产生的数据包分析:
Opcode = 0x08; Opcode = 0x09;
对应的蓝牙规范手册内容如下:
手机 app 发送字符串 light on
产生的数据包分析:
Opcode = 0x12; Opcode = 0x13;
对应的蓝牙规范手册内容如下: