我对在iPad或Windows电脑等设备上实现AirDrop客户端非常感兴趣。请问有没有人能指导我如何在Python或C中实现AirDrop协议?非常感激您提供的任何帮助。先行谢过。
为了让你或任何试图进行AirDrop逆向工程和实现的人受益,这里是我找到的内容以及你需要开始的工作:
有两个步骤需要完成,可以独立完成或并行完成。
要做到这一点,请从http://istumbler.net/获取 iStumbler 并尝试查看 Airdrop 运行时是否出现了另一个 Ad-hoc 网络。我简要尝试过,好像有一个未加密的 Ad-hoc 802.11b 网络,其名称以 "H" 开头。(但是我可能错了,你可以自己尝试一下。)尝试查找Airdrop用于命名或识别网络的模式。从多台 Mac 上尝试进行此操作。
一旦客户端加入 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的用户,一个开放的实现也将大有益处-毕竟它们是免费的。
祝你好运!