首页
社区
课程
招聘
[原创]Apple Find My 网络原理浅析
发表于: 2026-7-11 09:57 3021

[原创]Apple Find My 网络原理浅析

2026-7-11 09:57
3021

seemoo-lab/openhaystack:构建自己的 AirTag
一个通过 Apple「查找」网络追踪个人蓝牙设备的开源框架。

MatthewKuKanich/FindMyFlipper:将 Flipper 接入 Apple Find My

biemster/FindMy:查询 Apple Find My 网络

下面以 MatthewKuKanich/FindMyFlipper 项目为例,说明设备如何接入 Apple Find My 网络。

使用 ECC 算法中的 SECP224R1 椭圆曲线参数生成公私钥。

广播包中传输的核心内容是公钥,但并不是直接将完整公钥放入广播数据,而是将公钥拆分到以下两个位置:

首先取公钥的前 6 字节作为地址:

BLE 随机静态地址要求地址最高两位必须为 11,因此需要执行按位或操作。

这样会覆盖公钥第一个字节原本的最高两位,所以需要在后续广播报文中单独保存这两个比特。

项目中使用的广播报文模板如下:

这是一条 GAP(Generic Access Profile,通用访问配置协议)广播数据,其中 AD Type 为 Manufacturer Specific Data,即厂商自定义数据。

各字段含义如下:

这里容易产生一个误区:

Tag 设备不会直接获取自己的 GPS 位置。

Tag 只负责周期性发送 BLE 广播。附近接收到广播的 Apple 设备会使用自身的定位能力获取位置,并代替 Tag 上传位置报告。

因此,最终查询到的位置,本质上是上传报告的 Apple 设备在扫描到 Tag 时所在的位置。

设备需要构造一个 GAP 不可连接广播,并持续发送 Find My 格式的 Manufacturer Specific Data。

如果使用 nRF Connect 扫描广播,需要注意:

附近的 iPhone、iPad 或 Mac 扫描到广播后,会执行以下操作:

位置报告会与 Advertisement Key,也就是广播公钥的哈希值相关联。

相关项目会向以下接口发起请求:

请求时需要携带对应的认证信息和查询参数,具体实现可以参考相关项目。

需要注意:

Apple 只允许通过认证的 Apple 用户请求相关接口,并且正常使用 Find My 网络通常需要 Apple 设备环境。

部分第三方实现可能依赖 Apple 设备生成的 Anisette Data 或兼容环境。

此外,用于认证的 Apple ID 通常需要曾经在真实 Apple 设备上完成过登录和验证。仅模拟 Anisette Data,不一定能够正常通过所有认证流程。

使用第三方或共享 Apple ID 存在账号安全、隐私泄露和封禁风险,不建议用于正式环境。

Apple 返回的位置报告经过加密,需要使用生成 Tag 身份时保存的私钥进行解密。

解密后可以得到位置数据,例如:

处理经纬度时还需要注意地图坐标系差异。

不同地图服务可能使用不同坐标系,例如:

如果直接将坐标绘制到坐标系不匹配的地图上,位置可能出现明显偏移。

为了降低 AirTag 被用于未经授权追踪的风险,Apple 提供了多种反追踪机制。

以下触发条件和时间可能随系统版本变化,部分细节需要进一步验证。

当 AirTag 与所有者设备分离一段时间后,AirTag 可能会自动发出提示音,以提醒附近人员存在未知追踪设备。

具体触发时间暂不明确,并可能随固件或系统策略变化。

为了防止 AirTag 被用于追踪, AirTag 采取了如下机制(来源于网络, 待验证)

索引 数据 含义
0 1e 长度字段,表示其后还有 30 字节
1 ff BLE AD Type:Manufacturer Specific Data
2-3 4c 00 Apple Company ID:0x004C,以小端序表示
4 12 Find My / Offline Finding 类型
5 19 长度字段,表示其后还有 25 字节
6 00 state 字段;项目中用于更新电量状态,但 Apple 私有协议未公开该字节的完整定义
7-28 key[6:28] 公钥剩余的 22 字节
29 key[0] 的最高 2 位 保存构造随机静态地址时被覆盖的两个比特
30 00 hint 字段
addr = bytearray(key[:6])
addr[0] |= 0b11000000
1e ff 4c 00 12 19 00 [22 bytes key data] [2 bits hint] 00
fc0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4j5i4c8W2N6$3q4&6i4K6u0W2K9h3y4D9L8%4g2V1i4K6u0W2j5$3!0E0i4K6u0r3j5h3y4K6L8Y4y4W2M7Y4k6A6j5$3g2Q4x3V1k6X3k6i4c8U0K9l9`.`.
生成 SECP224R1 公私钥
        ↓
公钥作为 Advertisement Key
        ↓
将公钥拆分到 BLE MAC 地址和广播 Payload
        ↓
Tag 持续发送不可连接 BLE 广播
        ↓
附近 Apple 设备扫描到广播
        ↓
Apple 设备获取自身位置
        ↓
位置报告加密后上传至 Apple
        ↓
所有者从 Apple 服务拉取加密报告
        ↓
使用 Tag 私钥解密
        ↓
获得经纬度等位置信息

传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

收藏
免费 4
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回