实施AirDrop协议

23

我对在iPad或Windows电脑等设备上实现AirDrop客户端非常感兴趣。请问有没有人能指导我如何在Python或C中实现AirDrop协议?非常感激您提供的任何帮助。先行谢过。


相关:https://dev59.com/TG435IYBdhLWcg3wxDL_ - Dan D.
这里是一个开源项目,旨在实现AirDrop功能(尽管我没有在我的笔记本电脑上运行它)。GitHub链接:https://github.com/seemoo-lab/opendrop - Vlad Frolov
1个回答

60

为了让你或任何试图进行AirDrop逆向工程和实现的人受益,这里是我找到的内容以及你需要开始的工作:

有两个步骤需要完成,可以独立完成或并行完成。

  1. 逆向分析创建和命名物理 WLAN ad-hoc 网络的方法。

要做到这一点,请从http://istumbler.net/获取 iStumbler 并尝试查看 Airdrop 运行时是否出现了另一个 Ad-hoc 网络。我简要尝试过,好像有一个未加密的 Ad-hoc 802.11b 网络,其名称以 "H" 开头。(但是我可能错了,你可以自己尝试一下。)尝试查找Airdrop用于命名或识别网络的模式。从多台 Mac 上尝试进行此操作。

  1. 逆向分析协议。

一旦客户端加入 WiFi 网络,Airdrop 将使用 Bonjour 检测其他客户端。

首先,按照http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/所述,在终端中运行以下命令,使一切正常(不需要隐藏的 Ad-hoc 网络):

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

然后重新启动 Finder。

从这里获取 Bonjour Browser:tildesoft.com

当启动Airdrop时,您会发现您的Mac正在广告服务“_airdrop._tcp”。它还发布了主机的各种IP地址和端口(每次在Finder中打开Airdrop时都会创建一个新的端口),以及计算机的名称、两个键“ehash”和“phash”以及一个键“flags”,其值为1。您需要查看这两个哈希值是如何生成的以及它们是否必需。可能是必需的。尝试使用其中一个可用的Bonjour库在第二台计算机上发布自己的数据,看看它们是否出现在Airdrop(在Finder中)。

我发现每个客户端公开的TCP服务都使用SSL连接。服务器证书似乎与您的Apple ID相关联。您可以在Keychain中找到证书。服务器还请求客户端证书。这可能只是来自另一台计算机的相同Apple ID证书。您需要对此进行实验。

我不知道该SSL连接内部使用的协议,并且当前没有访问第二台Mac的权限进行调查。您需要MITM连接以找出(尝试Charles和Wireshark)。无论如何,它将用于传输用户图标以及协商传输,并可能还用于移动实际数据。

我认为,即使最终被限制为具有Apple ID的用户,一个开放的实现也将大有益处-毕竟它们是免费的。

祝你好运!


非常感谢。这些是入门的好建议。我已经通过Bonjour浏览器进行了监控,但在那之后放弃了。 - petschekr
谢谢你提供有帮助的答案,我也对此很感兴趣。 - Dale
我真的很希望有人能够解释一下在创建临时网络之前发生的蓝牙握手过程。 - carlossless
1
这里是一个开源倡议,旨在实现AirDrop(尽管我无法在我的笔记本电脑上运行它)。 - Vlad Frolov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接