{
  "added_at": "2026-10-30",
  "additional_evidence_urls": [
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/setup.py",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/opendrop/config.py",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/opendrop/client.py",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/opendrop/server.py",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/.github/workflows/testpackage.yml",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/tests/test_server.py",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/CITATION.cff",
    "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/LICENSE",
    "https://pypi.org/project/opendrop/0.13.0/",
    "https://www.usenix.org/conference/usenixsecurity19/presentation/stute"
  ],
  "category": "reconstruction-cases",
  "description_en": "Python command-line reimplementation of Apple's AirDrop protocol from SEEMOO Lab's reverse-engineering research. It finds receivers via _airdrop._tcp DNS-SD, sends binary-plist /Discover and /Ask requests over HTTPS and uploads gzip-compressed CPIO archives to exchange files with iOS and macOS. It is not affiliated with Apple.",
  "description_zh": "基于 SEEMOO 实验室逆向研究、用 Python 编写的 Apple AirDrop 协议命令行重新实现。它通过 _airdrop._tcp DNS-SD 发现接收方，经 HTTPS 发送二进制 plist 格式的 /Discover 和 /Ask 请求，并上传 gzip 压缩的 CPIO 归档，与 iOS 和 macOS 设备互传文件。它与 Apple 无关联。",
  "entry_url": "https://awesomerea.org/resources/opendrop-airdrop-reimplementation-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/opendrop-airdrop-reimplementation-case/",
  "evidence_url": "https://github.com/seemoo-lab/opendrop/blob/11fe7ba7861093b302bc0637e8cb10adf2d29337/README.md",
  "group": "cases",
  "id": "opendrop-airdrop-reimplementation-case",
  "json_url": "https://awesomerea.org/resources/opendrop-airdrop-reimplementation-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/opendrop-airdrop-reimplementation-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/opendrop-airdrop-reimplementation-case/index.md",
  "name": "OpenDrop: an open reimplementation of Apple AirDrop",
  "name_zh": "OpenDrop：Apple AirDrop 的开源重新实现",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README calls OpenDrop experimental output of the Open Wireless Link reverse-engineering effort that lacks some AirDrop features and may break with future AirDrop versions, and says Apple neither affiliates with nor endorses it. The latest release is 0.13.0 (PyPI, 2021-04-29); the reviewed master commit of 2026-08-17 adds only a citation file and link edits since.",
    "AirDrop runs only over Apple Wireless Direct Link, so OpenDrop is supported on macOS or on Linux with an open AWDL implementation such as SEEMOO's OWL; the default interface is awdl0. It needs Python 3.6+ (classifiers list 3.6–3.9), a current libarchive (Homebrew's on macOS), the openssl command and the packages in setup.py, including zeroconf and libarchive-c.",
    "By default it creates its own self-signed key and certificate. Receivers in the default contacts-only mode need AirDrop keys, a certificate and an Apple ID validation record from the user's own Mac, which README says come from a separate SEEMOO extractor; the repository ships only Apple's public root CA certificate.",
    "README lists known gaps: no Bluetooth Low Energy trigger, so Apple receivers may stay undiscovered; no peer authentication (neither TLS certificate chains nor validation records are checked) and automatic acceptance of every incoming file; and one file per transfer, with links sent but not received. CI runs black, flake8 and pytest on Python 3.6–3.9; its two tests only start the browser and server on loopback.",
    "GPL-3.0. README points to the authors' USENIX Security 2019 AWDL paper and 2021 PrivateDrop paper for protocol details; AirDrop and AWDL remain Apple's protocols."
  ],
  "requirements_zh": [
    "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 的协议。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/seemoo-lab/opendrop",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
