Life-Experimentalist/zipCracker
GitHub: Life-Experimentalist/zipCracker
一款基于Python的压缩文件破解工具,用于破解受密码保护的ZIP、RAR、7Z和TAR文件。
Stars: 0 | Forks: 0
# 压缩文件破解器
本项目是一个工具,用于使用字典攻击、暴力攻击和并发攻击破解受密码保护的压缩文件(zip、7z、rar、tar)。
## 设置开发环境
1. **克隆仓库**
git clone
cd Zip-Cracker
2. **安装依赖**
确保已安装 Python。然后,安装所需的 Python 包:
pip install py7zr rarfile tqdm
3. **下载字典**
运行 `install.py` 脚本以下载字典文件:
python install.py
4. **创建测试压缩文件**
创建一个包含简单密码的测试压缩文件:
echo "This is a test file." > test.txt
zip -e test.zip test.txt
输入提示时输入密码(例如,`test`)。
## 使用方法
### 验证文件类型
要验证文件是否为支持的压缩文件:
```
python src/verify_file.py
```
### 字典攻击
要执行字典攻击:
```
python src/dictionary_attack.py
```
### 暴力攻击
要执行暴力攻击:
```
python src/brute_force_attack.py
```
### 并发攻击
要执行并发攻击:
```
python src/concurrent_attack.py
```
## 运行主脚本
主脚本将自动检测脚本目录中的压缩文件,并尝试使用字典、暴力攻击和并发攻击破解它们。
```
python main.py
```
## 高级功能
- **检查嵌套压缩文件**:该工具可以检查文件内容是否为另一个加密的压缩文件,并在必要时破解它。
## 文件描述
- `main.py`:运行工具的主要脚本。
- `auto_cracker.py`:具有类似功能的其他主要脚本。
- `src/verify_file.py`:用于验证压缩文件类型的脚本。
- `src/dictionary_attack.py`:执行字典攻击的脚本。
- `src/brute_force_attack.py`:执行暴力攻击的脚本。
- `src/concurrent_attack.py`:执行并发攻击的脚本。
- `src/log_result.py`:记录攻击结果的实用程序。
- `src/file_utils.py`:检查文件类型的实用函数。
## 示例
1. **验证文件类型**
python src/verify_file.py test.zip
2. **字典攻击**
python src/dictionary_attack.py test.zip dictionaries/realhuman_phill.txt
3. **暴力攻击**
python src/brute_force_attack.py test.zip 1 4
4. **并发攻击**
python src/concurrent_attack.py test.zip 1 4
5. **运行主脚本**
python main.py
## 注意事项
- 确保字典文件位于指定的路径中。
- 攻击的结果将记录在脚本目录中的 `passwords.md` 文件中。
## 挑战 - 构建压缩文件破解器
在这个编码挑战中,我们将构建一个工具来“破解”加密的 zip 文件。
### 第零步
在许多编程语言中,我们从零开始索引数组。编码挑战也是如此,我们从第 0 步开始。这是设置您选择的 IDE / 编辑器和编程语言的步骤。
这是一个很好的挑战,可以在 C、C++、Rust 或 Go 等语言中完成,以便构建一个并发破解器。尽管在 PHP、Python 或 JavaScript 等语言中完成它也是完全可能的。选择权在你!
在设置好您的开发环境后,创建一个如下所示的测试压缩文件:
```
% export LC_CTYPE=C
% cat /dev/urandom | tr -dc '[:alpha:]' | fold -w ${1:-1000} | head -n 1 > cc.txt
challenge-zip-cracker
% zip -e cctest.zip cc.txt
```
输入提示时输入密码。现在使用简单的密码“test”。
### 第一步
在这一步中,您的目标是验证文件是否为 zip 文件。最简单的方法是检查头部是否与 zip 文件的头部匹配。您可以通过读取头部并检查它们是否匹配[这里详细说明](https://en.wikipedia.org/wiki/ZIP_(file_format)#File_headers)。
如果您还记得[构建自己的 xxd](https://codingchallenges.fyi/challenges/challenge-xxd) 编码挑战,我们可以使用 xxd 来检查文件并查看头部:
```
% xxd -l64 cctest.zip
00000000: 504b 0304 1400 0900 0800 0e81 dc58 09a9 PK...........X..
00000010: b5ad f602 0000 e903 0000 0600 1c00 6363 ..............cc
00000020: 2e74 7874 5554 0900 03ec d17e 66ee d17e .txtUT.....~f..~
00000030: 6675 780b 0001 04f5 0100 0004 1400 0000 fux.............
```
这里要注意的另一件重要的事情是,尽管文件是“加密”的,但元数据不是 - 我们可以看到文件名:cc.txt。
您的程序应该做类似的事情:
```
% cczipcrack cctest.zip
Has zip headers.
% cczipcrack cc.txt
Does not have zip headers.
```
### 第二步
在这一步中,您的目标是进行字典攻击。这种攻击类型在[构建自己的密码破解器](https://codingchallenges.fyi/challenges/challenge-password-cracker) 编码挑战中有解释。为此,从 CrackStation[这里](https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm) 获取密码列表。现在先获取较小的单词列表。
然后尝试使用字典中的每个单词解密 zip 文件。找到正确的密码时打印出来。您可以实现完整的 zip 加密规范,或者只需使用您编程语言的库。
```
% cczipcrack -dict cctest.zip
Password found: test
```
### 第三步
在这一步中,您的目标是尝试所有有效字符的所有组合,直到一定长度。这是一种暴力攻击。通常,在尝试暴力攻击之前会尝试字典攻击,因为大多数密码都是真实单词,并且其中许多都包含在广泛可用的密码字典中。
在您的 zip 密码破解器中添加对暴力破解密码的支持,允许用户指定密码的最小和最大长度,然后生成允许密码字符的所有组合。
```
% cczipcrack -brute -min=1 -max=4 cctest.zip
Password found: test
```
### 第四步
在这一步中,您的目标是并发检查。现代 CPU 有多个核心,因此我们可以通过使用多个线程来测试更多密码,从而在更短的时间内破解密码。
## 进一步挑战
在这个挑战中,为运行破解器的机器上的每个 CPU 核心创建一个线程。
标签:7Z文件, DOS头擦除, PoC, RAR文件, SEO优化, SysWhispers, TAR文件, VEH, ZIP文件, 主脚本, 依赖管理, 压缩文件格式, 域名侦查, 字典下载, 字典攻击, 安全测试, 密码学, 密码破解, 嵌套压缩文件, 开发环境, 手动系统调用, 攻击性安全, 数字取证, 文件压缩, 文件验证, 暴力破解, 测试文件, 用户模式钩子绕过, 自动化脚本, 辅助脚本, 逆向工具