一个开放的苹果空投实现

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附带了这两个版本的较旧版本,因此您需要安装较新版本,例如,通过自制。 在任何情况下,您都需要相应地设置两个环境变量libarchivelibcrypto。 例如,使用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支持)。 两个许可证都位于许可证文件中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?