我需要在我的外围设备上有一个硬编码的密码引脚(例如"123456"),这样android手机就必须在配对时输入这段代码。。
我使用的是ubuntu 18.04,bluez 5.48和TI BLE4.0 + wifi芯片。
目前,我能够使用堆栈提供的所有其他方法(noinputoutput、Keyboardonly、displayonly和keyboarddisplay)建立配对。
我的外围设备在生产中没有显示和键盘,因此计划使用存储在.文件中的唯一键。
我尝试过修改简单的代理代码以返回一个固定的密钥.我还尝试调整bt代理代码以传递一个密码文件.但是所有这些方法都不能使用,因为堆栈正在创建一个随机密钥,而不是接受我的静态硬编码密钥 :(
我可以在网上看到几十个类似的问题,但没有一个问题的答案是正确的。我以前做过很少的其他BLE芯片,并达到了同样的要求(cc2650等与他们的控制器芯片和栈),但我不能用布卢兹堆栈。
我听说旧堆栈有从文件中读取引脚的功能,但是在新堆栈中如何实现?
我希望以下几点是强制性的: 1)我必须禁用hci0 sspmode 2)我需要蓝牙守护进程服务才能运行3)我需要一个代理来配对
,请告诉我,如果有谁和布卢兹一样的话.
谢谢!
发布于 2019-12-11 09:15:59
蓝牙标准规定,每次尝试时,密码应该是随机的。这有一个很好的理由:如果重复使用密码(至少对于LE安全连接),协议的安全属性就会中断。所以你应该坚持“只工作”的方法。如果需要身份验证,请在应用程序层中使用PAKE算法。
有关更长的描述,请参见https://devzone.nordicsemi.com/f/nordic-q-a/35856/questions-about-lesc-mitm-and-passkey/138216#138216。
https://stackoverflow.com/questions/59280473
复制相似问题