BLE抓包
在进行网络开发的时候,抓包是一个很重要的调试过程,通过抓包可以分析网络传输的数据是否正确,可以深入理解网络传输过程。在物联网开发中,BLE低功耗蓝牙技术是一种非常通用的网络传输方式。在学习BLE过程中,除了要了解BLE基本架构,抓包是一个必要的环节,下面由华清远见·星创客讲师来介绍一下如何进行BLE抓包
一、工具
1、软件平台
集成开发环境:IAR
协议栈:TI-BLE-1.3.0
刷固件工具:smartRF flash program
Sniffer抓包工具
2、硬件平台
CC2540EM开发板
CC-Debug下载器
SmartRF04下载器
USB-dongle抓包工具
MiniUSB数据线
Ios/Android手机
二、抓包方式
1、专业工具usb-dongle
这是一个专业的抓包工具,可以抓取ZigBee、ble数据包。不过这个需要购买,增加成本
2、CC-Debug下载器+CC2540EM开发板
这种方式可以节省成本,毕竟你肯定有一个CC-Debug。但是这种方式对CC-Debug有要求,你必须给CC-Debug刷入专业的固件程序
3、SmartRF04 + CC2540EM开发板
这种方式可以节省成本,毕竟你肯定有一个SmartRF04。此方式也需要专业的固件程序
三、抓包的原理
其实抓包的原理很简单,既然你要抓取BLE数据包,那么你的抓包硬件必须是一个BLE设备,这样就可以接收到BLE的数据了。为了对数据进行透彻的分析,你需要给抓包设备输入固件,让它把整个数据包解析出来,然后显示在PC上位机。
四、准备工作
IAR、协议栈就不说了,到这个地步,你肯定已经把这两个装好了。
安装sniffer抓包工具,可以从网上下载一个,你还可以看一下sniffer的说明手册,里面有详细的使用方法。我们来看一下,sniffer支持哪些硬件抓包方案
五、采用下载器+CC2540EM来抓包
1、给CC2540EM开发板刷入抓包固件程序
这个固件程序在sniffer的安装目录下,我们可以找到目录“Packet Sniffer\bin\general\firmware”,看下面的截图
当前我们使用的是cc2540抓取BLE数据包,因此要刷入sniffer_fw_cc2540.hex(如果你想抓取ZigBee数据包,那么你需要下载cc2530的固件)。注意,当前这个开发板是用来抓包的哦,明确它的功能。
2、给另外一个CC2540开发板下载目标工程
由于BLE中常用的模式是“主从模式”,因此这里我给开发板下载一个从机工程,里面有5个特征值。至于主机,我们直接使用手机就可以了。提前给手机安装light blue工具,这个工具可以让我们随意的使用手机的蓝牙进行调试。
3、打开sniffer开始抓包
首先将下载器连接到第一步中的开发板(不是第二步 的哦),当然另外一头通过USB连接到PC。打开sniffer
这里首先要选择协议,我们在抓起BLE数据包,因此要选择“Bluetooth low energy”;如果你要抓ZigBee数据包,就要选择“ZigBee”。软件同时告诉我们,当前协议支持的抓包硬件方案。
4、sniffer使用
1)显示已连接的硬件
如果你的硬件是正确的,那么可以看到上面的结果,sniffer可以显示你当前的硬件。
2)设置频道
第二个标签用来设置信道。BLE会在37、38、39这三个信道来广播数据,你需要设置抓取哪个信道的数据。至于下面哪个“connect to initiator address”,我们后面再来研究。
3)点击按钮开始抓包
4)几种抓包结果
A.普通广播包
B.扫描应答包
C.连接请求包
D.请求读取数据包
E.请求数据应答包
5)显示设置
通过第三个标签,你可以设置显示的内容,上图是一个默认配置,显示所有的内容,你可以设置只显示某部分内容,如下图所示。这里对数据包,只显示包的类型,而不显示数据
6)过滤器
当周围的BLE设备太多的时候,我们可以抓取到很多的数据包,这时候你需要一个过滤器,让它只显示你的设备。我们可以在第6个标签中设置
APT代表包类型,这里我设置的是“发起连接请求”的包
AA5代表扫描应答包的mac地址,这里我设置的是“0x8030DCE03C17”
你还可以根据“field name”下拉列表来选择更多的过滤选项。
注意,这里的mac地址你要注意使用大写字母,小写字母不识别;另外前面还要加“0x”
7)设置自动跟踪已经连接的BLE设备
如果你仔细看就会发现一个问题,在第二步我们忽略了一个细节,现在该完善一下了。BLE设备会在3个频道广播数据,那么究竟最后在哪个频道连接的,之后又是在哪个频道传输数据的呢?sniffer可以帮你自动追踪,前提是你要设置第二步的address。这个address就是上面的“连接请求包”中的mac地址!当你设置好mac地址以后(别忘记前面打钩哦),接下来就尝试3个广播频道,经过若干次之后,总有一个频道会被你抓住的,祝你好运吧。。。