硬件准备:
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了。
如果电脑上已经安装了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的时候如果安装Npcap软件需要注意,在Installation Options界面的第二项不要选(红框标注这一项)
如果勾选了之后,安装完成后会一直提示The helper program for “Admin-only Mode”
如果需要重装wireshark,需要先去把Npcap卸载了,然后再重装,否则重装的时候Npcap这个界面就不可选了。
Pyserial和Psutil安装
使用cmd命令或者powershell命令将路径切换至下载的nRF Sniffer for Bluetooth LE下的extcap文件(路径里面可以有中文)。具体的安装命令可以参考nordic官方的nRF_Sniffer_BLE_UG_v4.1.x文件。
如果安装了两个版本的python,高版本的安装时Install for all users没有勾选,那么就不能使用python -m pip install -r requirements.txt命令,否则使用的还是低版本的python,会报SNIMissingWarning和InsecurePlatformWarning警告,如下所示:
那么直接用pip install -r requirements.txt命令进行安装,安装完成后如下:
此时再使用pip list查询时,可以查到Pyserial和Psutil的版本
Wireshark设置
1)打开wireshark,帮助→关于wireshark→文件夹。
选择Global Extcap path下的路径打开文件夹,把下载的nRF Sniffer for Bluetooth LE下的extcap文件夹中内容全部复制过来。
选择个人配置下的路径打开文件夹后进入profiles文件夹,把下载的nRF Sniffer for Bluetooth LE下的Profile_nRF_Sniffer_Bluetooth_LE文件夹复制过来。
2)编辑→Configuration Profiles,选择Profile_nRF_Sniffer_Bluetooth_LE后点OK。
完成后,右下角wireshark会有显示:
开始抓包
nRF52840 Dongle可以直接在网上买,一般买回来里面烧录的就是抓包的固件,可以直接使用,如果里面没有固件的话,可以自己使用jlink下载固件,下载时用的是hex文件(nRF Sniffer for Bluetooth LE下的hex文件夹)。
插上Dongle后,捕获→刷新接口列表,找到对应的COM口后双击进入开始抓包。
抓到广播包如下:
抓包的时候会抓到很多设备的包,可以通过Source里面的地址找到对应的待抓包设备,然后在上方Device里面选择对应的设备,这样就会滤除无用的数据包,如果蓝牙名称是中文的话在Device里面不能正常显示,可以改成英文的名称,如果还是没有显示,重新打开wireshark软件后就可以在Device里面直接根据蓝牙名称直接找到对应的设备。