# BKcrack--GUI版本 **Repository Path**: yzd522/bkcrack-gui-version ## Basic Information - **Project Name**: BKcrack--GUI版本 - **Description**: 这也许是我自己正式自己写工具的开始 - **Primary Language**: Unknown - **License**: Zlib - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-11-20 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BkCrack GUI 一个基于 [bkcrack](https://github.com/kimci86/bkcrack) 的图形界面工具,用于破解使用传统 ZipCrypto 加密的 ZIP 文件。 ## 功能特点 - 图形化界面,操作简单直观 - 根据ZIP包内文件扩展名自动确定偏移量 - 支持自定义输出目录 - 集成 bkcrack 命令行工具 - 支持明文攻击恢复 ZIP 密钥 - 支持使用恢复的密钥创建无密码 ZIP 文件 - 提供详细的终端输出信息,便于调试和问题排查 - 支持停止攻击和清除输出功能 - 改进的ZIP文件处理和错误恢复机制 - 支持直接解密单个文件作为备选方案 ## 界面预览 ![主界面](pics/界面.png) ## 安装说明 ### 环境要求 - Python 3.8 或更高版本 - Windows 系统(其他系统未测试) ### 安装步骤 1. 克隆或下载本项目 2. 安装依赖: ```bash pip install -r requirements.txt ``` 3. 确保 `bkcrack.exe` 位于项目根目录下 ## 使用说明 ### 1. 准备工作 - 准备一个加密的 ZIP 文件 - 准备一个明文文件,该文件应与 ZIP 文件中的某个文件内容相同或部分相同 ### 2. 操作步骤 1. 运行程序: ```bash python start.py ``` 2. 点击"选择文件"按钮选择加密的 ZIP 文件 3. 点击"选择文件"按钮选择明文文件 4. 在"明文文件名"中输入 ZIP 文件中与明文对应的文件名(例如:`file.exe`) 5. (可选)点击"选择目录"按钮选择输出目录 6. 点击"开始攻击"按钮开始攻击 7. 如果攻击成功,密钥会自动填充到密钥输入框中 8. 点击"导出无密码ZIP"按钮创建无密码版本的 ZIP 文件 ### 3. 自动偏移量检测 程序会根据ZIP包内文件的扩展名自动确定偏移量: - EXE相关文件(.exe, .dll, .sys等):自动应用 64 字节偏移量 - 常见文件(.png, .jpg, .pdf, .txt等):不应用偏移量 - 其他文件:默认不应用偏移量 如果根据扩展名确定的偏移量攻击失败,程序会尝试使用默认的 64 字节偏移量并将结果保存到 `output/keys.log` 文件中。 ### 4. 控制功能 - **停止攻击**:点击"停止攻击"按钮可以中断正在进行的攻击 - **清除输出**:点击"清除输出"按钮可以清空输出区域的内容 ### 5. ZIP文件完整性检查 在导出无密码ZIP文件时,程序会自动验证生成文件的完整性: - 检查中央目录记录是否存在 - 验证ZIP文件结构是否完整 - 如果发现结构问题,会给出详细错误提示 ### 6. 直接解密文件功能 当无法创建完整的ZIP文件时,可以使用"直接解密文件"功能: - 使用已获得的密钥直接解密ZIP中的指定文件 - 生成与ZIP中文件内容完全相同的解密文件 - 这是ZIP导出失败时的备选方案 使用方法: 1. 在获得密钥后,输入要解密的文件名 2. 点击"直接解密文件"按钮 3. 解密后的文件将保存到指定的输出目录 ### 7. 错误处理 当遇到以下错误时,程序会提供相应的处理建议: - `Zip error: could not find end of central directory record`: - 检查原始ZIP文件是否完整 - 尝试重新下载或获取原始ZIP文件 - 如果问题持续存在,请尝试使用其他工具处理该ZIP文件 - 可使用"直接解密文件"功能作为备选方案 ### 8. 调试信息 程序会在终端输出详细的命令执行信息,包括: - 执行的具体命令 - 工作目录 - 文件类型检测结果和使用的偏移量 这些信息有助于排查问题和优化性能。 ## 项目结构 ``` bkcrackGUI/ ├── bkcrack.exe # bkcrack 核心程序 ├── start.py # 启动器 ├── requirements.txt # 依赖列表 ├── README.md # 说明文档 ├── license.txt # 许可证文件 ├── tools/ │ ├── deflate.py # deflate 工具 │ └── inflate.py # inflate 工具 ├── ui/ # 图形界面代码 │ └── main_window.py # 主窗口界面文件 ├── pics/ # 界面截图 ├── 使用示例/ # 使用示例和测试案例 │ ├── 测试过程.md # 测试过程记录 │ ├── 2025moectf-misc-万里挑一/ │ └── bugku-misc-请攻击这个压缩包/ └── 模板/ # 模板和参考资料 ├── flag.exe # EXE文件模板 ├── flag.png # PNG文件模板 └── 资料库/ # 参考资料 ``` ## 技术说明 ### 依赖库 - PySide6: Qt for Python,用于构建图形界面 - PySide6-Fluent-Widgets: 美化界面组件 ### 工作原理 1. 使用已知明文攻击恢复 ZIP 文件的内部密钥 2. 使用恢复的密钥创建无密码版本的 ZIP 文件或直接解密文件 ## 常见问题 ### 1. 攻击失败怎么办? - 确保明文文件与 ZIP 中的文件内容匹配 - 尝试不同的偏移量 - 检查 ZIP 文件是否使用 ZipCrypto 加密(不支持 AES 加密) ### 2. 如何获取明文文件? - 从 ZIP 文件中找到存储方式为"Store"的文件,这些文件未压缩 - 通过其他方式获取 ZIP 中文件的部分内容 ### 3. 偏移量是什么? 偏移量是明文文件开头与 ZIP 文件中压缩数据之间的字节差。某些文件类型(如 EXE)有固定的偏移量。 ### 4. ZIP导出失败怎么办? - 检查原始ZIP文件是否完整 - 确保有足够的磁盘空间 - 尝试使用其他目录进行导出 - 如果出现"could not find end of central directory record"错误,可能是原始ZIP文件损坏 - 使用"直接解密文件"功能作为备选方案 ## 免责声明 本工具仅供合法授权的安全测试使用。使用者需自行承担使用本工具的所有风险和法律责任。开发者不对任何滥用本工具的行为负责。 ## 许可证 本项目基于 [zlib/libpng 许可证](license.txt) 发布。 ## 参考资料 - [bkcrack GitHub 项目](https://github.com/kimci86/bkcrack)