23

我有兴趣在 iPad 或 Windows 计算机等设备上将 AirDrop 实现为客户端。谁能指出我在 Python 或 C 中实现 AirDrop 协议的正确方向。对此的任何帮助将不胜感激。提前致谢。

4

1 回答 1

59

为了您或任何将尝试逆向工程和实施 Airdrop 的人的利益,以下是我发现的内容以及您必须做的事情才能开始:

涉及两个步骤,它们可以独立或并行完成。

  1. 对物理 WLAN ad-hoc 网络的创建和命名方式进行逆向工程

为此,请从此处http://istumbler.net/获取 iStumbler,并尝试查看空投运行时是否出现了额外的 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 网络的情况下运行:

默认写入 com.apple.NetworkBrowser BrowseAllInterfaces 1

然后重新启动 Finder。

从这里获取 Bonjour 浏览器:tildesoft.com

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

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

我不知道该 SSL 连接中使用的是什么协议,并且目前无法访问第二台 Mac 进行调查。您必须通过 MITM 来找出连接(试试 Charles 和 Wireshark)。在任何情况下,它将用于传输用户图标以及协商传输以及可能还用于移动实际数据。

我认为对此的开放实施将大有裨益,即使最终结果仅限于拥有 Apple ID 的用户——毕竟他们是免费的。

祝你好运!

于 2012-08-03T11:23:58.973 回答