废话不多说,直接上干货

以下是用usb dongle 抓取手机和BLE设备通信数据包的过程。其他也类似

 首先你要有个usb dongle,一台装有TI Packet Sniffer的电脑,一个手机,一个低功耗蓝牙设备

1.将USB dongle插入电脑,在电脑的设备管理器里面可以看到CC2540 USB dongle,没有的话,就需要安装驱动,过程不述。

Android USB协议抓包 手机usb抓包_蓝牙4.0

2.打开TI的Packet Sniffer选择Bluetooth Low Energy然后点击Start

Android USB协议抓包 手机usb抓包_蓝牙4.0_02

正常能看到,如果没有的话,可能是驱动有问题。

Android USB协议抓包 手机usb抓包_重新连接_03

3.点击开始或者快捷键F5

Android USB协议抓包 手机usb抓包_数据_04

这是会看到有好多数据包

Android USB协议抓包 手机usb抓包_Android USB协议抓包_05

数据包太多都不知道哪个是哪个,怎么办,这时候重要的一步来了,就是点击Display filter 选择ADV_PDU_Type 然后参数为APT=ADV_CONNECT_REQ然后点击Add 之后点击Apply filter 

Android USB协议抓包 手机usb抓包_重新连接_06

现在就只显示数据连接请求包了。把其余的都屏蔽掉了。

然后用手机去连接蓝牙设备。如果出现连接请求包,且adva和你的蓝牙mac一至,恭喜你连接成功,(蓝牙mac可以用过手机蓝牙助手去查看)

Android USB协议抓包 手机usb抓包_蓝牙4.0_07

如果没有出现,说明没有捕捉到,因为蓝牙广播有3个通道,且是随机广播的,而usb dongle只能监听其中一个通道。具体参见文末链接不在详解。

这时候断开蓝牙,重新连接蓝牙,严重拼人品的时候。多试几次,总会成功。

第一次连接成功后可能并没有数据。

这时候需要在Radio Configuration中填入InitA下的地址,

Android USB协议抓包 手机usb抓包_数据_08

然后再次连接成功后,点击Display filter下的turn off filter 关闭滤波,然后下拉,就会发现有黄色数据出现 

Android USB协议抓包 手机usb抓包_重新连接_09

这时才是真真正成功了。

但是数据太多,不知道怎么办,还是利用Packet Sniffer 的滤波功能

例如我们主要关心的是L2CAP-S的数据

这时候在滤波中添加Data Type 为L2CAP-S,然后点击Apply filter 出现的就是纯数据了。

Android USB协议抓包 手机usb抓包_重新连接_10