嗅探具有接近 UUID 主要次要的 ibeacon 包

Posted

技术标签:

【中文标题】嗅探具有接近 UUID 主要次要的 ibeacon 包【英文标题】:sniff ibeacon package with proximity UUID major minor 【发布时间】:2015-10-20 20:19:19 【问题描述】:

我正在开发一个 ibeacon 应用程序,我担心其他人可能会嗅到我的应用程序的邻近 UUID。所以我做了一些研究,发现了这篇文章:http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html

它基本上像其他人一样声明苹果不允许你这样做。但后来我发现了一些类似这样的 mac 应用程序:https://github.com/liamnichols/iBeaconScanner

我做了一些测试,它确实可以显示 UUID。有什么方法可以阻止那些 mac 或 android 应用程序获取我的接近 UUID?

【问题讨论】:

【参考方案1】:

您提到的“CoreBluetooth 不允许您看到信标”博客文章专门针对 ios。在该平台上,除非您事先知道标识符,否则操作系统的公共 API 不允许您检测 iBeacons。

您引用的 iBeaconScanner 程序适用于 OSX,没有相同的限制。在 OSX 以及 Android、Linux、Windows 和其他平台上,您可以扫描信标并读取标识符,而无需预先知道它们。

我曾经使用Android Locate app 读取beacon identifiers at the Apple Store,然后用相同的标识符制作了一个信标,并能够在 iPhone 上弹出一条 Apple Store 的欢迎消息。

您无法阻止其他人这样做。您需要设计任何使用 iBeacon 技术的系统来考虑这种可能性。

【讨论】:

感谢您的详细解释。也就是说,对于 iBeacon,你不能这样做,那么使用 BLE 怎么样?例如,您可以定义自己的服务/特征和加密/解密?我的意思是,从技术上讲,您能否完成这项工作以防止任何人获得您的邻近 uuid? 是的,可以使用加密有效负载传输您自己的自定义 BLE 广告,该有效负载包含只有您知道如何解密的标识符。云台信标使用这样的系统。 谢谢大卫,你的回答真的很有帮助!如果我决定使用这种方式,那会比 iBeacon 更耗电吗?是否支持后台模式广告/接收? iOS 设备针对后台 iBeacon 检测进行了优化,1-2 秒的触发时间无可匹敌。使用替代系统时,您必然会牺牲检测速度。然而,iOS 的限制使任何基于 BLE 的系统的电池消耗保持在可接受的水平。 因此,由于任何基于 BLE 的系统的 iOS 限制,您所说的电池消耗不会成为问题,但是如果您不使用 Apple iBeacon 而是自己编写,您基本上会丢失Apple iBeacon 的 1-2 秒触发时间的优势是正确的吗?而且,iOS 设备仅针对后台 iBeacon 检测进行优化,而不针对其他自定义 BLE 系统进行优化是否正确?

以上是关于嗅探具有接近 UUID 主要次要的 ibeacon 包的主要内容,如果未能解决你的问题,请参考以下文章

iBeacon 约束接受多个主要/次要

检测具有不同主要和次要值的 iBeacon

iBeacon 设备扫描和检索次要、主要、uuid 参数

使用自定义 iOS 应用更改 iBeacon UUID(或主要/次要)?

使用 CLLocationManager 获取 iBeacon 邻近度更新

对于具有不同 UUID、major 和 minor 的多个 iBeacon,仅触发一次 didEnterRegion 事件