如何解密BLE空中包

在BLE开发及debug中,我们常常会需要抓空中包,但是很多时候会遇到抓到的包是加密的(常见带锁标识)。

那么该如何去解密这些data呢?

首先来看一下,数据加密的原因,这主要源于BLE对数据的隐私保护,会使用某种加密方式,通过link key来加密信道数据,以BT core spec4.2为例,该link key为Long term key(LTK)。所以为了解密数据,就需要知道该LTK。

常用的方式,是通过HCI  log来获取,当然,如果您有将该Key 写入过Flash或filesystem保存,也可以通过读出的方式打印出来。

举例:

一般,BLE中link key出现在SM的pairing过程(Phase 2)完成以后。首先可通过查找command:HCI_LE_Long_Term_Key_Request(Responder)或HCI_LE_Start_Encryption(Initiator),从其中的参数中找到long_term_key,将Value值倒序输出,即为Link key。

1)以just work配对方式为例,HCI log中,查找Long term key方式如下图示,找到key value为67e299ae:12bca990:f6bbeba9:eaac1eca


2)在Air sniffer log中,与之对应的link key为CA1EACEA:A9EBBBF6:90A9BC12:AE99E267,输入->验证,参考下图:



如此步骤后,就可以看到air data了。

当然,对于解密传统BT air包,是相似的原理。


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BLE空中sample是指在BLE通信中,发送的数据的示例。根据引用\[1\]中的描述,当协议栈的射频FIFO满时,会自动将其中的数据发送出去,并产生BLE_NUS_EVT_TX_RDY回调事件。在这个过程中,射频FIFO会重新入队新的数据。通过这种方式,可以在一个连接间隔内持续发送数据,直到下一个连接间隔。 为了提高吞吐率,可以在一个连接间隔中发送多个。根据引用\[2\]中的描述,可以通过在代码中做一些额外的配置来实现。具体的代码片段可以参考引用\[2\]中的示例。 为了避免数据丢失,可以在代码中添加一些判断条件。根据引用\[3\]中的描述,可以在发送数据后,通过判断ble_nus_data_send函数的返回值来确认数据是否成功发送到协议栈的缓冲区中。只有当返回值正确时,才将数据计入最终的数据吞吐率中。 综上所述,BLE空中sample是指在BLE通信中发送的数据的示例,通过一些配置和判断条件,可以实现在一个连接间隔内发送多个,并确保数据的正确传输。 #### 引用[.reference_title] - *1* *2* *3* [【Nordic】如何极致实现Nordic 蓝牙性能](https://blog.csdn.net/u014028690/article/details/104858688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值