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, 二进制发布, 二进制解析, 云资产清单, 开源工具, 数据解析, 文件解包, 文本提取, 无后门, 本地化工具, 波斯王子, 游戏开发, 游戏汉化, 资源提取, 逆向工具, 逆向工程