ItsBlurf/BFpilot
GitHub: ItsBlurf/BFpilot
BFpilot 是一个基于浏览器的 PS5 轻量级文件管理 payload,提供文件浏览、传输、压缩包解压等功能,解决了在 PS5 上通过 Web UI 管理本地文件的需求。
Stars: 36 | Forks: 4
# BFpilot
BFpilot 是一个轻量级的 PS5 payload,它通过浏览器提供文件管理器服务,访问地址为:
`http://:5905/`。
该项目分为三个 payload:
- `bfpilot.elf` - 带有集成解压功能的主文件管理器 payload。
- `bfpilot-launcher-installer.elf` - 可选的主屏幕图标安装程序。
- `bfpilot-archive-worker.elf` - 后备诊断解压工具。
主 payload 保持以兼容性为核心。它不导入启动器安装程序库,不安装图标,并且可以在不触及 PS5 应用安装服务的情况下使用。
## 功能
- 通过 Web 浏览器浏览本地 PS5 路径。
- 上传和下载文件。
- 通过 Web UI 复制、移动、重命名、创建文件夹和删除。
- 支持带进度显示和取消功能的 PS5 端复制和移动操作。
- 传输计时、吞吐量和设备诊断。
- 从主文件管理器 ELF 中提取 RAR、7z、分卷 7z 和 ZIP 压缩包。
- 简洁的位置侧边栏,包含 Root、Homebrew、Mounts、User、Data、已挂载驱动器和自定义快捷方式。
- 挂载的 USB/ext 驱动器仅在实际存在时显示。
- Data 和已挂载驱动器的顶部存储摘要。
- 持久化的自定义快捷方式,提供添加、重命名和删除控件。
- 可选的启动器图标,可打开 `http://127.0.0.1:5905/`。
## 下载
使用发布资产:
- `bfpilot.elf` 用于文件管理和压缩包解压。
- `bfpilot-archive-worker.elf` 仅在需要 PS5 主屏幕图标时使用。
- `bfpilot-archive-worker.elf` 仅作为后备诊断解压工具。
首先运行 `bfpilot.elf`。它提供 Web UI 并启动集成的压缩包守护进程;压缩包解压不需要注入其他 payload。仅在需要图标时运行启动器安装程序 payload。
## 用法
将文件管理器 payload 注入到你的加载器中,通常端口为 `9021`:
```
python3 payload_sender.py 9021 bfpilot.elf
```
打开:
```
http://:5905/
```
健康检查:
```
http://:5905/api/status
http://:5905/api/diag
http://:5905/api/fs/places
```
安装或刷新启动器图标:
```
python3 payload_sender.py 9021 bfpilot-launcher-installer.elf
```
图标打开:
```
http://127.0.0.1:5905/
```
## 压缩包解压
压缩包解压已集成到 `bfpilot.elf` 中。文件管理器准备作业,启动轻量级压缩包守护进程,并通过 Web API 报告进度。`bfpilot-archive-worker.elf` 作为相同压缩包引擎的后备诊断构建保留。
在 Web UI 中:
1. 选择一个压缩包文件。
2. 点击 `Extract`。
3. 在 `/data` 或已挂载的 USB/ext 驱动器下选择目标位置。
4. 如果压缩包需要,请输入密码。
5. 观察进度面板。
UI 轮询:
```
http://:5905/api/fs/archive/status
```
目前支持:
- RAR,包括带密码的压缩包以及普通多卷 RAR 集(当所有分卷都与第一个卷并存时)。
- 7z、带密码的 7z 以及 `.7z.001` 分卷集。
- ZIP stored/deflate 条目、ZIP64 大小/偏移量以及传统的 ZipCrypto 密码。
默认情况下,解压使用保守的压缩包引擎线程数。压缩包 API 接受 `threads=0` 以进行自动调整。7z 自动模式目前上限为 2 个有效线程;RAR 被限制为 1 个有效线程,直到在 `perf5` 崩溃调查之后证明大压缩包在 PS5 上的稳定性。状态响应包括 `threads`、`effectiveThreads`、`threadMode`、经过时间、平均 MB/s、输入/输出计时计数器以及尽力而为的压缩包优先级字段。RAR 状态还报告线程池计数器,例如 `rarMtThreadedBlocks` 和 `rarMtLargeBlocks` 用于诊断,但目前正常的 RAR 解压应报告 `effectiveThreads=1`。
已知限制:
- ZIP AES 加密报告不受支持。
- 尚未实现分卷 ZIP。
- 解压开始后,无法从浏览器中取消压缩包作业。
- 解压失败会保留 BFpilot 拥有的暂存文件夹以供检查,而不是删除证据。
## 构建
将 `PS5_PAYLOAD_SDK` 设置为你的 PS5 payload SDK 路径:
```
export PS5_PAYLOAD_SDK=/path/to/ps5-payload-sdk
make clean all
make inspect-imports
```
预期输出:
```
bfpilot.elf
bfpilot-launcher-installer.elf
bfpilot-archive-worker.elf
```
`make inspect-imports` 验证文件管理器 payload 不包含 launcher/AppInstUtil 导入,并且隔离的安装程序包含所需的安装程序导入。文件管理器可能包含压缩包引擎代码,但它必须保持无启动器状态。
## 诊断
本地只读诊断:
```
PS5_IP= BF_WEB_PORT=5905 make ps5-diag
```
针对 Settings/BFpilot 可用空间不匹配的只读存储核算审计:
```
PS5_IP= BF_WEB_PORT=5905 make ps5-storage-audit
PS5_IP= BF_WEB_PORT=5905 \
python3 scripts/ps5_storage_audit.py --deep --settings-free-gb 18
```
使用 `/data/test` 下仅由 BFpilot 创建的文件对文件 API 进行冒烟测试:
```
PS5_IP= BF_WEB_PORT=5905 \
BF_ALLOW_PS5_WRITE=1 \
make ps5-smoke
```
可选的基准测试模式默认写入到 `/data/test/bfpilot-bench` 下:
```
PS5_IP= BF_WEB_PORT=5905 \
BF_ALLOW_PS5_WRITE=1 \
BF_ALLOWED_REMOTE_ROOTS=/data/test/bfpilot-bench \
python3 scripts/ps5_diag.py --bench
```
压缩包性能测试工具:
```
BF_ALLOW_PS5_WRITE=1 \
BF_ARCHIVE_LOCAL=/path/to/test.rar \
BF_ARCHIVE_PASSWORD='optional-password' \
BF_ARCHIVE_THREADS=0,1,2 \
PS5_IP= BF_WEB_PORT=5905 \
make ps5-archive-perf
```
该测试工具在 BFpilot 拥有的测试文件夹下上传一次压缩包,为每个请求的线程数提取到单独的目标位置,保存 `diagnostics/ps5-archive-perf-*.json`,捕获压缩包日志,并默认仅删除其自己的测试文件夹。仅在受控稳定性测试中使用高于 2 的手动线程计数。
运行时日志存储在 PS5 上的:
```
/data/BFpilot/boot.log
/data/BFpilot/log.txt
/data/BFpilot/crash.log
/data/BFpilot/launcher-installer.log
/data/BFpilot/archive-integrated/archive-worker.log
/data/BFpilot/archive-integrated/status.json
/data/BFpilot/archive/archive-worker.log
/data/BFpilot/archive/status.json
```
## 兼容性说明
`bfpilot.elf` 在设计上是无启动器的。它避免使用 AppInstUtil、SystemService、UserService 和特权启动器导入,因为在某些固件/加载器组合中,它们可能会在 `main()` 之前失败。压缩包解压已集成到主 ELF 中,但仅通过 libc/网络安全压缩包代码以及 `/data/BFpilot/archive-integrated` 下 BFpilot 拥有的作业/状态文件进行。
`bfpilot-launcher-installer.elf` 是独立的,并使用完整的启动器安装程序依赖集。如果启动器安装在某个固件上失败,文件管理器 payload 仍然可用。
更多详细信息请参见 [docs/COMPATIBILITY_STRATEGY.md](docs/COMPATIBILITY_STRATEGY.md) 和 [docs/FIRMWARE_TESTING.md](docs/FIRMWARE_TESTING.md)。
标签:Payload, PS5, Python脚本, TCP SYN 扫描, Web UI, 客户端加密, 文件传输, 文件管理器, 解压缩, 越狱插件, 逆向工具