我很好奇我是否可以编写可以控制 Apple TV 的程序,特别是运行 tvOS 9.1.1 的 Apple TV 第四代,就像 Apple 的 iOS 远程应用程序一样。我想向它发送用于在四个基本方向上导航、选择屏幕上的项目、向上导航堆栈的命令——这基本上就是苹果远程应用程序可以做的事情。
有人对其使用的协议进行过逆向工程吗?到目前为止,粗略的谷歌搜索仅得出了有关上一代 Apple TV 和 DAAP 协议的过时结果,这看起来与我想要的不同。
我使用 iPhone 捕获了流量tcpdump
并用WireShark进行分析。 Remote 应用程序通过端口 3689 向 Apple TV 发出正常 HTTP 请求。
应用程序的工作流程由四个 HTTP 请求组成:
-
/server-info
用于获取有关 Apple TV 的信息。它响应一个Apple 专有的 DAAP 响应(数字音频访问协议) https://en.wikipedia.org/wiki/Digital_Audio_Access_Protocol提供一些有关设备的标签,例如显示名称。
-
/login
当应用程序显示“正在连接 Apple TV...”消息时,在连接期间执行。它使用有关登录状态的 DAAP 进行响应。
- 这就是瓶颈。
/home-share-verify
验证应用程序和 Apple TV 之间的连接。此调用需要一个Client-DAAP-Validation
具有长未知字符串值的标头。根据 Wikipedia 的说法,这似乎是由 iTunes 7.0+ 中引入的经过验证的源之间的证书交换生成的哈希值,并且从未进行过逆向工程。
-
/ctrl-int/1/{controlpromptupdate|controlpromptentry|playstatusupdate}
似乎是对输入按钮进行的调用。
其他一些次要调用会在中间触发(例如 Bonjour 服务更新或/databases
call).
Here https://eldino.wordpress.com/2007/06/25/enit-daap-dawhat-daap-dache-cosa/ and here https://askubuntu.com/questions/124352/can-i-connect-to-itunes-music-shares-using-amarok你可以找到更多信息。希望这有助于您了解这个简单(但受保护)的应用程序的工作原理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)