Bluez BLE信标上的设置密码

问题描述

我正在使用认的https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=dotnet-plat-ext-3.1在Linux机器(ubuntu 14.04)上的bluez5.52中运行BLE信标,并使用tools文件夹中提供的gatt-service来运行信标。以下是我用于设置信标的命令:

端子1:

./gatt-service

第2航站楼

sudo ./btmgmt
add-adv -u 180d -u 180f -d 080954657374204C45 1

我可以使用android中的BLE扫描器应用程序轻松地与信标连接和断开连接。 我想为信标设置一个密码,以便我是唯一可以连接到它的人。到目前为止,我一直无法在线找到任何有助于设置的资源。我对btmgmt和gatt-service代码有不错的了解。我正在寻找有关设置密码保护的bluez代码的哪一部分的指导。任何线索,伪代码或部分代码都会有很大帮助。

解决方法

Emil已经在评论中提到了配对和绑定。这绝对可以满足您的目的,因为您将能够控制谁可以连接到外围设备。 BLE特性可以在读取或写入之前要求连接的设备进行身份验证,如果该设备未与外围设备配对,则会导致“身份验证错误”。 Android应用程序可以根据所使用的配对方法显示配对弹出窗口来处理此错误。 这样就有可能在需要配对的人旁边拥有没有安全性的特征。

如果您仍然想要实现提到的密码安全之类的功能,则应查看“授权阅读”。 首先需要授权的特征会收到读取请求,您可以根据自己的要求允许或拒绝它。这意味着您可以通过向一个特征发送密码来授权自己,然后允许对另一个特征进行读取请求。如果您一次只接受一个连接,这将更加容易。