Charles2404200/-WIP-Prince-of-Persia---Unpacker-Repacker
GitHub: Charles2404200/-WIP-Prince-of-Persia---Unpacker-Repacker
针对《波斯王子》游戏 .BF 二进制格式的解包、文本提取与重打包工具套件。
Stars: 0 | Forks: 0
# Text-POP:二进制文件解析器与文本提取器
一个基于 Python 的工具包,用于解包、解析和从二进制格式文件中提取文本,专为游戏资产文件(`.BF` 文件)设计。包含 GUI 和命令行界面,用于处理 Prince.bf 和 POPData.BF 文件。
## 项目概述
本项目提供以下工具:
- **解包二进制文件**(.BF 格式)为结构化组件
- **提取文本**,从打包的二进制游戏资产中
- **重打包修改后的资产**,还原为二进制格式
- **分析和转换**提取出的游戏文本
- **提供用户友好的 GUI**,用于执行常见操作
## 当前状态
⚠️ **开发中** - 文本提取功能尚不完善,正在开发中。
## 项目结构
```
text-POP/
├── gui_app.py # Main GUI application (TKinter-based)
├── main.py # Entry point
├── bin_text_dump.py # Binary text extraction (INCOMPLETE)
├── bin_to_gao.py # Binary to GAO format conversion
├── bin_record_dump.py # Binary record analysis
│
├── formats_prince_bf.py # Prince.bf format parser
├── formats_popdata_bf.py # POPData.BF format parser
│
├── text_scan.py # Text scanning utilities
├── resource_text_parser.py # Resource text parsing
├── mixed_token_parser.py # Mixed token parsing
├── plain_text_rule_parser.py # Plain text rule parsing
├── fd_text_mapper.py # File descriptor to text mapping
├── final_subtitle_rebuilder.py # Subtitle reconstruction
│
├── utils.py # Common utilities
├── pipeline_ops.py # Pipeline operations
│
├── POPData.BF # Sample POPData binary file
├── prince.bf # Sample Prince.bf binary file
│
├── 05_bin_text_dump/ # Extracted raw text dumps
├── final_subtitle_out/ # Final processed subtitle files
├── mixed_out/ # Mixed token output (JSON/TXT)
├── New folder/ # Organized extracted assets
│ ├── 01_bins/ # Unpacked bins
│ ├── 02_subassets/ # Extracted sub-assets
│ └── 03_textmap/ # Text mapping data
└── token_inference_out/ # Token analysis results
```
## 功能特性
### GUI 应用程序 (`gui_app.py`)
该应用程序提供选项卡式界面,用于:
1. **Prince.bf 操作**
- 解包 Prince.bf 文件
- 检查文件结构
- 重打包修改后的资产
- 自定义字符串表偏移配置
2. **POPData.BF 操作**
- 解包 POPData.BF 归档
- 检查文件结构
- 重打包修改后的归档
3. **流水线操作**
- 运行完整的文本提取流水线
- 按顺序处理多个文件
### 文本提取流水线
本项目包含多种文本提取策略:
- **ASCII 连续片段提取** - 查找连续的 ASCII 文本序列
- **UI 关键词识别** - 基于关键词模式识别 UI 文本
- **Token 解析** - 解析混合 Token 格式
- **文本标准化** - 清理并规范化提取的文本
### 支持的工具
- **文本扫描** (`text_scan.py`) - 扫描二进制文件以查找可提取的文本
- **记录转储** (`bin_record_dump.py`) - 提取结构化记录
- **字幕重建** (`final_subtitle_rebuilder.py`) - 重建字幕文件
- **格式分析** - 检查和分析二进制格式结构
## 安装说明
### 系统要求
- Python 3.8+
- tkinter(包含在大多数 Python 发行版中)
### 安装步骤
```
# Clone 或下载项目
cd text-POP
# 无需外部 dependencies
# (tkinter 是标准 Python 安装的一部分)
```
## 使用方法
### GUI 模式(推荐)
```
python main.py
```
这将启动包含三个主要选项卡区域的图形界面,用于执行不同的操作。
### 命令行用法
从二进制文件提取文本:
```
from bin_text_dump import dump_bin_text
dump_bin_text("path/to/file.bin", "output_folder")
```
解包 Prince.bf:
```
from formats_prince_bf import unpack_prince_bf
unpack_prince_bf("prince.bf", "output_folder")
```
解包 POPData.BF:
```
from formats_popdata_bf import unpack_popdata_bf
unpack_popdata_bf("POPData.BF", "output_folder")
```
## 已知问题与未完成功能
### ⚠️ 文本提取(未完成)
主要未完成的功能是从二进制文件中进行稳健的文本提取:
- **当前状态**:基本的 ASCII 连续片段提取可用
- **局限性**:
- 误报率高(包含噪声/元数据)
- 上下文保留有限
- 不同文件类型的质量不一致
- 对混合编码文本的处理能力较差
- **改进方向**:
- 改进文本验证的启发式算法
- 更好的字符串表检测
- 上下文感知提取(UI 文本 vs. 故事文本)
- 编码检测与处理
- 质量过滤流水线
### 其他已知问题
- 字符串表偏移可能需要手动配置
- 部分文件的提取结果不完整
- 重打包可能无法完美还原
- 尚不支持压缩的资产格式
## 文件格式说明
### Prince.bf 格式
- 包含游戏资产的自定义二进制格式
- 包含字符串表、资源和元数据
- 需要针对特定格式的解析才能可靠提取
### POPData.BF 格式
- 用于打包游戏数据的归档格式
- 包含多个嵌入的记录
- 支持检查和重打包
## 贡献指南
若要帮助完善文本提取功能:
1. 改进 `utils.py` 中的启发式算法,以获得更好的文本质量过滤
2. 增强 `bin_text_dump.py`,采用更智能的提取策略
3. 针对不同的资产类型添加特定格式的解析
4. 改进编码检测和处理
## 输出文件
本项目生成多种输出类型:
- **TXT 文件** - 原始提取的文本
- **JSON 文件** - 结构化 Token 数据
- **Dump 文件** - 逐记录分析
- **字幕文件** - 处理后的字幕输出
## 许可证
本项目仅供研究和教育目的使用。
## 注意事项
- 某些二进制文件可能需要手动配置偏移量
- 文本提取质量因文件类型和内容而异
- 结果应进行人工审核以确保准确性
- 重打包功能处于实验阶段,可能无法始终保持二进制兼容性
**最后更新**:2026年4月
**状态**:活跃开发中 - 文本提取进行中
标签:GUI工具, MOD制作, Python, TKinter, 二进制发布, 二进制解析, 云资产清单, 开源工具, 数据解析, 文件解包, 文本提取, 无后门, 本地化工具, 波斯王子, 游戏开发, 游戏汉化, 资源提取, 逆向工具, 逆向工程