结合蓝牙空口抓包分析进行BLE协议学习
字数 2298
更新时间 2026-01-31 12:07:33

BLE协议与空口抓包分析教学文档

一、实验硬件环境搭建

1.1 核心硬件设备

  • ESP32:作为从机设备,运行BLE外设固件
  • nRF52840:作为蓝牙抓包器,支持空口数据捕获
  • CC2540:TI的经典BLE芯片,可用于Packet Sniffer方案
  • 手机端:使用nRF Connect应用作为主机设备

1.2 软件与资源

  • GitHub仓库:https://github.com/Func0rn/Hello_BLE
  • 提供ESP32固件与示例数据包
  • Wireshark配合nRF Sniffer进行数据包分析

二、BLE协议栈层次结构

2.1 物理层(PHY)

  • 工作频段:2.4GHz ISM频段(2400-2483.5MHz)
  • 信道划分:40个物理信道,间隔2MHz
  • 广播信道:37、38、39三个固定的广播信道
  • 数据信道:0-36共37个数据信道用于连接后的数据传输

2.2 链路层(LL)

2.2.1 关键字段解析

  • Access Address(接入地址)
    • 广播包固定值:0x8E89BED6
    • 连接包动态生成:连接建立时随机生成
  • PDU Type(协议数据单元类型)
    • ADV_NON_CONN_IND:不可连接广播(用于信标设备)
    • ADV_IND:通用可连接广播
    • ADV_SCAN_REQ:扫描请求(由接收端发起)
    • ADV_CONNECT_REQ:连接请求

2.2.2 校验机制

  • CRC校验:循环冗余校验,确保数据完整性
  • FCS/FCE:帧校验序列/帧校验错误,直接取决于CRC结果

2.3 通用访问规范层(GAP)

2.3.1 设备标识

  • AdvA:广播设备地址
    • 公开地址或随机地址
    • 由GAP层配置决定地址类型
  • InitA:发起设备地址(连接请求中的主机MAC)

2.3.2 广播数据

  • AdvData:广播数据载荷
    • 包含设备名称、厂商ID、Flags等
    • 遵循GAP规定的AD Type格式
  • ScanRspData:扫描响应数据

三、抓包操作与数据分析

3.1 抓包环境配置

3.1.1 信道监听策略

  • 三频选择限制:只能选择37、38、39中的一个广播信道监听
  • 无法跳频捕获所有广播包,需固定在一个信道

3.1.2 信号质量指标

  • RSSI(接收信号强度指示)
    • 单位:dBm(分贝毫瓦)
    • 典型值范围:-40dBm(设备很近)到-90dBm(设备较远)

3.2 连接建立过程分析

3.2.1 广播阶段

  1. 设备发现:从机发送ADV_IND广播包
  2. 扫描请求:主机发送ADV_SCAN_REQ获取更多信息
  3. 扫描响应:从机回复ScanRspData

3.2.2 连接建立

  • ADV_CONNECT_REQ:在广播信道上发送连接请求
  • 信道切换:连接建立后从广播信道切换到数据信道
  • 跳频同步:主从设备根据跳频算法同步切换信道

3.3 连接后数据通信

3.3.1 数据包头解析

  • Direction:数据传输方向
    • M:主机到从机
    • S:从机到主机
  • LLID:链路层标识符
    • 取值1、2、3分别界定不同数据类型

3.3.2 协议交互模式

  • LL-OPCODE:链路层操作码
    • 0x08:功能查询请求
    • 0x0C:版本信息响应
  • 并行握手机制:主从设备可同时发起请求,提高效率

四、跳频机制深入分析

4.1 信道选择算法

4.1.1 CSA #1算法

  • 传统算法\(f_{n+1} = (f_n + Hop) \mod 37\)
  • 适用于BLE 4.0-4.1版本

4.1.2 CSA #2算法

  • 增强算法:BLE 4.2+版本支持
  • ChSel字段:在CONNECT_IND的LL Data中指定
  • 位分配:
    • Bit 0-4:Hop Increment(5位)
    • Bit 5:ChSel(1位)
    • Bit 6-7:保留位

4.2 实际跳频观察

  • 信道映射(ChM):连接时评估信道质量,避开干扰信道
  • 自适应跳频:根据无线环境动态选择最佳信道
  • 版本兼容:高版本主机与低版本从机连接时的算法协商

五、加密通信抓包分析

5.1 nRF Sniffer环境搭建

5.1.1 硬件配置

  • nRF52840抓包器模式切换
  • 强制重启功能用于异常恢复
  • 串口监听配对码交换过程

5.1.2 软件配置

  • Wireshark插件安装
  • nRF Sniffer驱动配置
  • 解密密钥配置流程

5.2 加密通信流程

  1. 配对过程:手机端输入配对码
  2. 密钥交换:LTK(长期密钥)生成与交换
  3. 加密启动:使用AES-CCM算法加密数据
  4. 数据解密:Wireshark使用配对码解密捕获的数据

六、L2CAP与ATT协议分析

6.1 逻辑链路控制与适配协议(L2CAP)

  • 信道复用:在单个链路上支持多个逻辑信道
  • 数据分段与重组:处理大于27字节的应用数据

6.2 属性协议(ATT)

  • 属性句柄:0x002A读取到的"Hello World"数据
  • 读写操作:典型的ATT数据交换模式
  • 订阅机制:稳定的数据推送机制

七、实践注意事项

7.1 常见问题排查

  • 版本兼容性:蓝牙4.2与5.x版本的功能差异
  • 信道干扰:2.4GHz频段的Wi-Fi同频干扰
  • 数据完整性:CRC校验失败的数据包分析

7.2 分析技巧

  • 时间线分析:观察连接事件的时序关系
  • 协议版本识别:通过LL-OPCODE判断设备能力
  • 异常检测:数据长度异常、协议违规等特殊情况处理

本教学文档基于实际的BLE空口抓包分析,涵盖了从硬件配置到协议分析的完整流程,重点突出了实际操作中的关键技术和常见问题的解决方案。

 全屏