OpenDrop:用Python实现的开源苹果AirDrop工具

OpenDrop 是一个命令行工具,用 Python 实现了苹果 AirDrop 协议,支持在设备间通过 Wi-Fi 共享文件,包括与苹果设备互通。

什么是 OpenDrop?

OpenDrop 是一个开源命令行工具,用 Python 实现了苹果 AirDrop 协议。它的突出特点是协议级兼容苹果 AirDrop,这意味着你可以用它直接与运行 iOS 和 macOS 的苹果设备通过 Wi-Fi 共享文件。这是通过逆向工程专有的 AirDrop 协议实现的,使其成为开发者、安全研究人员以及任何希望理解或与苹果文件共享生态系统交互而不受苹果硬件限制的人的宝贵工具。

OpenDrop 的重要性

AirDrop 是苹果生态系统中内置的便捷、零配置的文件共享功能。然而,它是闭源的,并且与苹果的硬件和软件紧密耦合。OpenDrop 通过提供可在 Linux 和 macOS 上运行的便携式跨平台实现打破了这一障碍。这对于以下场景特别有用:

  • 安全研究:理解 AirDrop 协议、其安全属性和潜在漏洞。
  • 跨平台文件共享:从 Linux 机器向 iPhone 或 Mac 共享文件,无需第三方服务或云上传。
  • 自动化:将类似 AirDrop 的功能集成到脚本和自动化工作流中。

工作原理

OpenDrop 依赖两项关键技术:

  1. 苹果无线直连链路 (AWDL):AirDrop 仅在 AWDL 上运行,这是苹果设备用于点对点通信的专有 Wi-Fi 链路层。OpenDrop 在 macOS 上原生支持,在 Linux 上则通过 AWDL 的开源实现(如 OWL)支持。

  2. Python 和 libarchive:该工具使用 Python(>=3.6)编写,并依赖 libarchive 处理文件归档。在 macOS 上,你可能需要通过 Homebrew 安装更新版本的 libarchive

brew install libarchive

OpenDrop 会自动设置 DYLD_LIBRARY_PATH 以使用 Homebrew 版本。在 Linux 上,系统的 libarchive 通常就足够了。

安装

通过 pip 安装 OpenDrop 非常简单:

pip3 install opendrop

要获取最新的开发版本,请克隆仓库并安装:

git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop

使用方法

发送文件

发送文件分为两步:首先发现附近的设备,然后发送。

  1. 发现接收方
$ opendrop find
正在查找接收方。按 Ctrl+C 停止...
找到索引 0 ID eccb2f2dcfe7 名称 John 的 iPhone
找到索引 1 ID e63138ac6ba8 名称 Jane 的 MacBook Pro
  1. 发送文件
$ opendrop send -r 0 -f /path/to/some/file
请求接收方接受...
接收方已接受
正在上传文件...
上传成功

你也可以使用设备 ID 或名称代替索引。OpenDrop 会按顺序尝试匹配:索引、ID、名称。

发送网页链接

从版本 0.13 开始,OpenDrop 支持发送 URL。在苹果设备上接收时,链接会直接在浏览器中打开:

$ opendrop send -r 0 -f https://owlink.org --url

接收文件

接收更简单。使用 receive 命令自动接受所有传入文件。文件保存在当前目录:

$ opendrop receive

当前限制

OpenDrop 是一个研究项目,存在一些已知限制:

  • 蓝牙低功耗触发:苹果设备仅在收到自定义蓝牙低功耗广播后才会启动其 AWDL 接口和 AirDrop 服务器。这意味着即使苹果设备设置为“所有人”模式,也可能无法被发现。
  • 无对等认证:OpenDrop 不验证 TLS 证书是否由苹果根证书签名,也不验证 Apple ID 记录。由于缺少连接状态,它还会自动接受所有传入文件。
  • 单文件发送:与苹果 AirDrop 不同,OpenDrop 不支持一次发送多个文件。

幕后:研究背景

OpenDrop 由达姆施塔特工业大学的 Seemoo 实验室 开发,是开放无线链路项目的一部分。该团队发表了多篇学术论文,详细介绍了他们的逆向工程工作:

  • PrivateDrop:一种保护隐私的 AirDrop 认证方案(USENIX Security '21)。
  • A Billion Open Interfaces:通过 AWDL 对 iOS 和 macOS 的攻击研究(USENIX Security '19)。

这些论文深入揭示了 AirDrop 协议的安全和隐私属性,使 OpenDrop 不仅是一个工具,更是进一步研究的基础。

结论

OpenDrop 是一个卓越的开源项目,使更多人能够使用苹果的 AirDrop 协议。虽然它存在一些限制,但对于开发者、安全研究人员以及任何需要跨平台文件共享而不依赖云服务的人来说,它是一个极好的工具。其命令行界面使其易于集成到脚本和自动化工作流中,而开源特性也欢迎贡献者解决其当前的不足。

来源

seemoo-lab/opendrop:用 Python 编写的开源苹果 AirDrop 实现