案例

OpenDrop:Apple AirDrop 的开源重新实现

基于 SEEMOO 实验室逆向研究、用 Python 编写的 Apple AirDrop 协议命令行重新实现。它通过 _airdrop._tcp DNS-SD 发现接收方,经 HTTPS 发送二进制 plist 格式的 /Discover 和 /Ask 请求,并上传 gzip 压缩的 CPIO 归档,与 iOS 和 macOS 设备互传文件。它与 Apple 无关联。

使用条件与局限

  • README 称 OpenDrop 是 Open Wireless Link 逆向工程工作的实验性成果,缺少部分 AirDrop 功能,也可能与未来的 AirDrop 版本不兼容,并声明其与 Apple 无关联、未获 Apple 认可。最新发行版为 0.13.0(PyPI,2021-04-29);所审阅的 master 提交(2026-08-17)此后只增加了引用文件并修改了链接。
  • AirDrop 只运行在 Apple Wireless Direct Link(AWDL)上,因此 OpenDrop 支持 macOS,或运行 SEEMOO 的 OWL 等开源 AWDL 实现的 Linux;默认网络接口为 awdl0。需要 Python 3.6+(分类标签列出 3.6–3.9)、较新的 libarchive(macOS 上用 Homebrew 版本)、openssl 命令,以及 setup.py 所列软件包,包括 zeroconf 和 libarchive-c。
  • 默认情况下,它会自行生成自签名密钥和证书。要向默认处于“仅限联系人”模式的接收方发送,需要来自使用者自己 Mac 的 AirDrop 密钥、证书和 Apple ID 验证记录,README 称这些由 SEEMOO 另一款提取工具获得;仓库只附带 Apple 公开的根 CA 证书。
  • README 列出已知缺口:没有蓝牙低功耗触发,因此 Apple 接收方可能无法被发现;没有对端认证(既不校验 TLS 证书链,也不校验验证记录),并会自动接受所有传入文件;每次只能发送一个文件,链接只能发送而不能接收。CI 在 Python 3.6–3.9 上运行 black、flake8 和 pytest;其两项测试只是在回环接口上启动浏览器与服务器组件。
  • 采用 GPL-3.0 许可。README 指向作者发表于 USENIX Security 2019 的 AWDL 论文和 2021 年的 PrivateDrop 论文以了解协议细节;AirDrop 和 AWDL 仍是 Apple 的协议。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
协议

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  2. setup.py GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  3. opendrop/config.py GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  4. opendrop/client.py GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  5. opendrop/server.py GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  6. .github/workflows/testpackage.yml GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  7. tests/test_server.py GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  8. CITATION.cff GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  9. LICENSE GitHub · seemoo-lab/opendrop · 修订 11fe7ba
  10. https://pypi.org/project/opendrop/0.13.0/
  11. https://www.usenix.org/conference/usenixsecurity19/presentation/stute

同分区更多条目:协议

协议分区全部 28 项资源协议案例(10)