关于LL_FEATURE_REQ和LL_FEATURE_RSP中使用的LE加密字段的说明

时间:2017-07-07 14:18:23

标签: android encryption bluetooth bluetooth-lowenergy

我用我的Ubertooth One嗅到了我的Android手机和我的BLE设备之间的一些BLE数据包,我想澄清某个特定字段及其含义。

建立连接后,会发送LL_FEATURE_REQ,并将LE Encryption字段的值设置为0false)。

根据官方文件(蓝牙规范版本4.2 [第6卷,第B部分],4.6特征支持):

  

"当此信息从Controller发送到主机时,设置为0的位表示   此Controller中不支持链路层功能;有点设置为1   表示此Controller支持链路层功能。

     

当此信息从Controller发送到对等控制器时,位设置为0   表示控制器不应使用链路层功能;一点点   设置为1表示控制器可以使用链路层功能。   "

同样在LL_FEATURE_RSP LL Encryption字段设置为0false)。

因此,根据此消息序列图(蓝牙规范版本4.2 [第6卷,D部分]),在发送LL_FEATURE_REQ之前,主设备(我的Android手机),首先读取支持的功能,然后发送请求。 enter image description here

这是否意味着我的Android设备不支持通信加密?

修改

下面是Wireshark输出(左边是我的Android手机的蓝牙HCI监听日志,右边是我的Ubertooth捕获的包裹):

enter image description here

2 个答案:

答案 0 :(得分:1)

如果LL_FEATURE_REQ包含0表示LE加密(位置0)的位置,则该设备的控制器不支持加密。 LL_FEATURE_RSP包含主服务器的按位AND和从服务器支持的功能。

但Android设备不支持加密听起来很奇怪......

答案 1 :(得分:0)

在最后一次Wireshark更新(在Windows上使用版本2.4.0)之后,这个问题似乎已得到解决。 现在LL加密字段正确设置为1(true)。这是相同的数据包: enter image description here