Files
LisherSong--ps5-web-file-ma…/docs/FORUM-POST-v1.9.2.md
T
Songlx516 f85e60ed8c docs: rewrite README around features, move per-version history to CHANGELOG
Both READMEs had grown into an upstream-style append log ("What's new in
v1.7 / v1.8 / v1.8.1 / v1.8.2 / v1.9 / v1.9.2 / v1.9.3M") that also dropped
several features the upstream README still documents. Rewrite both as
feature-oriented descriptions with one shared outline.

- README.md, README.zh-CN.md: feature-oriented rewrite. New sections for
  the archive support matrix, limits and safety, conflict policy,
  password handling, what is deliberately not built, and an
  upstream-vs-us comparison table that includes the rows where upstream
  wins.
- Add header badges (release / license / target / downloads) and two
  for-the-badge buttons (Download, beginner's guide). The release badge
  reads github/v/release so it tracks the latest release instead of
  hard-coding a version; colours are pinned so they do not clash.
- CHANGELOG.md: write the missing [v1.9.1] and [v1.9.2] body sections
  before that prose was removed from the README, so nothing was lost.
- Fix 4 dead links to third_party/unrar/ (renamed unrar7/ in v1.9) and one
  reference to a README section that no longer exists.
- HANDOVER.md: update the handover commit and README structure note.

Documentation only. No binary rebuild, and tag v1.9.3M with its release
asset is untouched.

Verified: link + anchor audit across the tree (now including raw HTML
href/src, not just Markdown syntax) reports 0 problems; table column
counts consistent; bold pairing clean; the new header renders with 6/6
badges loaded at both 1280px and 420px viewports and no horizontal
overflow.
2026-09-25 13:45:40 +08:00

8.8 KiB
Raw Blame History

PS5 网页文件管理器 v1.9.2(自编译版)发布 + 与上游原版对比 + 使用简介

这是我自己维护的一个分支版本,基于 owendswang 的 ps5-web-file-manager 二次开发。本文讲三件事:它和上游原版差在哪、我这个版本强在哪、怎么用。


一、它是什么

一个在已越狱 PS5 上跑的 HTTP 文件管理器(单文件 ELF 载荷)。局域网内任意浏览器(含 PS5 自带浏览器)打开 http://<PS5的IP>:8888/ 就能管理外接 USB 和内置存储:浏览、改权限、上传、下载、原地编辑文本、装/预览 PKG、看图,以及解压 ZIP / RAR / 7z。

  • 版本:v1.9.2
  • 标题 ID:FMGR88888
  • 许可证:GPLv3+
  • 目标平台:x86_64-sie-ps5(Zen 2,不是 ARM)

关于版本号:v1.9.2 与 v1.9.1 功能完全相同,只更新了内嵌版本号。原先的 v1.9.1 tag 打在了产出发布二进制的提交之前 4 个提交,导致"tag 对应的源码"重建不出发布的那份 ELF;v1.9.2 重新从正确提交上打,使 tag = 源码 = 二进制。


二、和上游原版(owendswang v1.8)对比

先说结论:不是同一条路线,各有胜负手。

维度 上游 owendswang v1.8 我的 v1.9.2
一句话定位 把 7-Zip 本体做成外部 helper 进程,靠 IPC 调用 自研 / vendor 解码库,全部内嵌同一进程
支持的压缩格式 30 种(zip/7z/rar/tar/gz/xz/zst/bz2/cab/arj…) 3 种:ZIP / RAR / 7z
部署方式 两个文件,helper 必须放 /data/wfm/ 指定路径 单个 ELF,零外部依赖
载荷体积 主程序 + 7-Zip 本体(两份) 850 KiB 单文件(含 ZIP/RAR/7z 三个解码引擎)
防压缩炸弹(zip bomb) ❌ 无 ✅ 压缩比上限 + 1 GiB 下限豁免
磁盘写满保护 ❌ 无 ✅ 解压前按实际剩余空间 statvfs 预检
路径穿越防护 ❌ 无(交给 7-Zip) ✅ 有专项测试
解压中断留残留 ⚠️ 可能留半成品 ✅ staging 隔离,失败即清
解压任务跨重启恢复 ✅ helper 独立进程,重启不丢 ❌ 暂无
内存隔离 ✅ 独立进程 ❌ 与主程序共享地址空间
错误信息详细度 中等 ✅ 含条目名 / errno / 字节数
解压核心正确性 7-Zip 本体(20 年验证) 自研 7z 链 + 成熟 vendor 库

上游原版强在哪

  • 格式多:30 种,常见游戏包/备份/Mod 里 .tar.gz、.xz、.zst、.bz2 都能直接解。
  • 任务恢复:helper 是独立进程,主程序被系统杀掉或浏览器重开,大包解压不丢。
  • 内存隔离:解压峰值不影响主文件服务。

我的版本强在哪

  • 安全护栏齐全:压缩炸弹、写满磁盘、路径穿越、中断残留——这四项上游一个都没有,而我这边都有实现和测试(测试矩阵 163 项检查,0 失败)。说白了,一个恶意压缩包不会把你的内置存储搞崩。
  • 单文件部署:丢一个 ELF 就行,不用记第二个文件该放哪;helper 丢了功能全废的事在我这不存在。
  • 7z 引擎是硬啃出来的:上游靠 7-Zip 本体"白嫖",我这边是自己解析 7z folder + 拉式 codec 链,原生支持 BCJ2 反汇编后处理和多 coder 组合,还顺手做了多线程 LZMA2 解码(约 1.37×)和汇编 LZMA 解码器(约 1.26×)。
  • RAR 用官方 UnRAR 7.20.1:能解 WinRAR 6.x/7.x 写的 RAR5「v6」归档和多卷 RAR——上游原版的旧引擎在这类文件上会报"归档损坏"。

我不回避的短板

  • 格式覆盖只有 3 种,这是最明显的弱项。.tar.gz、.xz、.zst、.bz2 你现在还得在 PC 上先解开。这是我接下来增量要补的方向(tar+zlib 已有、xz/lzma 复用 LZMA SDK、bz2/zst 可 vendor 单文件解码器),但不打算照抄上游的 helper 路线——那样会丢掉上面那些安全护栏和单文件部署优势。
  • 任务跨重启恢复和内存隔离暂时没有(和"单进程内嵌"的架构取舍有关)。

一句话:上游赢在"格式广度 + 进程架构",我赢在"安全 + 部署 + 错误质量"。


三、v1.9.2 / v1.9.1 我做了哪些具体改进

  • 7z 解压引擎:自研解码子集 + 拉式 codec 链(sevenz_chain.c),支持 LZMA2 / LZMA / BCJ2,覆盖 SDK SzArEx 装不下的 5-coder 文件夹。
  • 分卷(多卷)支持:三种格式都支持分卷,但命名约定不同(引擎按文件名自动识别,打开首个分卷即可):
    • ZIP 分卷:① 经典多磁盘 name.z01 … name.zNN … name.zip(索引目录固定在最后一个 .zip);② 7-Zip 字节分割 name.zip.001 / .002 / …;③ WinRAR 卷 name.part1.zip … name.partN.zip。最多 512 卷。
    • 7z 分卷:7-Zip 字节分割 name.7z.001 / .002 / …,各分卷需等大,打开首个即可。最多 512 卷。
    • RAR 分卷:标准多卷 name.part1.rar / .part2.rar / …(unrar 自动按名合并)。注意:用 7-Zip 切出来的 name.rar.001 这种命名暂不支持,引擎会提示你先把分卷改名成 .partN.rar 再解。
  • 性能三项(纯解码提速,不影响功能):
    • 汇编 LZMA 解码器 ≈ 1.26×
    • 纯 LZMA2 多线程解码(8 线程)≈ 1.37×
    • 移除 ZIP 逐条目 fsync,减少写盘开销
  • RAR 升级到官方 UnRAR 7.20.1:RAR5「v6」+ 多卷可用(v1.8 时代在 WinRAR 6/7 文件上报"归档损坏"的问题已消失)。
  • 载荷瘦了 15.8%(1,034,328 → 870,488 字节):链接期去掉了 libc++abi 里一段永远不会执行的 C++ 名字还原器(只服务于"未捕获异常打印类型名"这条路径),再加上相同机器码折叠。不损失任何功能,也不影响解压速度。
  • 上传更顺手:点上传按钮直接选文件或文件夹(不再弹二级菜单);支持把文件/文件夹直接拖到页面上上传。
  • 中英双语界面 + 项目主页右上角可切换语言说明。

已知缺口(诚实列出)

本节描述的是 v1.9.2 发布时的状态。此后补齐的两条缺口 —— 加密 ZIP/RAR 与 7z -mhe=on 加密头 —— 已随 v1.9.3M 发布。详见 README 的「压缩包支持」一节、 CHANGELOG.md 的 [v1.9.3M] 段,以及 HANDOVER.md §十一 / §十二。

  • 带密码的 ZIP / RAR / 7z:拒绝解压(引擎有解密能力,但密码输入 UI/API 还没接,临时先挡掉)。
  • 7z -mhe=on 加密头:暂不支持(需要自研头解析器)。这是 7z 侧唯一已知缺口。

四、使用简介(三步上手)

1. 把 ELF 发到 PS5

PS5 上先运行一个 ELF 加载器(端口 9021 常见),然后在 PC 上:

# 把 PS5_IP 换成你主机实际 IP
nc -q0 <PS5的IP> 9021 < web-file-mgr-v1.9.2.elf

PS5 屏幕会弹通知,显示实际监听端口(默认 8888)。首次运行还会在主屏 Media 分类装一个「PS5 Web File Manager」快捷方式。

2. 浏览器打开

同一局域网下,任意设备浏览器打开:

http://<PS5的IP>:8888/

PS5 自带浏览器也能开。

3. 日常操作

  • 浏览/管理:列文件、排序、改权限、复制/移动/重命名/删除、原地编辑文本(≤1 MiB 的 txt/json/js/c/h…)。
  • 上传下载:单文件或文件夹树上传(也可直接拖拽到页面);文件夹/多选以 .tar 流式下载。
  • 解压:在文件列表里点 ZIP / RAR / 7z 的「解压」按钮即可。大档案(>480 GiB)会弹确认提示,确认后用更宽松的限额解压。
  • 冲突策略:同名文件默认拒绝覆盖;需要时可选覆盖或合并。

五、下载与校验

请在 GitHub Release 页面下载:https://github.com/lishersong/ps5-web-file-manager/releases/tag/v1.9.2

发布文件:web-file-mgr-v1.9.2.elf

项目 值
大小 870,488 字节(约 850 KiB)
sha256 177e90fecf93a0251e83f67884fba4551051be248330b0d70fda8ea732f88e84
文件类型 ELF 64-bit LSB,x86-64(e_machine 0x003e,即 PS5 目标三元组)

下载后建议先核对 sha256 再发到主机:

sha256sum web-file-mgr-v1.9.2.elf
# 应等于 177e90fecf93a0251e83f67884fba4551051be248330b0d70fda8ea732f88e84

本次构建是可复现的:同一份源码树连编两次 sha256 完全相同。所以这个哈希可以放心当交付指纹用。


六、免责声明

非官方自制软件,仅在已越狱 PS5 上运行。使用风险自负——作者不对损坏、数据丢失、账号处罚或保修影响负责。请勿再分发 Sony 专有内容。依 GPLv3+,本分支修改后的源码已公开在上面的仓库。


想继续补 .tar.gz / .xz 等格式、或接上密码解压 UI 的,欢迎在仓库提 issue。