有人对 Apple iOS Remote 应用程序用于通过 IP 控制 Apple TV 的协议进行逆向工程吗?

2024-06-18

我很好奇我是否可以编写可以控制 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(使用前将#替换为@)

有人对 Apple iOS Remote 应用程序用于通过 IP 控制 Apple TV 的协议进行逆向工程吗? 的相关文章

  • x86 OpCode 指令解码

    我一直在研究 x86 架构的软件开发人员手册 试图提高我的逆向工程技能 我知道该架构很复杂并且向后兼容前几代 随着新一代的出现 一些旧的文档部分被遗漏了 但令人不安的解释和误解之一是与此类似的说明 80 2 ib 因此 基于以下的说明80操
  • Xcode 10.3 中缺少模拟器[重复]

    这个问题在这里已经有答案了 更新到 Xcode 10 3 后 我发现我的一些模拟器丢失了 尝试从 窗口 gt 设备和模拟器 手动添加一个会产生错误 重新启动计算机对我有用
  • 您将如何对此进行逆向工程?

    我有一些代码位于 javascript 中的 php 文件的底部 它经历了很多奇怪的扭曲 比如将十六进制转换为 ascii 然后进行正则表达式替换 执行代码等等 有没有办法在它实际执行之前找出它正在执行的内容 代码在这里 http past
  • 如何使用 tvOS 打开另一个应用程序?

    Does UIApplication openURL work NSString iTunesLink http www youtube com watch v TFFkK2SmPg4 BOOL did UIApplication shar
  • 在剥离的 ELF 可执行文件中设置断点

    我有一个 ELF 32 位动态链接 剥离文件 我希望对其进行调试 尝试在某个地址设置断点时 出现一条消息 提示符号表未加载 我的问题是 当你说 ELF 文件是stripped究竟发生了什么 如何剥离 ELF 文件 是否可以以某种方式重建符号
  • 如何在Android模拟器上使用Xposed框架

    我正在尝试使用 API 17 但无法打开Xpose框架 http forum xda developers com showthread php t 1574401 确切的步骤是 启动模拟器 分区大小为 1024 adb install X
  • 在 SwiftUI (tvOS) 中获取按钮的 onFocusChange 回调

    The onFocusChange关闭于focusable onFocusChange 修饰符允许我在子视图聚焦时为父视图设置属性 如下所示 struct ContentView View State var text String var
  • JNZ 和 CMP 组装说明

    如果我错了请纠正我 这是我的理解JNZ and CMP JNZ 跳跃将会发生 如果Z标志不为零 1 CMP 如果两个值相等 则Z标志已设置 1 否则未设置 0 这是我正在看的 Flash 教程 它正在教授一个简单的 CrackMe 的解决方
  • 如何从 TVML 文本字段获取值?

    我正在尝试弄清楚如何使用 TVJS 从 TVML 中的文本字段获取值 但我还没有找到任何相关文档 而且我不想等待文档更新 实际上没有任何绑定到输入的模式 因为我确信除了登录服务之外这是很少使用的情况 我想我可以解析 Xml 但这看起来非常老
  • 在 TVML 应用程序中更改 XMLHttpRequest 的用户代理

    我正在使用 TVMLKit 开发 Apple TV 应用程序 我的应用程序的 JavaScript 代码尝试使用以下命令向服务器发送 HTTP 请求XMLHttpRequest 服务器需要特定的用户代理 所以我尝试了以下方法 var req
  • 将java代码编译为exe(例如使用Launch4Java)是否确保代码无法被逆向工程?

    经过我自己的实验 我确信 Java 代码混淆在防止逆向代码工程方面并不安全 因此 我转而使用 Launch4J 将我的核心 jar 文件之一捆绑到单个 EXE 文件中 jar 文件还包含主要的入口方法 这会再次保护代码逆向工程吗 如果计算机
  • 早期的BIOS怎么能使用CALL呢?

    我纯粹是出于爱好原因 试图理解 PC 中的一些低级代码 我为随机的旧千兆字节 MB 下载了一个过时的 BIOS ROM 映像 https www gigabyte com Motherboard GA 8I845GE775 G rev 10
  • 如何对加密算法进行逆向工程?

    我编写了一个以这种方式加密文本的应用程序 获取输入文本 反转文本 转换为十六进制 用密钥进行异或 Base64编码 现在 我自己没有做很多加密 编码 所以我的问题可能听起来很愚蠢 但是 假设我得到一个包含上述算法内容的文件 而我不知道这个算
  • 无法在 Apple Calendar 中绑定()套接字(dylib 注入)

    我正在尝试检查 iOS 8 1苹果日历 MobileCal app on Reveal http www revealapp com下列的本指南 http petersteinberger com blog 2013 how to insp
  • 用于将类文件转换为 Java 源代码的 Eclipse 插件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当源不可用时 是否有可用的 Eclipse 插件来反编译类文件 从 class 文件生成 java 源代码 类似于 Resharper 在
  • 如何从 JW Player 5.1 中提取 .flv 流?

    问题是我的互联网连接速度很慢 并且视频不像 YouTube 那样缓冲 因此我想知道是否可以提取 JW Player 中正在流式传输的 flv 文件的 url 并直接下载它 做了一些初步研究 我发现了以下信息 主要视频网址 http ijf1
  • 如何使用PowerShell脚本远程启动/停止IIS 6.0/7.0?

    我有两台服务器服务器 A 和服务器 B 我想使用 Powershell 脚本从服务器 B 远程停止服务器 A 最简单的方法之一就是使用命令行执行PsExec http www microsoft com technet sysinterna
  • PE 文件中的跳转存根

    最近我反汇编了一个DLL 用c c 编写 发现代码段内有很多 跳转存根 这些存根除了跳转到 DLL 内的函数之外什么也不做 eg jmp foo jmp foo2 为什么编译器 Visual studio 2012 在二进制文件中包含这些函
  • 如何使用 OllyDbg 绕过 IsDebuggerPresent?

    我真的不明白如何绕过 IsDebuggerPresent 我想我应该找到用于调试的寄存器 然后将其设置为 0 以欺骗 IsDebuggerPresent 但我不知道该怎么做 我尝试在谷歌上搜索 甚至尝试了一些解决方案 但它对我来说并没有真正
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w

随机推荐

  • 在 Angular 5 中使用 jquery 插件

    我正在尝试在 Angular 5 项目中使用以下日期选择器 但我不确定如何导入它 https bootstrap datepicker readthedocs io en latest index html https bootstrap
  • javaFX helloworld jar 无法在不同平台上运行

    我对 JavaFX 很陌生 不确定是否有人知道我做错了什么 这是场景 在win 7上 使用netbeans 8和jdk1 8 0 05创建了一个helloworld jar 在 win 7 上 java jar helloworld jar
  • 媒体查询跨帧泄漏

    这是一些 HTML The test html页面包含一些来自外部文件的 CSS 样式表有 media all and max width 600px body background color red 上面是简化的 但足以说明问题 两个页
  • 如何在 DB2 AS/400 中将小数字段转换为日期字段?

    我有一个 DECIMAL 字段 其中包含 AS400 格式的日期 1100614 我努力了 cast MYDATE as DATE 但我无法将 DECIMAL 转换为 DATE 而 DATE MYDATE 返回空值 如何将此字段转换为日期字
  • 如何在C#中使用默认浏览器打开带有锚点(#)的html文件

    我正在尝试在 C 中打开上下文帮助文件 当我没有指定锚点时 它工作得很好 Process Start C Help Help htm 但是当我指定锚点时 它不会打开 Process Start C Help Help htm Toc3420
  • 纯CSS代码,没有绝对定位

    我试图想出一个纯CSS代码 就像你在电视上看到的那样 仅not粘在屏幕底部 我已经找到了涉及 JS 的东西 但我正在努力避免 JS 我还发现了一些其他人创建的纯 CSS 代码 但这些的问题在于它们都使用position absolute 这
  • 使用 pandas/beautiful soup 抓取表数据(而不是慢的 Selenium?),BS 实现不起作用

    我正在尝试抓取该网站上的网络数据 而我能够访问数据的唯一方法是迭代表的行 将它们添加到列表中 然后将它们添加到 pandas 数据框 写入csv 然后单击下一页并重复该过程 每次搜索大约 50 页 我的程序执行 100 多个搜索 它非常慢
  • 从流中过滤/删除无效的 xml 字符

    首先 我无法更改 xml 的输出 它是由第三方生成的 他们在 xml 中插入无效字符 我得到了 xml 字节流表示形式的 InputStream 除了将流消耗到字符串中并对其进行处理之外 是否有一种更干净的方法来过滤掉有问题的字符 我找到了
  • 将 boost::iostreams::mapped_file_source 与 std::multimap 一起使用

    我有相当大量的数据需要分析 每个文件大约有 5gig 每个文件的格式如下 xxxxx yyyyy 键和值都可以重复 但键是按升序排列的 我正在尝试使用内存映射文件来实现此目的 然后找到所需的键并使用它们 这是我写的 if data file
  • 在.NET MVC中,有没有一种简单的方法来检查我是否在主页上?

    如果用户从主页登录 我需要采取特定的操作 在我的 LogOnModel 中 我有一个隐藏字段 Html Hidden returnUrl Request Url AbsoluteUri 在我的控制器中 我需要检查该值是否是主页 在下面的示例
  • Android Wear Preview 未连接到 Wear Emulator

    我正在尝试为 Google Wear 设置开发环境并遵循 Google 的指示 http developer android com training wearables apps creating html但一旦我设置了端口转发 adb
  • useState 以 `new` 关键字作为参数

    我正在构建一个单独的服务来处理复杂的事情 该服务是一个类 只是为了测试建议 我在一个内部模拟useState 重点是我忘记了一个console log在构造函数内部 并意识到类构造函数在组件重新渲染时被调用多次 这种行为不会导致意外的行为或
  • 基本 NASM 引导程序

    我最近一直在研究操作系统 启动过程和 NASM 在我的旅程中 我遇到了一段有用的引导代码 我部分理解并通过虚拟软盘对其进行了测试 我的基本问题是我不明白其中一些行的作用 我已经评论了我认为这些线条的作用 任何更正或确认将不胜感激 This
  • 如何使用 HTML5 在画布上绘制心电图监视器?

    我尝试使用canvas html5绘制心电图系统 几乎我即将完成我的波浪正在移动 但不是连续地重复 但我想绘制波浪是从左到右连续移动的 下面的链接是示例 Ex https www youtube com watch v wuwBfSpVEg
  • 确定所选电子邮件是来自收件箱还是已发送邮件

    我正在编程Outlook 插件并需要确定所选电子邮件是否来自Inbox or Sent Items这样当我将电子邮件保存到数据库中时 我可以使用文件夹 收件箱 或 已发送 来标记电子邮件 我知道我可以将文件夹名称与 收件箱 或 已发送邮件
  • vim中的折叠功能

    有没有什么方法或工具可以在 vim 中折叠功能 例如 Visual Studio 或 Eclipse Vim folding commands zf j creates a fold from the cursor down lines z
  • 更改 macOS 应用程序中打开窗口中的文档

    我正在为 macOS 编写一个基于文档的应用程序 我正在尝试编写一项功能来更改当前窗口中的活动文档 以便能够循环浏览文件夹中的下一个 上一个文档 就像使用图像浏览器应用程序一样 我应该调用什么命令来在当前窗口中打开不同的文档 文档表明 op
  • 尝试了解 ARM 二进制映像中的加载内存地址 (LMA) 和二进制文件偏移量

    我在一家ARM 皮质 M4 STM32F4xxxx 我试图了解二进制文件 elf and bin 在内存中构建并闪存 特别是关于内存位置 具体来说 我不明白的是LMA从实际的二进制文件偏移量进行 翻译 让我用一个例子来解释一下 我有一个 e
  • 当输入是 DataFrame 时,在seaborn中对箱线图进行分组

    我打算在一个图中绘制多个列pandas dataframe 全部按另一列分组 使用groupby inside seaborn boxplot 对于类似的问题 这里有一个很好的答案matplotlib matplotlib 分组箱线图 ht
  • 有人对 Apple iOS Remote 应用程序用于通过 IP 控制 Apple TV 的协议进行逆向工程吗?

    我很好奇我是否可以编写可以控制 Apple TV 的程序 特别是运行 tvOS 9 1 1 的 Apple TV 第四代 就像 Apple 的 iOS 远程应用程序一样 我想向它发送用于在四个基本方向上导航 选择屏幕上的项目 向上导航堆栈的