返回

文章详情

劫持PS5的RTMP流

Hacker News2026年9月28日 15:35

分享屏幕的长路。内容 1. 问题 2. 远程播放 3. PS5流媒体工作原理 4. 找到合适的主机名 5. DNS技巧 6. 接收流媒体 7. 观看它 索尼逐步限制了你可以使用PS5硬件做的事情。流媒体就是一个很好的例子:主机提供了一个方便的“广播”按钮,但一旦你想做任何超出索尼支持的少数服务的事情,就会变得非常麻烦。第三方蓝牙设备也是同样的故事!索尼将无线堆栈锁定在自己的外设上,因此其他品牌的耳机或控制器根本无法配对 :/ 问题 我经常和朋友在Discord上进行游戏直播,他们看我玩,但PS5不支持向Discord分享屏幕。明显的解决办法是使用采集卡——将HDMI输出连接到采集卡,然后输入到我的Mac上的OBS,再从那里流媒体。但好的采集卡并不便宜,我不想仅仅为此花超过100美元。 远程播放 远程播放在我这还算有效。我可以将PS5连接到我的MacBook,将Mac的屏幕分享给Discord,然后从那里玩。问题是你需要将所有东西都连接到远程播放设备:控制器、耳机等等。我偶尔也会遇到输入延迟,流媒体质量完全由PS5控制。你无法真正配置任何东西。我不想每次想流媒体时都改变我的物理设置。 PS5流媒体工作原理 PS5默认支持向YouTube和Twitch进行流媒体,前提是你已登录这些帐户。用于此的协议是RTMP(实时消息传输协议),通常用于实时音频/视频流媒体。因此,当你开始广播时,PS5大致会做以下操作:如果我们可以让我们的设备充当Twitch并接收该RTMP流呢?这就是这个想法。PS5并没有硬编码Twitch的IP,它每次都通过DNS查找。如果我们控制DNS返回的内容,我们就控制了流媒体去向。 找到合适的主机名 明显的第一步是直接伪造ingest.twitch.tv。那是PS5在你点击广播时解析的主机名,所以将其指向Mac应该可以吧?并不完全是。ingest.twitch.tv:443实际上是一个发现端点,而不是RTMP服务器本身。PS5向其发送HTTPS请求,询问:“我应该使用哪个区域的流媒体服务器?”Twitch回应类似ap-southeast-1.prod.fi.contribute.live-video.net的内容。然后,PS5将实际流媒体推送到那里。伪造该主机名遇到了另一个问题:实际的Twitch流媒体使用RTMPS(在443端口上通过TLS的RTMP),而PS5会验证证书是否与受信任的CA匹配。自签名证书无法使用,并且在PS5上无法安装自定义CA。我接着尝试了YouTube作为解决方法。YouTube的RTMP流媒体使用普通RTMP在1935端口上,没有TLS,因此流媒体正常通过。但是,PS5在大约60秒后停止了广播,因为它定期检查YouTube的API,以确认流媒体实际上是实时的。由于我们截获了它,YouTube根本没有看到它,因此API什么都没返回,PS5放弃了。 实际解决办法来自在广播时查看DNS日志:sudo tail -f /tmp/dnsmasq.log # 9月22日 23:20:28 dnsmasq: query[A] ingest.global-contribute.live-video.net来自192.168.8.171 # 9月22日 23:20:28 dnsmasq: reply aps30.contribute.live-video.net是35.55.13.0 PS5正在解析ingest.global-contribute.live-video.net,它链路到aps30.contribute.live-video.net。这是实际的RTMP服务器。伪造contribute.live-video.net覆盖所有子域并将实际流媒体重定向到Mac而没有任何证书问题。 DNS技巧 该设置有两个主要部分:dnsmasq和nginx-rtmp。我制作了一个小的macOS菜单栏应用程序,将两者打包在一起并进行管理。我在Mac上运行dnsmasq,并将其配置为将Twitch的流媒体域解析为我Mac的局域网地址:server = 1.1.1.1 server = 8.8.8.8 # 将Twitch流媒体流量重定向到Mac address = /contribute.live-video.net/192.168.8.175 address = /ingest.global-contribute.live-video.net/192.168.8.175 address = /live.twitch.tv/192.168.8.175 address = /live-sin.twitch.tv/192.168.8.175 address = /live-nrt.twitch.tv/192.168.8.175 address = /live-syd.twitch.tv/192.168.8.175 address = /live-fra.twitch.tv/192.168.8.175 address = /live-ams.twitch.tv/192.168.8.175 address = /live-lhr.twitch.tv/192.168.8.175 address = /live-jfk.twitch.tv/192.168.8.175 address = /live-lax.twitch.tv/192.168.8.175 address = /live-sea.twitch.tv/192.168.8.175 log-queries log-facility = /tmp/dnsmasq.log no-hosts listen-address = 0.0.0.0 192.168.8.175是我Mac的IP。当PS5向DNS请求其中一个Twitch端点时,dnsmasq返回我的Mac的IP。PS5以为它连接到了Twitch。最后一步是将PS5指向这个DNS服务器。我有一台运行OpenWRT的GL.iNet路由器,因此我将其配置为专门为PS5的DHCP分配我Mac的IP作为DNS服务器。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