在移动设备上检测隐藏/不可见的蓝牙设备

12

我有目标设备的蓝牙mac-id。然而,蓝牙处于隐藏/不可见模式。

两部手机都是Android(非root)。

我做了研究并且 * 知道 * 如果我知道mac-id,我可以(在大多数情况下)连接到一个设备,但是我只想扫描附近而不连接,也就是说,如果目标设备在蓝牙范围内而且我知道它的mac-id,我能否 * 只是 * 知道它是否在附近(或者用笼统的说法,为其扫描?)

1个回答

18

简短回答是不行,你无法发现无法被探测到的蓝牙设备。

不可被发现模式是制造商为了防止设备追踪等滥用而实施的安全措施。这使得标准的蓝牙适配器(如你的)完全无法确定一个隐形/不可发现的设备是否靠近。

然而,最近发现这种安全措施并不是最佳选择。 Michael Ossmann在此处介绍了Ubertooth的工作原理,这是一个能够检测到不可被发现设备的小型蓝牙适配器。你可以在here 找到对此内容很好的介绍,使用开源计划构建此dongle,甚至buy他的dongle。

编辑:

如果你首先知道蓝牙设备的完整MAC地址,则即使其处于不可被发现模式,也可以知道它是否周围存在。

技术方法是尝试进行页面请求,发送组成所寻找的蓝牙主机MAC标识符的所有6个字节。页面请求允许在知道其BT ADDR时连接到蓝牙从设备。虽然处于不可发现模式的设备不会响应查询扫描(设备发现意图),但它们会响应页面扫描,后者用于想要连接到先前已知设备的设备。
您可能可以使用Bluesniff来实现您的目的,这是一个安全的概念验证工具,允许您发现隐藏的设备。它可能支持页面扫描。
请注意,此内容仅供教育参考,我不鼓励在商业应用中使用此类做法。

我理解这一点。因此我的问题是,如果给定了mac-id,即用户以某种方式事先同意(或从Android列表的许可中知道)他自愿提供他的mac-id,那么可能会使用它。 - Fresh Prince
谢谢您的编辑!这似乎是我正在寻找的东西.. :) - Fresh Prince
有没有任何帮助,可以告诉我如何使用我拥有的MAC地址启动页面扫描?有没有Android API可以这样做?有没有隐藏的API? - Reaz Murshed
2
不,我真的不这么认为。从开发者的角度来看,Android中的蓝牙API非常高级,此外,Google和Apple倾向于采用一种模式,使得通过蓝牙进行设备跟踪对于开发应用程序的人来说变得困难。在阅读HCI(主机控制器接口)上的蓝牙规范时,我偶然发现了一个部分,其中说明蓝牙模块可以处理查询并过滤页面请求,而无需涉及主机设备。因此,您手机中的蓝牙芯片可能具有自己的逻辑来响应PAGE请求,而不需要依赖Android。 - Halim Qarroum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接