索尼逐步收紧了 PS5 的硬件限制,限制了用户对主机功能的使用。一个值得注意的限制是:PS5 不支持分享到 Discord,而 Discord 已成为玩家直播游戏的常见平台。主机确实包含一个「广播」按钮,但仅支持少数索尼官方认可的服务。
RTMP 协议(Real-Time Messaging Protocol)常用于实时音视频直播。当用户在 PS5 上开始广播时,主机使用此协议将流发送到 YouTube 或 Twitch,前提是用户已登录这些账户。每次开始广播时,PS5 都会通过 DNS 解析相应的主机名。
一名开发者发现了一种将流重定向到任意目的地的技术。关键洞察来自观察 DNS 解析模式:PS5 解析 `ingest.global-contribute.live-video.net`,该域名最终指向 `aps30.contribute.live-video.net`——即实际的 RTMP 服务器。通过控制 DNS 响应,PS5 的流可以被重定向到个人设备。
该技术主要依赖两个组件:dnsmasq 和 nginx-rtmp。dnsmasq DNS 服务器被配置为将 Twitch 摄入域名解析为攻击者的 Mac 局域网 IP 地址。具体来说,`contribute.live-video.net` 及及其子域名(如 `ingest.global-contribute.live-video.net`)被指向 Mac 的 IP。当 PS5 查询这些端点的 DNS 时,dnsmasq 返回 Mac 的 IP 而非 Twitch 服务器。PS5 随后连接到 Mac,误以为它是 Twitch。
在接收端,监听 1935 端口的 nginx-rtmp 接收传入的 RTMP 流。流开始时触发 `on_publish` 回调,通知菜单栏应用显示 RTMP URL 以供复制。流以 1080p60 分辨率、H.264 视频和 AAC 立体声音频到达。
开发者没有使用 OBS,而是使用 mpv 的低延迟配置将共享窗口拉入 Discord。最终延迟保持在一秒以下,使该设置用于每周直播时出人意料地可靠。
YouTube 的变通方案遇到了另一个问题:PS5 会定期检查 YouTube API 以验证流是否在线。由于 YouTube 从未接收到流,该检查在约 60 秒后失败,广播停止。Twitch DNS 方法避免了这种特定的故障模式,因为流从未离开本地网络。
DNS 配置需要网络级设置。开发者使用了一台运行 OpenWRT 的 GL.iNet 路由器,配置为将 Mac 的 IP 作为 DNS 服务器专门提供给 PS5 的 DHCP 租约。一个名为「PS5」的 DHCP 选项 6 标签确保控制台在下次续租时获取自定义 DNS 服务器,无需在主机本身上进行手动 DNS 配置。
