【问题标题】:Implementing the AirDrop protocol [closed]实施 AirDrop 协议 [关闭]
【发布时间】:2012-05-28 10:26:44
【问题描述】:

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

【问题讨论】:

标签: python c wifi bonjour adhoc


【解决方案1】:

为了您或任何尝试对 Airdrop 进行逆向工程和实施 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 的用户——毕竟他们是免费的。

祝你好运!

【讨论】:

  • 非常感谢。入门的好技巧。我使用 Bonjour 浏览器进行了监控,但之后就放弃了。
  • 感谢您的帮助,我也对此感兴趣
  • 我真的很高兴有人能解释在创建 ad-hoc 网络之前发生的蓝牙握手过程。
  • Here 是实现 AirDrop 的开源计划(不过,I couldn't get it running on my laptop
猜你喜欢
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多