☰
PS5 WebKit Autoloader PC Host源码解析:零依赖Python脚本如何伪装成DNS+HTTPS服务器
2026/10/16 21:19:30 网站建设 项目流程

【免费下载链接】ps5-webkit-autoloader

An automated payload loader for exploited PS5 consoles

项目地址:https://gitcode.com/gh_mirrors/ps/ps5-webkit-autoloader
点击查看免费下载

在ps5-webkit-autoloader项目中,PC Host 是一个零依赖的 Python 3 脚本:它让你的电脑伪装成 DNS + HTTPS 服务器,把manuals.playstation.net劫持到本机,让尚未越狱的 PS5 通过"用户指南"页面完成 WebKit Autoloader 的一次性安装。全程只用 Python 标准库,无需pip install任何第三方包。

一、PC Host 是什么:把电脑变成 PS5 的"本地服务器"

常见的 WebKit 利用方式是把 PS5 的 DNS 指向别人托管在公网的服务器,服务器一旦宕机或跑路,整个环境就废了。PC Host 的思路完全相反——服务器就是你自己家局域网里的这台电脑。

它的三个核心组件:

组件端口作用
DNS 服务器UDP 53把伪装域名解析到本机 IP,其余域名一律NXDOMAIN,顺手屏蔽遥测
HTTPS 服务器TCP 443用自签名证书提供 Autoloader 前端页面与安装器 ELF
HTTP 服务器(可选)如 8080同样的内容走明文 HTTP,方便浏览器调试

实现全部集中在 pc-host/host.py 一个文件里,构建产物webkit-autoloader-host.py甚至把整个前端打进了脚本本身。

二、DNS 服务器源码解析:手工拼一个"假域名解析器"

DNS 协议并不复杂,host.py没有引入任何 DNS 库,而是用socketserver.ThreadingUDPServer加struct手工解析报文。

2.1 解析查询:逐字节读出域名

parse_query函数(host.py#L314-L347)先解出 12 字节头部里的查询 ID 和qdcount,然后按"长度字节 + 标签"的模式循环读出域名,直到遇到 0 结尾符:

qid, _flags, qdcount, _, _, _ = struct.unpack(">HHHHHH", data[:12])

遇到压缩指针(高位0xC0)或长度越界时直接放弃,保证解析器永远安全。

2.2 回答或拦截:一个开关决定域名命运

build_response(host.py#L350-L360)是"伪装"的核心。命中目标域名时,返回指向本机 IP 的 A 记录;其他域名则把标志位设为0x8183(QR + RD + RA + NXDOMAIN)并留空回答区——PS5 的其他联网请求会全部解析失败。

DNSHandler.handle(host.py#L400-L414)只做一次大小写不敏感的字符串比较:

if name == server.target.lower(): sock.sendto(build_response(qid, question_bytes, server.ip), self.client_address)

这就是全部的"欺骗"逻辑——简单到只有一行判断。

三、HTTPS 服务器与自签名证书:构建期与运行期两条路径

HTTPS 用的是ThreadingHTTPServer加ssl.SSLContext,关键只在证书从哪来。get_server_cert(host.py#L257-L277)实现了双通道策略:

  1. 构建期注入(默认):tools/build_host.py 在打包时用openssl req -x509 -newkey rsa:2048为manuals.playstation.net生成自签名证书,把 PEM 文本直接替换进脚本里的[[SSL_CERT_PLACEHOLDER]]占位符(build_host.py#L25-L34)。
  2. 运行期兜底:如果源码里证书为空(直接python3 host.py跑源码树),脚本会在每次运行时临时调用openssl现生成一对,写进临时文件加载后删除。

证书 CN 就是被劫持的域名,所以 PS5 浏览器访问"用户指南"时能顺利完成 TLS 握手。

四、前端内嵌:一个脚本如何"凭空"吐出整个网站

4.1 构建期:前端压缩成 base64 塞进源码

build_zip(build_host.py#L65-L133)把frontend/autoloader/与 pc-host/overrides/ 合并压缩(ZIP_DEFLATED,压缩等级 9),base64 编码后注入[[EMBEDDED_ZIP]]占位符。运行时get_embedded_zip把它解码成内存中的zipfile.ZipFile,整个前端从内存直接吐出,这就是"单文件可移植"的由来。

更妙的一步:构建时会把payloads/payload.elf替换为安装器 ELF(build_host.py#L93-L103)。虚拟路径保持不变,三条利用链的?autoload=请求无需任何改动——PC Host 场景下被自动加载的就是安装器本身。

4.2 运行期:三重来源的文件解析优先级

DualDirHandler._resolve_source(host.py#L475-L509)对每个请求按顺序查找:

  1. overrides 目录——放一个同路径文件即可热替换,不用动前端源码
  2. 内嵌 zip——构建后的脚本只认这一层,严格从内存服务
  3. base 目录(--base指定)——源码树开发时用

另有两条路径映射规则(host.py#L450-L473):

  • /document/en/ps5/...这类用户指南 URL 会被截成根路径下的相对路径;
  • /app/...(前端硬编码的缓存结构)映射回文档根。

五、命令行参数速查表

参数默认值说明
--targetmanuals.playstation.net要伪装的域名
--ip自动探测域名指向的本机 IP
--dns-port/--https-port53/443端口均可改(--no-dns/--no-https可关闭)
--http-port禁用附加明文 HTTP 端口,用于浏览器调试
--strict-host关仅响应Host:匹配--target的请求
--verbose关逐请求打印 DNS/HTTP 日志
--no-update-check关跳过启动时的 GitHub 更新检查

完整参数定义见 host.py#L578-L604,文档在 pc-host/README.md。

六、快速上手:两步跑通整个伪装服务

# 1. 源码方式(需要 openssl 与前端目录) python3 pc-host/host.py --base frontend/autoloader --http-port 8080 # 2. 或使用 make 构建出的单文件版本(推荐,纯标准库、纯内存服务) make host && python3 webkit-autoloader-host.py

⚠️ 提示:53/443 属于低端口。Linux 下需要sudo运行;Windows 下 DNS Client 服务可能占用 53 端口,脚本会给出--dns-port 1053这类换端口建议(见 _bind_hint)。

跑起来后按提示操作即可:

  1. PS5 网络设置里把 DNS 指向脚本打印出的本机 IP;
  2. 打开 PS5 的设置 → 用户指南,页面由你的 PC 接管;
  3. 终端出现[+] Installer served.提示后,安装完成即可把 DNS 改回去——否则 PS5 将无法上网。

七、关键文件导读

文件职责
pc-host/host.pyPC Host 主体:DNS/HTTPS/HTTP 三服务器 + 文件解析
tools/build_host.py构建单文件脚本:内嵌前端 zip、版本、自签名证书
pc-host/overrides/热替换文件目录
pc-host/README.mdPC Host 使用文档
ARCHITECTURE.md项目整体架构(含 PC Host 章节)

小结:PC Host 用约 800 行纯标准库代码,演示了"手工解析 DNS 报文 + 自签名 HTTPS + 内存 zip 服务"三个实用技巧。它把传统上依赖公网服务器的 WebKit 利用流程收进了你自己的局域网——安装完成后,PS5 的一切资源都来自本机缓存,彻底告别第三方 DNS 的单点故障。

【免费下载链接】ps5-webkit-autoloader

An automated payload loader for exploited PS5 consoles

项目地址:https://gitcode.com/gh_mirrors/ps/ps5-webkit-autoloader
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询