我对在iPad或Windows计算机等设备上将AirDrop实现为客户端很感兴趣。有没有人能告诉我用Python或C实现AirDrop协议的正确方向?提前谢谢。
发布于 2012-08-03 19:23:59
为了您或任何想要反向工程和实现Airdrop的人的利益,以下是我的发现和您必须开始做的事情:
这里涉及到两个步骤,它们可以独立或并行完成。
以创建物理无线局域网ad-hoc网络的方式命名为
要做到这一点,从这里获取iStumbler http://istumbler.net/,并尝试在airdrop运行时查看是否出现额外的ad-hoc网络。我曾短暂尝试过,似乎有一种未加密的即席802.11b网络,其名称以"H“开头。(但我可能错了,你自己试试吧。)尝试查找Airdrop用来命名或识别网络的模式。试着从多台Mac电脑中找到这一点。
的协议
一旦客户加入了WiFi网络,空投就会检测到其他使用Bonjour的客户。
首先,如http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/所述,在您的终端中运行此命令,以便在没有隐藏的ad-hoc网络的情况下正常工作:
defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1
然后重新启动Finder。
从这里获取Bonjour浏览器: tildesoft.com
当启动Airdrop时,你会发现你的苹果电脑上有一个"_airdrop._tcp“服务的广告。它还会发布mac正在侦听的主机和端口的各种IP地址(每次在Finder中打开Airdrop时都会创建一个新的IP地址)。它还会发布计算机的名称以及两个密钥"ehash“和"phash”,以及一个值为1的密钥“flag”。您必须查看这两个散列是如何生成的,以及是否需要它们。很可能是这样。尝试使用可用的Bonjour库在另一台计算机上发布您自己的数据,并查看它们是否显示在Airdrop (在Finder中)中。
我发现每个客户端公开的TCP服务都在使用SSL连接。服务器证书似乎已链接到你的Apple ID。你可以在钥匙串中找到该证书。服务器也会请求客户端证书。这可能是来自另一台计算机的相同的Apple ID证书。你必须对此进行实验。
我不知道SSL连接中使用的是什么协议,目前也无法访问第二个Mac进行调查。您必须使用MITM连接才能找到答案(请尝试Charles和Wireshark)。在任何情况下,它都将用于传输用户图标以及协商传输,还可能用于移动实际数据。
我认为这一点的开放实现将会有很大的好处,即使它最终会被证明仅限于拥有Apple ID的用户-毕竟他们是免费的。
祝好运!
https://stackoverflow.com/questions/10693411
复制相似问题