ble pairing空中包分析

ble 抓取空中包的工具有两种,这里使用更加广泛的ellisys 工具(同时支持ble 和br/edr蓝牙分析)为例,说明ble
配对过程在空中包的体现流程。
平常工作中,对细致的知识点可能并没有做过全面的统计,由于负责产品线单一,常常仅关注某一个部分的内容,说到底还是蓝牙协议知识不够扎实。

Advertise 广播包

在配对之初,service 端需要从host 配置广播包参数,将连接必要的参数传递给controller,通过广播的形式,发送给周围的设备。

广播包种类:

• a connectable and scannable undirected event
• a connectable undirected event
• a connectable directed event
• a non-connectable and non-scannable undirected event
• a non-connectable and non-scannable directed event
• a scannable undirected event
• a scannable directed event

广播根据是否可以被扫描到,是否可以被连接,是否定向大致可以分为7种。
以remote control与TV配对过程为例
在这里插入图片描述
在这里插入图片描述

  • 在初次配对过程中,发送的广播包类型为connectable undirected adv
  • ble 有40个信道,其中3个primarily changle 用于发送adv,当前index=38
  • 信号强度RSSI为-73.5db
  • 使用的是1M带宽
  • 广播包携带的local地址是random(resolvable,如果对端支持RPA,可以被解析)7a:7d:39:9e:b6:f2
  • 单次广播包持续时间296us,总共连续发送了三次广播包

广播包携带数据

通过HCI log 能够很直观的解析出广播包的数据格式
在这里插入图片描述
在这里插入图片描述
根据广播包格式,能够解析出广播包携带的数据,以上述hci log 为例:
00:connectable undirect
00:piblic address
7c 4b 22 7f c7 f0 : bt address
1f: 数据总长length 31

  • 以上是所有广播包元素的公共信息
  • 每个独立的元素格式: 元素长度(固定1个字节) + 类型(固定一个字节)+数据(可变) ; 其中的关系式:元素长度=类型+数据
  • 所以每个独立元素所占空间为 元素长度+1
  • 以上述为例,总长31=2+3+5+6+10+ 元素个数(总共5个元素)
  • 广播包携带的总共长度,不得超过ADV PDU发送的最大长度

通过 空中包的 payload 也能解析出对应的信息
前6个字节为地址信息,后31个字节为元素信息:

2+3+3+19+元素个数(4) = 31
在这里插入图片描述
在这里插入图片描述

Scan Request/Scan response

当server 端发送connectable undirecte 广播包,
如果client 是atctive scan 模式,client接受到广播包之后会回复一个scan request
scan request 中最核心的信息是client 地址和server 地址信息
在这里插入图片描述
在这里插入图片描述

  • 有收到scan request之后,server 必须回复scan response, 携带自己的地址信息。
  • 另外需要特别注意,scan response中也可以携带 adv 元素信息,如果在connectable undirected adv
    中,信息太长,一次性携带不完,可以在scan response 中增加元素信息。
  • active scan 模式必须要connectable undirected adv和scan response 两包数据完整,将所有的adv 元素单元重组整合之后,一次性上报给app 层。
  • 信息过长,还有一种extend adv,能够最多携带512字节的数据

connect 发起连接

  • client 端根据接受到的广播包内容,会过滤掉一些不关心设备,如果发现有目标设备被扫描到,会发起连接请求。
  • HCI command LE create connect 对应 air log Connection Indication

在这里插入图片描述
LE create connection 命令解析如下:

  • 自己client 发起端的蓝牙地址
  • 目标server 段的蓝牙地址
  • 链接参数 interval, page scan 窗口直接的间隔,数值越小间隔越小,功耗越大,链接越快,跟ic 的能力有关
  • latency : 连接 状态上报的延迟, 如果非0,可能会造成连接时间过长,用户体验较差,一般在配对过程中此参数都设置为零
  • server端如果pagescan 成功,会回复给client connect complete, 并且校准时钟

L2CAP 层信息交换及安全加密

  • 如果adv 中没有携带name,一般会有name request
  • 后续llcp feature request和response,start Encryption Request
  • 加密完成后,双方会持有对方的link key
  • 如果air log 有记录到双方设备的配对过程,也会存有link key,ATT数据才能够被解析。
  • 在air log 中需要输入link key 才能够解析ATT 数据
  • SMP结束完成后,会有一次update command, 一般smp
    使用的是7.5ms的interval进行加密过程中的信息交换,目的是快速完成加密过程,update 之后interval
    会被调整到默认值,一般会大于7.5ms。
    在这里插入图片描述
    加密结束之后,配对过程基本结束。

本案例主要是以RC 与TV配对的过程为例,说明该flow在air log中的体现。
air log作为蓝牙分析非常重要的log,一般确认:
1.广播包是否有正确发送出来
2.Request是否有正确被相应
3. performance相关的问题

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章