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


在蓝牙的开发过程中,使用抓包器对蓝牙模块收发数据进行抓包BLE分析,无疑会极大地提高我们的研发开发效率,同时能帮我们快速地定位问题。对于初学者或者开发者来说,BLE抓包分析能让我们更快地理解蓝牙的工作过程。

市面上有几款常见的抓包工具,本文详细对比了Wireshark和TI CC2540 Sniffer软件Packet Sniffer对蓝牙模块抓包的测试体验。

经过测试Wireshark对比Packet Sniffer的使用体验,主要有三点:

1. Wireshark优化的软件布局和简化的抓包流程。

2. Wireshark解析彻底的抓包数据结构,便于分析。

3. Wireshark对抓包数据提前解析数据包类型,方便查找到对应的数据包。

在测试中,我们选用了信驰达科技基于nRF52832的RF-DG-32A硬件抓包工具,其价格、性能、稳定性上要好于TI的CC2540 USB Dongle硬件,各位电子工程师们可以尝试一下这款RF-DG-32A。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_02


当然本文重点是软件方面的实测对比,具体的测试分析过程请看下面。

首先我们需要在测试前做好软硬件准备。

硬件部分我们需要准备信驰达科技的基于nRF52832的RF-DG-32A硬件抓包工具以及测试的模块:RF-BM-ND04模块和RSBRS02ABR模块。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_03


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_04


软件部分我们需要准备Android手机端软件:nRF-connect,这个软件在应用商店可以很容易找到下载。在PC我们需要下载安装Wireshark软件,它的下载地址如下:https://www.wireshark.org/download.html


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_05


以上软硬件准备完毕后,我们就可以开始进行RF-DG-32A的抓包测试。

一、首先我们使用RF-BM-ND04模块进行测试。

具体步骤为:

1. RF-DG-32A插上电脑的USB接口,然后打开“我的电脑”—“管理”—“设备管理器”—“端口”,查看设备的 COM 端口号。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_06


2.Wireshark软件,选择对应的COM号,双击COM号进入。


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


3.将RF-BM-ND04模块上电,打开手机上对应的软件 nrf connect,查看设备的MAC 地址,软件里可以看到RF-BM-ND04设备地址是FA:8D:0D:27:50:C6。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_08


4.在Wireshark软件中点击“Device”选择框,在下拉选项框中选择MAC地址为FA:8D:0D:27:50:C6的设备。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_09


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_10


5.手机端软件nRF connect点击“CONNECT”连接到蓝牙模块。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_11


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


6.在手机端软件nRF connect中选择“Nordic UART Service”,在“TX”中发送数据 “rf-star”到模块。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_13


7.Wireshark软件在模块没有发送数据前,数据包显示是广播包LE LL 格式。Wireshark抓包正确的数据包格式为ATT,我们只需要找到ATT格式数据包,并双击ATT即可查看数据 。


wireshark分析蓝牙 wireshark抓蓝牙包_wireshark分析蓝牙_14


wireshark分析蓝牙 wireshark抓蓝牙包_wireshark分析蓝牙_15


8.数据包界面如下图所示,解析出接收到的数据为rf-star,收发一致。说明已经成功抓到该数据


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


我们更换发送的数据,重复上述发送数据步骤进行测试:

1.重复上述操作,手机发送的数据修改为:https://www.szrfstar.com/。Wireshark抓包结果为:

wireshark分析蓝牙 wireshark抓蓝牙包_抓包_17


2.手机多次向模块发送同一个数据包:“rf-star”,抓包显示的数据如下:


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_18


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_19


提示:在使用Wireshark时,可以注意几个使用技巧,需要查看数据时可以先点击停止捕获按钮(红色),再观察数据。需要重新抓取则需要点击重新开始当前捕获按钮(绿色) ,点击后需要把设备断开连接,Wireshark会自动重新开始抓包 ,再重新连接上设备即可正常工作。 如果连接后发现Wireshark数据停止 则重新断开设备连接并重新连接即可正常工作


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_20


二、接下来我们使用RF-DG-32A对RSBRS02ABR模块进行测试抓包。

具体步骤为:

1. RF-DG-32A插上电脑的USB接口,然后打开“我的电脑”—“管理”—“设备管理器”—“端口”,查看设备的 COM 端口号。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_21


图1

2.Wireshark软件,选择对应的COM号,双击COM号进入。


