自制 AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有 iPhone

146 天前
 lovelyelfpop

苹果的 AirTag 很贵,虽然某强北有平价代替品,但是仍需要苹果设备才能绑定,才能查看位置。不支持安卓/鸿蒙/PC ,也不支持集成到 Home Assistant 中。

AirTag 的原理

每个 AirTag 都会发送一个蓝牙信号,其可以被临近的苹果设备( iPhone 、iPad 、MAC 等)检测到,这些苹果设备会将这些 AirTag 的位置上报到苹果服务器。这个网络就是 Find My 网络。

国外有人逆向了 AirTag 机制 (github 项目 seemoo-lab/openhaystack) 可以让一些蓝牙设备,比如 ESP32 、树莓派、甚至带蓝牙适配器的 Linux ,模拟发出 FindMy 蓝牙广播。

这样制作出的定位标签,不需要苹果手机绑定,支持安卓/鸿蒙/PC/Home Assistant 查看标签的位置。

制作教程

我在 gitee 上建了一个项目 https://gitee.com/lovelyelfpop/macless-haystack 整合了 github 上一些内容,并做了如下一些事情: 1 、中文翻译 主要翻译的 github 项目 dchristl/macless-haystack 2 、安卓 app 适配国情 界面汉化,并替换为高德地图和定位 3 、硬件准备和刷机方法详细说明 4 、Home Assistant 集成说明

支持 安卓(有app),iOS/鸿蒙/PC等其他系统(用浏览器访问web 网站) 查看定位标签的位置(下面有截图)。 注意:虽然查看标签的位置不需要苹果手机,但是部署服务时需要有 AppleID 账号(需要在苹果手机上注册,可以找朋友借用注册一个。苹果网站上注册的不行)。 另外,标签上报位置仍然依赖苹果的 FindMy 网络,要求标签附近有苹果设备,因此,人少的地方比如农村不适合使用 AirTag/华强北平替/自己制作的定位标签。

下面是我制作的一些成品定位标签

安卓 App 界面

Web 网站界面

Home Assistant 集成截图

5271 次点击
所在节点    分享创造
38 条回复
ZhLTE
146 天前
@huguadao 不得被苹果告死吗
imyip
146 天前
关键是 黄鱼搜蓝牙信标 可以买到很便宜的 nrf51822
xuromky
146 天前
成品多少钱一个,我要买
65r4Zgm364TDg652
146 天前
@ZhLTE 平多多一搜一大把的东西,原理不重要,关键就是要品牌要好玩😄
undefinedsymbol
146 天前
不错不错,star 来一个
koast
146 天前
主要问题是首次绑定生成的那个密钥不好导出,导出之后应该是和那华强北平替一样用的吧。毕竟 airtag 是绑定在账号上的,那个协商的密钥肯定也是可以从苹果服务器登陆账号获取的吧,不然新设备登录老账号都要重新绑定一遍 airtag 并且导致老设备的绑定失效听起来挺离谱的。 @lovelyelfpop @whathappen
koast
146 天前
苹果设计的这个协议很那啥的点在于信标的 mac 地址也是轮换密钥的一部分(和 generate_key.py 生成的那个主密钥不一样),导致要蹭它这个网络,必须得支持更改 mac 地址可以,这就使一些有意思的应用场景用不了。比如给安卓机写一个内核模块加载上,让它定时更改下蓝牙地址发下广播帧之类的。
lovelyelfpop
146 天前
@xuromky 我黄鱼有上架几个自己做的,搜索“自制定位标签”
MacsedProtoss
146 天前
白嫖苹果的定位服务器?那这个是不是其实苹果是有封禁渠道的?
& 既然是到苹果服务器意味着这些设备都会是同一个 Apple ID ?虽然没绑定… 但是既然数据在苹果服务器那么必须得有个 ID 才能去取吧?
lovelyelfpop
145 天前
@MacsedProtoss 自己部署后台服务,使用自己注册的 AppleID 。如果苹果能封这个机制,那就得给以往发售的所有 AirTag 更新固件(显然不可能)。因为是从 AirTag 逆向过来的。
wanwaneryide
145 天前
@huguadao #19 pdd 就有的,苹果用的大概也就 20 左右吧,如果是安卓用的一个大概在 60 左右的样子,我买了一个放小电驴上,还行,定位误差有个三五十米左右
lovelyelfpop
145 天前
@wanwaneryide 没有 UWB 就是这样,误差大概就是蓝牙的广播范围
lovelyelfpop
121 天前
教程已更新,部署后台服务不再需要魔法了
avrillavigne
92 天前
很强
followad
13 天前
这个小东西在哪买啊老哥
lovelyelfpop
12 天前
@followad 我在咸鱼鱼有上架几款自己做的,搜索“自制定位标签”,用户名是 lovelyelfpop
LonelyTravel
5 天前
airtag 的原理我是明白了,自作的 tag 模拟 findmy 广播也能懂,但是自作的 tag 还不需要苹果手机和账号绑定是如何实现能不需要苹果手机也能查看 tag 的位置的呢?还能知道这个 tag 就是我自己的 tag
lovelyelfpop
2 天前
@LonelyTravel 在后台服务器那边登录了 AppleID 。
其实从苹果那边获取位置报告的 API 接口,任何 AppleID 都能去请求,只要你有合法的密钥即可。
DIY 的 tag 内置了若干公钥(其实还有另一部分:私钥。这个要自己保存好不要泄露)。
每次请求位置报告,都是用公钥去获取其对应的位置报告。
取到的位置报告是加了密的,需要用私钥去解密得到经纬度明文

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1113814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX