一个开放的苹果空投实现
opendrop的Python项目详细描述
opendrop:一个开源的空投实现
opendrop是一个命令行工具,允许在设备之间直接通过Wi-Fi共享文件。它的独特之处在于,它与苹果Airdrop协议兼容,允许与运行iOS和MacOS的苹果设备共享文件。 目前(而且可能在可预见的将来),OpenDrop只支持发送到每个人都能发现的苹果设备,因为默认的"仅联系人"模式需要苹果签名的证书。
免责声明
opendrop是一个实验性的软件,是open wireless link项目逆向工程的结果。 因此,它不支持空投的所有功能,或者可能与未来的空投版本不兼容。 OpenDrop不隶属于苹果公司或由苹果公司认可。使用此代码的风险由您自行承担。
要求
为了实现与苹果AirDrop的兼容性,OpenDrop需要目标平台支持特定的Wi-Fi链路层。 此外,它还需要python>;=3.6以及几个库。
苹果无线直连。 由于AirDrop只在Apple Wireless Direct Link(AWDL)上运行,所以OpenDrop仅在运行 awdl的一个开放的重新实现,例如owlowl
库。
opendrop依赖于当前版本的openssl和libarchive。
MacOS附带了这两个版本的较旧版本,因此您需要安装较新版本,例如,通过自制。
在任何情况下,您都需要相应地设置两个环境变量libarchive
和libcrypto
。
例如,使用brew
安装库:
brew install libarchive openssl@1.1
然后设置环境变量:
exportLIBARCHIVE=/usr/local/opt/libarchive/lib/libarchive.dylib exportLIBCRYPTO=/usr/local/opt/openssl@1.1/lib/libcrypto.dylib
Linux发行版应该附带更多的最新版本,因此这是不必要的。
安装
python包的安装使用pip3
:
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 enter to stop ...
Found index 0 ID eccb2f2dcfe7 name John’s iPhone
Found index 1 ID e63138ac6ba8 name Jane’s MacBook Pro
然后,您可以使用发送文件
$ opendrop send -r 0 -f /path/to/some/file
Asking receiver to accept ...
Receiver accepted
Uploading file ...
Uploading has been successful
您也可以使用id
或名称,而不是
索引
。
opendrop将尝试按以下顺序解释输入:(1)索引
,(2)id
,(3)名称
,如果未找到匹配项,则将失败。
接收文件
接收要容易得多。只需使用receive
命令。OpenDrop将自动接受所有传入文件,并将收到的文件放入当前目录。
$ opendrop receive
当前限制/待办事项
opendrop是一个研究项目的结果,因此有几个局限性(下面是非详尽的列表)。我没有能力自己解决这些问题,但如果有人想帮助我,我很乐意提供帮助。
通过蓝牙低能耗触发MacOS/iOS接收器。只有在通过蓝牙LE(SE)接收到自定义广告后,苹果设备才会启动其AWDL接口和空投服务器详情请用数码纸)。这意味着,即使每个人都能发现苹果的空投接收器,也无法发现它们。
发送方/接收方身份验证和连接状态。目前,没有与苹果的AirDrop中相同的对等身份验证,特别是,(1)OpenDrop没有验证TLS证书是否由苹果的根签署,以及(2)苹果ID验证记录是否正确(见U详细信息请参阅Senix Paper)。此外,opendrop会自动接受由于缺少连接状态而收到的任何文件。
发送多个文件。Apple AirDrop支持一次发送多个文件,OpenDrop不支持(需要向存档添加更多文件、修改HTTP/ASK请求等)。
相关论文
- 斯图特、纳兰、马里奥托、海因里希、克里奇曼、努比尔和霍利克。面向Eve和Mallory的10亿个开放接口:MITM、DOS和通过苹果无线直连跟踪对iOS和MacOS的攻击。第28届Usenix安全研讨会(Usenix Security'19),2019年8月14日至16日,美国加利福尼亚州圣克拉拉市。链接
作者
许可证
opendrop是在gnu通用公共许可v3.0下获得许可的。
我们使用的是根据GNU Lesser General Public License v2.1授权的python zeroconf
包的修改版本(基本上添加了基本的IPv6和AWDL支持)。
两个许可证都位于许可证
文件中。