硬件准备:

1)nRF52840 Dongle
2)待抓包的蓝牙设备

软件准备:

1)Python
2)Wireshark
3)nRF Sniffer for Bluetooth LE

Python安装

需要注意的是下载的nRF Sniffer for Bluetooth LE版本是否和python版本匹配。因为nRF Sniffer for Bluetooth LE从3.0.0版本之后就不再支持python2了。

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark


如果电脑上已经安装了python的话,使用cmd命令行工具键入pip list,如果提示如下:

pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1

说明没有这个组件。pip是后续安装Pyserial和Psutil必须要有的。那么需要把python的安装路径加入环境变量中。

我电脑上安装的是Python 2.7.4,加入环境变量还是不行,这个版本的python其他地方还要用。所以就直接安装高版本的python,安装的时候Optional Features界面中的pip要勾选,Advanced Options界面的Install for all users不要勾选,如果只安装一个版本的python,Install for all users要勾选上。

python安装完成后使用cmd命令行工具键入pip list(不管安装一个或两个版本的python版本都可以直接输入),出现如下提示,可以进行后续操作:

wireshark蓝牙数据分析 wireshark抓蓝牙_BLE_02

Wireshark安装

安装wireshark的时候如果安装Npcap软件需要注意,在Installation Options界面的第二项不要选(红框标注这一项)

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark蓝牙数据分析_03


如果勾选了之后,安装完成后会一直提示The helper program for “Admin-only Mode”

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark蓝牙数据分析_04

如果需要重装wireshark,需要先去把Npcap卸载了,然后再重装,否则重装的时候Npcap这个界面就不可选了。

wireshark蓝牙数据分析 wireshark抓蓝牙_python_05

Pyserial和Psutil安装

使用cmd命令或者powershell命令将路径切换至下载的nRF Sniffer for Bluetooth LE下的extcap文件(路径里面可以有中文)。具体的安装命令可以参考nordic官方的nRF_Sniffer_BLE_UG_v4.1.x文件。

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark蓝牙数据分析_06


如果安装了两个版本的python,高版本的安装时Install for all users没有勾选,那么就不能使用python -m pip install -r requirements.txt命令,否则使用的还是低版本的python,会报SNIMissingWarning和InsecurePlatformWarning警告,如下所示:

wireshark蓝牙数据分析 wireshark抓蓝牙_BLE_07


那么直接用pip install -r requirements.txt命令进行安装,安装完成后如下:

wireshark蓝牙数据分析 wireshark抓蓝牙_python_08


此时再使用pip list查询时,可以查到Pyserial和Psutil的版本

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark蓝牙数据分析_09

Wireshark设置

1)打开wireshark,帮助→关于wireshark→文件夹。

wireshark蓝牙数据分析 wireshark抓蓝牙_抓包_10

选择Global Extcap path下的路径打开文件夹,把下载的nRF Sniffer for Bluetooth LE下的extcap文件夹中内容全部复制过来。

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark_11


选择个人配置下的路径打开文件夹后进入profiles文件夹,把下载的nRF Sniffer for Bluetooth LE下的Profile_nRF_Sniffer_Bluetooth_LE文件夹复制过来。

wireshark蓝牙数据分析 wireshark抓蓝牙_抓包_12


2)编辑→Configuration Profiles,选择Profile_nRF_Sniffer_Bluetooth_LE后点OK。

wireshark蓝牙数据分析 wireshark抓蓝牙_BLE_13


完成后,右下角wireshark会有显示:

wireshark蓝牙数据分析 wireshark抓蓝牙_BLE_14

开始抓包

nRF52840 Dongle可以直接在网上买,一般买回来里面烧录的就是抓包的固件,可以直接使用,如果里面没有固件的话,可以自己使用jlink下载固件,下载时用的是hex文件(nRF Sniffer for Bluetooth LE下的hex文件夹)。

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark_15


插上Dongle后,捕获→刷新接口列表,找到对应的COM口后双击进入开始抓包。

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark蓝牙数据分析_16


抓到广播包如下:

wireshark蓝牙数据分析 wireshark抓蓝牙_wireshark_17


抓包的时候会抓到很多设备的包,可以通过Source里面的地址找到对应的待抓包设备,然后在上方Device里面选择对应的设备,这样就会滤除无用的数据包,如果蓝牙名称是中文的话在Device里面不能正常显示,可以改成英文的名称,如果还是没有显示,重新打开wireshark软件后就可以在Device里面直接根据蓝牙名称直接找到对应的设备。

wireshark蓝牙数据分析 wireshark抓蓝牙_BLE_18