首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现AirDrop协议

实现AirDrop协议
EN

Stack Overflow用户
提问于 2012-05-22 06:17:59
回答 1查看 14.6K关注 0票数 23

我对在iPad或Windows计算机等设备上将AirDrop实现为客户端很感兴趣。有没有人能告诉我用Python或C实现AirDrop协议的正确方向?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 19:23:59

为了您或任何想要反向工程和实现Airdrop的人的利益,以下是我的发现和您必须开始做的事情:

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

以创建物理无线局域网ad-hoc网络的方式命名为

要做到这一点,从这里获取iStumbler http://istumbler.net/,并尝试在airdrop运行时查看是否出现额外的ad-hoc网络。我曾短暂尝试过,似乎有一种未加密的即席802.11b网络,其名称以"H“开头。(但我可能错了,你自己试试吧。)尝试查找Airdrop用来命名或识别网络的模式。试着从多台Mac电脑中找到这一点。

  1. Reverse-engineer

的协议

一旦客户加入了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的用户-毕竟他们是免费的。

祝好运!

票数 59
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10693411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档