特别声明,请不要用于非法用途
忘记压缩密码,怎么办?使用 hashcat 找回密码太慢?
一个基于开源项目kimci86/bkcrack开发的Zip解压软件。
介绍
已知加密ZIP中的一个文件,获取其他文件。
本程序参照 kimci86/bkcrack 进行修改,主要使用 WPF 增加了可视化界面。
预览

文件介绍
| 项目名 | 介绍 | 修改的内容 |
|---|---|---|
| Dll/CrackerExe | 这是 c++ 控制台版,也使用动态链接库dll | 使用vs2022进行编译改造 |
| Dll/Cracker | 这是 c++ 版动态链接库,方便被c# 使用,c++ 与 c# 代码执行效率有很大差距,所以才有这个项目 | 增加了导出方法 |
| ICSharpCode.SharpZipLib | 这是zip的解压库 | 因为原版的无法获取压缩文件的数据的开始位置,所以才修改了ZipFile.LocateEntry 的访问权限, |
| src | 这就是NET core WPF的界面 | |
| ZoDream.Shared | 使用c# 重写了算法,两个版本,包含 c++ dll 的调用,及纯c#版 | |
| ZoDream.Tests | 测试代码 |
两个版本功能对比
| 功能 | c++ dll | c# dll |
|---|---|---|
| 根据压缩中文件获取Key | √ | √ |
| 根据文件获取Key | × | × |
| 根据字符串获取Key | × | × |
| 解压单个文件 | √ | √ |
| 解压全部文件 | √ | √ |
| 解压Deflated压缩的文件 | × | √ |
| 更改密码 | √ | × |
| 获取密码 | √ | √ |
实现功能
- 基于
CRC32自动配对压缩文件 - 实现获取
internal keys,同一个密码的不同压缩包Keys不通用?同一个压缩包同一个密码的keys是一样的 - 基于
internal keys解压全部文件 - 支持 Stored, Deflated
- 支持 c++ 版和 c# 版功能切换
- c++ 版解压文件需要多一步解码单个文件
效率问题
c++ 版的占用内存大概为 40M
c# 版的占用内存大概为 400M
存在问题
- 解压某些文件可能有问题,暂时没有解决,其他压缩编码待支持。。。
- 不支持windows自带ZIP生成的文件
- c# 版密码修复功能不可用,更改zip密码未实现
- c++ 不支持直接解码Deflated
生成c++ exe
属性>链接器>附加库目录, 添加 dll 生成目录属性>链接器>输入>附加依赖项,添加 dll 的lib文件名cracker.lib