| Crates.io | fixzt |
| lib.rs | fixzt |
| version | 0.3.0 |
| created_at | 2025-11-30 03:14:38.809655+00 |
| updated_at | 2025-11-30 03:14:38.809655+00 |
| description | A tool to fix ZIP file offset issues caused by prepended data (e.g., image seeds) |
| homepage | |
| repository | https://github.com/lglfr-nlsidf/fixt |
| max_upload_size | |
| id | 1957786 |
| size | 26,135 |
一个用于修复ZIP文件偏移量问题的命令行工具,专门解决"图种"或其他在ZIP文件头部添加数据导致的ZIP结构损坏问题。
当ZIP文件头部被添加额外数据时(如图种文件),会导致以下问题:
unzip -l corrupted.zip
# 输出:
# warning [corrupted.zip]: 100 extra bytes at beginning or within zipfile
# (attempting to process anyway)
这些问题出现的原因是:
ZIP文件由以下几部分组成:
0x07064b50)0x06054b50)prefix_len = 实际中央目录位置 - 记录的中央目录偏移量
如果prefix_len > 0,说明存在前置数据需要修复。
cargo build --release
# 编译后直接运行
./target/release/fixt <待修复ZIP文件>
# 或使用cargo运行
cargo run <待修复ZIP文件>
# 创建图种文件(示例)
echo "图片头部数据" > header.txt
zip normal.zip file1.txt file2.txt
cat header.txt normal.zip > image_seed.zip
# 修复文件
cargo run image_seed.zip
# 验证修复结果
unzip -l image_seed.zip # 应该无警告
| 格式 | 特点 | 处理方式 |
|---|---|---|
| 普通ZIP | 32位偏移,最大4GB | 修正中央目录中的32位偏移字段 |
| ZIP64 | 64位偏移,支持超大文件 | 额外处理扩展字段中的64位偏移 |
const EOCD_SIG: u32 = 0x06054b50; // 中央目录结束记录
const ZIP64_LOCATOR_SIG: u32 = 0x07064b50; // ZIP64定位器
const CENTRAL_DIR_SIG: u32 = 0x02014b50; // 中央目录条目
const ZIP64_EXT_TAG: u16 = 0x0001; // ZIP64扩展字段标签
程序包含完善的错误处理机制:
本项目采用开源许可证,具体请查看LICENSE文件。
欢迎提交Issue和Pull Request来改进这个工具。
注意:此工具主要用于修复因图种等技术导致的ZIP偏移问题,对于其他类型的ZIP文件损坏可能无效。