wireshark分析蓝牙 wireshark抓蓝牙包_wireshark分析蓝牙_22


图2

3.将RSBRS02ABR模块上电,打开手机上对应的软件 nRF connect,查看设备 的MAC 地址,在本例中可以看到RSBRS02ABR设备地址是BA:03:28:1A:74:90。


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


4.在Wireshark软件中点击“Device”选择框,在下拉选项框中选择MAC地址为BA:03:28:1A:74:90的设备。


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_24


5.手机端软件nRF connect点击“CONNECT”连接到蓝牙模块


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_25


6.在手机端软件nRF connect中ffe5-ffe9下拉菜单中发送数据 “rf-star” 到模块。Wireshark软件在模块没有发送数据前,数据包显示是广播包LE LL 格式。Wireshark抓包正确的数据包格式为ATT,我们只需要找到ATT格式数据包,并双击ATT即可查看数据 。


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


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


7.数据包界面如下图所示,解析出接收到的数据为rf-star,收发一致。说明已经成功抓到该数据


wireshark分析蓝牙 wireshark抓蓝牙包_wireshark分析蓝牙_28


我们更换数据,重复上述发送数据进行测试:

1.重复上述操作,手机发送的数据修改为:https://www.szrfstar.com/。Wireshark抓包结果为:


wireshark分析蓝牙 wireshark抓蓝牙包_wireshark分析蓝牙_29


2.手机多次向模块发送同一个数据包:“rf-star”,抓包显示的数据如下:


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_30


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_31


三、使用RF-DG-32A硬件对Wireshark抓包测试后,我们再使用TI CC2540 Sniffer抓包工具Packet Sniffer进行测试。

硬件准备CC2540官方USB Dongle硬件以及RF-BM-ND04模块。


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


软件准备Android手机端:nRF-connect。

PC端:Packet Sniffer,下载地址为:http://www.ti.com.cn/tool/cn/PACKET-SNIFFER?keyMatch=PACKET%20SNIFFER&tisearch=Search-CN-everything


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_33

1. 安装好所需软件之后,打开Packet Sniffer,界面选择Bluetooth Low Energy ,点击下方start。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_34


2.点击star后界面如下所示,设备会自动识别官方USB Dongle设备


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


3.我们点击下方 Radio Configuration 栏,选择广播信道(37、38、39),点击上方的三角形开始按钮搜索附近设备的广播信息


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_36


wireshark分析蓝牙 wireshark抓蓝牙包_抓包_37


4.打开手机APP nrf-connect,查看需要监听设备的地址信息为:BA:03:28:1A:74:90。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_38


5.点击软件下方Display filter栏,在 Field Name 中选择 ADV_IND Adva。

6.在Filter conditon 中输AA1=0x+ BA03281A7490 地址。点击first ,AA1=会自动增加,后面直接加上MAC地址BA03281A7490,点击 Add 添加该设备。再点击 Apply filter,即可抓到指定MAC地址的包。


wireshark分析蓝牙 wireshark抓蓝牙包_Wireshark_39


通过上面Wireshark和的对比测试,我们可以看出,Wireshark的抓包体验好于TI公司的Packet Sniffer。

其一:Wireshark在进入抓包前,选择相应的COM口再进入抓包,Packet Sniffer则是通过底部区域选择对应的设备,底部区域占幅较大的设计使得抓包过程数据展示效果和Wireshark相比差很多。Packet Sniffer软件风格和布局过于陈旧,相比Wireshark在软件优化上做的更好。

其二:在Wireshark抓包展示的数据中,可以实时点击数据查看数据结构,双击即可查看底层协议的具体解析。而Packet Sniffer仅仅只能展示拆分的数据结构,展示部分结构的具体数值。相比之下,Wireshark可以完整地展示接收到的数据包的每一个结构的具体数值,堪称完美解析。

其三:Packet Sniffer需要逐条查看哪一条信息是接收到的数据,需要一定分析的方法才能找到正确的数据。而Wireshark提前解析好了每一条数据,可以清楚的知道哪一条是LE LL,哪一条是ATT,需要找到发送的数据包可以直接通过标记ATT的数据找到,非常方便高效,而且数据可以根据时间、协议排序,根据实际的数据查找要求,高效地、清楚地找到。毕竟Wireshark自被开源以来,经过至少数千名开发者的开发优化,使用体验得到很好的优化,免费好用的特性会吸引更多人的去尝试。