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相關的問題

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