我制作的应用程序允许我连接到蓝牙设备并列出所有服务和特性。但是,唯一认可的服务是“设备信息服务”,还有“未知服务”但它似乎没有传递我正在寻找的数据。我确信该设备工作正常,因为连接到设备的官方应用程序工作正常。可能是什么问题呢?我正在寻找的信息是否可能以未知服务传递并以某种方式加密?
答案 0 :(得分:2)
您的应用正确发现了这些服务,问题不在于此。问题是您希望该服务是通用服务,但它不是,它是特定于供应商的服务。
vendor specific
服务(特征)很容易识别:其UUID长度为128位。此外,nRF Connect等通用BLE应用无法解决此问题,原因很简单,因为它们特定而非泛型。
当公司销售实施通用服务的设备时,他们知道可以与多个应用程序一起使用,但他们也知道这些应用程序也可以正常工作对于竞争对手的其他设备。例如,您可以从几家公司购买心率带,并将其与智能手机上的多个健身应用程序一起使用。
当公司销售实施特定于供应商的服务的设备时,他们知道不能与其他应用程序一起使用而不是任何应用程序竞争对手将能够销售也适用于其应用的设备。
两种不同的策略,许多不同的目标。
基本上,设计您正在使用的设备的公司不希望您能够使用他们自己的应用程序之外的其他应用来访问设备中的数据。它是就这么简单。
现在您仍然可以对其服务进行逆向工程。使用嗅探器,将使用其应用程序时传输的数据与应用程序中实际显示的数据进行比较,并且您可能会找到一些逻辑,并且很难了解他们如何在服务中隐藏数据。然而,他们可能有一些条款声明你不应该反向设计这个或那个。
您可以在此处查看通用服务,但除了我所说的内容之外,您不会学到任何东西:BLE GATT Services