You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04(Bluez)BLE安全连接调试密钥/模式启用咨询

如何在Ubuntu 22.04/树莓派上启用BLE安全连接调试模式

问题背景

测试环境:

  • 主设备:搭载BLE5.0适配器的Ubuntu 22.04
  • 从设备:运行BLE应用的自定义Bluetooth 5.2设备
  • 嗅探设备:刷入sniffer_nrf52840dongle_nrf52840_4.1.1固件的nRF52840适配器,搭配Wireshark V3.4.4
  • 目标:使用蓝牙核心规范(Vol 3, Part H, 2.3.5.6节)定义的调试Diffie-Hellman密钥对进行LE安全连接配对,实现数据包解密嗅探

已执行操作后遇到的问题:通过btmgmt debug-keys on启用调试密钥并完成配对,但Wireshark捕获的数据包仍处于加密状态,无法解密;手动通过hcitool cmd设置DH密钥后问题依旧。

正确启用调试模式的步骤

1. 确认适配器支持调试密钥

首先检查蓝牙控制器是否支持debug-keys特性,不支持的适配器无法启用调试模式:

sudo btmgmt info

需确保输出的supported settings中包含debug-keys,否则需更换兼容的BLE 5.0+适配器(如nRF系列)。

2. 重置蓝牙控制器(关键步骤)

启用调试密钥前重置蓝牙,清除旧配置干扰:

sudo btmgmt power off
sudo btmgmt reset
sudo btmgmt power on

3. 启用安全连接与调试密钥

确保同时开启secure-conn和debug-keys:

sudo btmgmt secure-conn on
sudo btmgmt debug-keys on

再次验证状态,确认current settings中同时包含这两项:

sudo btmgmt info

4. 清除旧配对记录

若之前与从设备配对过,旧绑定信息会优先使用,导致调试密钥不生效:

sudo bluetoothctl
[bluetooth]# remove DC:A6:32:11:22:44  # 替换为你的从设备地址
[bluetooth]# exit

5. 配置Wireshark解密并重新配对

  1. 启动Wireshark,选择nRF52840嗅探接口,设置捕获过滤规则为btle
  2. 开启BLE解密:
    • 进入Edit > Preferences > Protocols > BTLE
    • 勾选Enable decryption
    • 在Decryption Keys中添加规范定义的调试DH密钥,格式为dh:<公钥>:<私钥>:
      • 调试公钥:E69D350E480103CCDBFDF4AC1191F4EFB9A5F9E9A7832C5E2CBE97F2D203B0208BD28915D08E1C742430ED8FC24563765C15525ABF9A32636DEB2A65499C80DC
      • 调试私钥:A7832C5E2CBE97F2D203B0208BD28915D08E1C742430ED8FC24563765C15525ABF9A32636DEB2A65499C80DCE69D350E480103CCDBFDF4AC1191F4EFB9A5F9E9
  3. 重新扫描配对:
sudo bluetoothctl
[bluetooth]# scan on
[bluetooth]# pair DC:A6:32:11:22:44

此时Wireshark应能自动解密LE安全连接的数据包。

6. 常见问题排查

  • 若仍无法解密:检查从设备是否也开启了调试模式(部分设备可能需要双方启用才能触发调试密钥流程)
  • 确认Wireshark密钥格式正确,必须以dh:开头
  • 检查嗅探设备是否完整捕获配对全过程,避免丢失密钥交换数据包

内容的提问来源于stack exchange,提问作者user1696265

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:37:39