2011-12-29 128 views
9

我知道CFUUID是由MAC地址和其他一些东西生成的。那么有没有办法从CFUUID获取MAC地址?iOS将CFUUID转换为MAC地址

我们有几个蓝牙设备,所有用户都知道是写在设备上的MAC地址的最后3个部分。所以我们想给用户和选择正确的设备。在iOS端,看起来就像我们所有的CFUUID。那么有没有办法将UUID转换回mac地址?

Or even better would be if there's a way to get a peripheral's MAC address directly instead of UUID, but doesn't seem like that's possible

感谢

+2

CFUUID不是从MAC生成的。你会如何得出这个结论?我很确定,获取MAC并通过HTTP或任何其他协议发送它更容易。 – Eimantas 2011-12-29 22:40:29

+0

我不是在谈论iPhone的UUID,而是在谈论Peripheral的UUID。我在线阅读,UUID是从MAC地址和当前时间的组合创建的。 – user1122025 2011-12-29 23:02:02

+0

你应该更清楚的是你在CoreBluetooth的背景下谈论CFUUID,甚至更具体地说CBPeripheral的背景下。奇怪的是,CBPeripherals有一个UUID属性,而不是一个地址属性,因为他们代表的蓝牙设备有一个地址而不是一个UUID。所以这是有道理的特定的UUID附加到CBPeripheral是基于蓝牙设备的地址,但我还没有看到任何确认。 – barrycburton 2012-01-14 00:16:52

回答

1

嗯,你可能已经从评论你的问题得知,答案显然是:NO。实际上不可能获得生成特定UUID的种子。假设实际上,生成您的UUID的算法确实使用了您的设备的MAC地址来生成它,我想您不能保证您使用的UUID生成器是这种情况,除非您有权访问UUID生成器代码或算法(UUID Version 1 probably?),它不是对你不透明的操作(立即击败uuid生成算法的目的)。

虽然当你说UUID的生成可能使用设备的MAC地址,其他组件如时间戳,哈希,UDID(iOS设备)等等时,你很清楚的是。事实上,MAC地址可能只是用于生成UUID的许多因素之一,因此如果您要花费大量计算能力来尝试将其解构为由同一系统生成的大型UUID样本条件相同;我们可能会谈论量子计算机浪费计算能力,试图在可观察的宇宙中探索尽可能多的粒子组合,这样你就可以得到一个MAC地址,如果你愿意,你也可以从蓝牙外设获得一个特性,并且偶然击败一开始就有UUID的目的。

另一方面,除了有人对你的问题提出了什么评论:你发现UUID如此无聊的原因,建立在前一段的想法之上,就是为了避免碰撞:生成不仅仅是来自那些由您的计算机生成,但是由每台设备生成的所有其他设备生成(为了验证请求,在数据库中创建字符串索引键或者识别服务和特性),以便您的酷服务或特性名为:

AAAAAAAA-BBBB-CCCC-DDDD-EEEEFFFF6666 

不会与另一个酷foo服务或具有相同UUID的特性混淆。

一般来说,如需更多信息,请查阅维基百科或核心蓝牙编程指南,组成开发者门户网站。它仍然处于NDA之下,因此您必须成为注册iOS开发人员并获得有效的开发人员程序凭据才能阅读。

1

我正在寻找一种方法来部署独立于平台的静态BLE设备配置。我感到气馁(苹果的UUID +/-没有意义,而且可以在大多数/所有其他平台上获得的MAC/BDADDR无法从CoreBluetooth访问)。幸运的是,我注意到“设备信息服务”配置文件(0x180A)包含一个“系统ID”属性(0x2A23),它对设备的唯一MAC/BDADDR地址进行编码。但是,我不知道BLE设备是否必须公开此服务。