我有兴趣将AirDrop作为客户端在iPad或Windows计算机等设备上实施。任何人都可以指出我在Python或C中实现AirDrop协议的正确方向。任何有关这方面的帮助将不胜感激。提前谢谢。
答案 0 :(得分:55)
为了您或任何试图进行逆向工程和实施Airdrop的人的利益,我发现了以及开始时您需要做的事情:
涉及两个步骤,可以单独或并行完成。
要做到这一点,请从此处获取iStumbler http://istumbler.net/并尝试查看空投正在运行时是否会显示其他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网络的情况下使用:
默认写com.apple.NetworkBrowser BrowseAllInterfaces 1
然后重新启动Finder。
从这里获取Bonjour浏览器:tildesoft.com
启动Airdrop时,您会发现您的mac广告服务“_airdrop._tcp”。它还会发布主机和端口的各种IP地址(每次在Finder中打开Airdrop时都会创建一个新的地址),你的mac正在监听它。它还发布了计算机的名称以及两个键“ehash”和“phash”以及一个值为1的键“标志”。您必须查看如何生成这两个哈希值以及是否需要这些哈希值。可能他们是。尝试使用其中一个可用的Bonjour库在第二台计算机上发布您自己的数据,看看它们是否出现在Airdrop中(在Finder中)。
我发现每个客户端公开的TCP服务都使用SSL连接。服务器证书似乎与您的Apple ID相关联。您可以在钥匙串中找到证书。服务器还请求客户端证书。这可能与其他计算机上的Apple ID证书相同。你将不得不尝试这个。
我不知道在SSL连接中使用了什么协议,并且无法访问当前要调查的第二台Mac。你将不得不MITM连接找出(尝试查尔斯和Wireshark)。在任何情况下,它都将用于传输用户图标以及协商传输,还可能用于移动实际数据。
我认为开放实现这一点会带来很大的好处,即使它最终只限于拥有Apple ID的用户 - 毕竟它们是免费的。
祝你好运!