iOS将CFUUID转换为MAC地址

时间:2011-12-29 22:37:22

标签: ios5 core-bluetooth

我知道CFUUID是根据MAC地址和其他一些东西生成的。那么有没有从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

由于

3 个答案:

答案 0 :(得分:1)

好吧,正如你可能从对你的问题的评论中学到的,答案显然是:不。 (实际上)不可能获得生成特定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 :(得分:1)

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

答案 2 :(得分:0)

有一种方法可以获取ios设备的mac地址。但仅适用于ios8及更高版本。没有私人api。https://github.com/Baoge2012/MacAddressLibDemo