Opendrop是一种命令行工具,允许直接通过Wi-Fi在设备之间共享文件。它的独特功能是它与Apple Airdrop兼容协议,该协议允许与运行iOS和MACOS的Apple设备共享文件。当前(可能也可能在可预见的将来),Opendrop仅支持发送到每个人都可以发现的Apple设备,因为默认联系人仅需要苹果签名的证书。我们通过使用我们的钥匙链提取器使用MacOS提取的AirDrop凭据(键和证书)来支持仅接触触点的设备。
Opendrop是实验软件,是开放无线链接项目反向工程工作的结果。因此,它不支持Airdrop的所有功能,或者可能与未来的Airdrop版本不兼容。 Opendrop不隶属于Apple Inc.或认可。
为了获得与Apple Airdrop的兼容性,Opendrop需要目标平台来支持特定的Wi-Fi链路层。另外,它需要Python> = 3.6以及几个库。
苹果无线直接链接。由于AirDrop仅通过Apple Wireless Direct Link(AWDL)运行,因此Opendrop仅在MacOS或Linux系统上支持AWDL(例如OWL)的开放重新实现。
库。 Opendrop依赖于当前版本的Libarchive。 MacOS船上具有相当旧版本的船,因此您需要安装较新版本,例如,通过Homebrew:
brew install libarchive
OpenDrop自动设置DYLD_LIBRARY_PATH
以寻找自制版。如果您以不同的方式安装库,则可能需要自己更新变量。
Linux发行版应发货更多最新版本,因此这不是必要的。
使用pip3
的Python软件包的安装很简单:
pip3 install opendrop
您也可以首先克隆此存储库来安装当前开发版本,然后通过pip3
安装它:
git clone https://github.com/seemoo-lab/opendrop.git
pip3 install ./opendrop
我们简要说明如何使用opendrop
发送和接收文件。要查看所有命令行选项,请运行opendrop -h
。
发送文件通常是两步过程。您首先使用find
命令在接近度中发现设备。找到接收器后停止该过程。
$ opendrop find
Looking for receivers. Press Ctrl+C to stop ...
Found index 0 ID eccb2f2dcfe7 name John’s iPhone
Found index 1 ID e63138ac6ba8 name Jane’s MacBook Pro
send
,您可以使用
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
您还可以使用ID
或name
,而不是index
。 Opendrop将尝试以(1) index
,(2) ID
和(3) name
的顺序解释输入,如果找不到匹配,则失败。
发送网络链接。自v0.13以来,Opendrop支持发送Web链接,即,即URL,因此接收Apple设备将在接受后立即打开浏览器。 (请注意,OpenDrop接收器仍然仅支持接收常规文件。)
$ opendrop send -r 0 -f https://owlink.org --url
接收要容易得多。只需使用receive
命令即可。 Opendrop将自动接受所有传入文件,并将接收到的文件放在当前目录中。
$ opendrop receive
Opendrop是研究项目的结果,因此有几个局限性(下面的非排便列表)。我本人没有能力在他们身上工作,但是如果其他人想接受他们,很乐意提供帮助。
通过蓝牙低能触发MACOS/iOS接收器。 Apple设备仅在通过蓝牙LE收到自定义广告后才启动其AWDL接口和Airdrop Server(有关详细信息,请参见Usenix Paper)。这意味着,即使每个人都可以发现苹果空调接收器,也可能不会发现它们。
发件人/接收器身份验证和连接状态。目前,没有像Apple的Airdrop中那样具有同行身份验证,(1)Opendrop并未验证TLS证书是否由Apple的root签署,并且(2)(2)Apple ID验证记录正确(有关详细信息,请参见Usenix Paper) 。此外,OpenDrop自动接受由于缺少连接状态而收到的任何文件。
发送多个文件。 Apple AirDrop支持一次发送多个文件,Opendrop不会(将需要在存档中添加更多文件,修改HTTP /ask请求等)。
Opendrop已获得GNU通用公共许可证v3.0的许可。