1

当 Apple 的 Remote 应用程序尝试连接到本地网络(使用 WiFi)上的 Mac(运行 iTunes)时,用户需要输入 iPhone 提供的密码作为安全措施。这种方法已被许多其他应用程序(例如,Rowmote、Pastebot...)采用。是否有提供这种工作方式的 API?

假设 Bonjour 正在运行,iPhone 如何在不解析 Mac 发布的 NSNetService 的情况下检查 Mac 上输入的密码是否正确?或者 iPhone 是否解析 Mac 正在发布的 NSNetService 并等待确认密码,然后再处理可能通过 NSNetService 发送的任何其他数据包(密码以外的数据包)。

我有一个解决我的问题的方法,但我想知道是否有一个我忽略的 API 提供了现成的解决方案。

欢迎建议和指点。

提前致谢,

巴特

4

1 回答 1

0

我不相信苹果为此提供了 API。我只是使用 Bonjour API 来打开两台设备之间的连接,然后让其中一台随机创建一个 4 位密码并询问另一台设备。另一台设备显示一个 UI 要求用户输入密码,然后将其发送回并等待答案。如果它们匹配,则设备会存储彼此的标识符,以便在下次连接时跳过此过程。

编辑:感谢 tc 指出这个实现并不完全安全。我现在让一台设备创建一个唯一的随机密码,并将其发送到另一台设备,然后存储密码的 SHA1 哈希以供将来参考。然后,另一台设备存储密码并在连接进行身份验证时将其发回。用户执行一次数字代码是为了让设备知道他们将来应该相互信任,但现在为了让逆向工程师连接到设备,他们必须知道设备的标识符和密码有效的连接设备。(或者他们必须同时访问这两个设备并执行数字代码的事情;显然,没有办法阻止任何人这样做)。

于 2010-08-11T17:21:31.047 回答