Case study

OpenDrop: an open reimplementation of Apple AirDrop

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.

Requirements & limits

  • 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.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Protocol

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

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

More in Protocols

All 28 entries in ProtocolsProtocols case studies (10)