工具:蓝牙分析仪
软件:ComProbe
本文讲解通过BLE抓包分析GATT链接过程。
背景知识
GAP中的四个角色
Broadcaster, Observer, Peripheral(外设), and Central(集中器)
GAP、ATT、GATT三者的联系
GATT的两个角色
GATT defines two roles: Server and Client.
The GATT client is also an ATT client. The GATT server is also an ATT server.
本文中描述的Master就是GATT Client、GAP的集中器角色。
Slave是GATT Server、GAP的外设角色。
在实际的BLE配网应用中, Master相当于手机APP、Slave就相当于IoT设备。
抓包方法
1. 与Wi-Fi无线抓包类似,需要设置好抓包过滤蓝牙MAC地址。
2. 开始抓包。
分析抓包
前提:已过滤蓝牙MAC地址,得出想要分析的设备蓝牙包。
如何判断哪个包是蓝牙连接的发起过程呢?
看到下图846帧, BDADDR上有地址,这一包开始,是BLE连接开始的过程。
BLE连接过程的都做了哪些事情
1. 从机发起广播包,主机扫描。主机扫描到目标设备,发起连接。
点击到LE ADV栏目看广播包,看到846帧前面高亮的841帧、842帧和843帧。
这三帧对应LE Advertising Report event
, 详见BLE Core Specification 5.2 7.7.65.2
当看到SCAN RSP帧代表从机发起的广播包响应,也可以说明有设备(主机)连上来了 。
回到846帧,CONNECT_IND 包代表有主机连上来了。
2. 主机和从机之间进行服务发现以及设置。
看到ATT栏目, 高亮处为服务发现相关。
这个阶段还会有MTU交换等过程。
3. GATT 客户端和服务端数据交换
待补充
参考 BLE Core Specification 5.2
GATT_Specification_Supplement_v4