伪加密修复
工具
010 Editor
修复步骤
把50 4B 03 04 14 00和50 4B 01 02 1F 00后面的这两个字节改为00 00
- 修复前:

- 修复后:

CRC32碰撞
工具
攻击条件
被加密的文本文档很小(通常4kb)
爆破多个压缩包中的4字节文件
攻击步骤
这里调用了theonlypwner/crc32,要把下面的脚本放到同一个目录中
import zipfileimport stringfrom crc32 import CRC32Reverse def crack_zip(file_path, file_name, charset): charset_bytes = set(charset.encode('latin-1')) with zipfile.ZipFile(file_path, 'r') as zip_file: info = zip_file.getinfo(file_name) target_crc = info.CRC crc32_reverse = CRC32Reverse(0xEDB88320) for patch in crc32_reverse.find_reverse(target_crc, 0): if all(b in charset_bytes for b in patch): candidate = patch.decode('latin-1') return candidate return "未找到匹配的CRC组合" def main(): file_path = "E:/Desktop" file_name = "data.txt" charset = string.ascii_letters + string.digits + '+/=' result = [] # 这里要修改文件名和循环次数 for i in range(0, 68): result.append(crack_zip(f"{file_path}/out{i}.zip", file_name, charset)) print(''.join(result)) if __name__ == "__main__": main()爆破单个文件
攻击步骤
先获取到该文件的CRC码
然后将CRC码带入到下面的命令中运行
python crc32.py reverse [CRC]运行得到以下输出(此处以python crc32.py reverse 0x75F90D3A为例):
4 bytes: z5Bz {0x7a, 0x35, 0x42, 0x7a}verification checksum: 0x75f90d3a (OK)6 bytes: 2BHS9N (OK)6 bytes: 4zPLa0 (OK)6 bytes: 7gJsJx (OK)6 bytes: 9hUCvv (OK)6 bytes: Gzefs4 (OK)6 bytes: MqgWNY (OK)6 bytes: QoY76E (OK)6 bytes: RORDuU (OK)6 bytes: VKOEt6 (OK)6 bytes: XDPuH8 (OK)6 bytes: bmE3S_ (OK)6 bytes: guV_H1 (OK)6 bytes: j6113k (OK)6 bytes: jgSP_w (OK)6 bytes: zV8BCl (OK)明文攻击
工具
ARCHPR
已知完整的明文文件
攻击条件
有一个加密的压缩包以及一个压缩包内存在的文件(可以通过CRC码判断,相同就是同一个文件)

攻击步骤
1. 构造压缩包并处理加密压缩包
先将该已知的文件logo.png使用相同的方式压缩

然后被攻击包内仅保留一个已知的文件,其他文件都删除
2. 明文攻击获取解压密码
在ARCHPR打开处理过的加密压缩包flag.zip,攻击类型选择明文,明文文件选择刚刚构造好的压缩包logo.zip

如果试了几次都是未找到,那很有可能是压缩软件出了问题

换一个软件压缩logo.png,然后重复上述操作

这一次就顺利恢复了,这个加密压缩包的密码就是q1w2e3r4

已知少部分明文字节
攻击条件
- 已知12个字节及偏移
- 需获取加密文件中12字节的明文数据及偏移,其中至少8字节需要连续(如文件头、固定格式标识符)。
- 加密算法为 ZipCrypto
- 仅支持传统 ZIP 加密(ZipCrypto),不支持 AES 加密。
- 需确认加密方式为 ZipCrypto Deflate 或 ZipCrypto Store。
攻击步骤(以PNG为例)
1. 构造构造文件头
python -c "import binascii; open('png_header', 'wb').write(binascii.unhexlify('89504E470D0A1A0A0000000D49484452'))"2. 提取密文数据
使用 bkcrack 从加密 ZIP 中提取目标文件的密文数据:
bkcrack -C encrypted.zip -c target_file.png -p png_header -o 0-C:指定加密的 ZIP 文件。-c:指定 ZIP 中被加密的目标文件(如target_file.png)。
运行得到以下输出:
bkcrack 1.7.1 - 2024-12-21[14:19:35] Z reduction using 9 bytes of known plaintext100.0 % (9 / 9)[14:19:35] Attack on 704864 Z values at index 6Keys: 97d30dcc 173b15a8 6e0e745534.5 % (242933 / 704864)Found a solution. Stopping.You may resume the attack with the option: --continue-attack 242933[14:21:15] Keys97d30dcc 173b15a8 6e0e7455得到三个密钥:97d30dcc 173b15a8 6e0e7455
3. 使用密钥解密文件
通过恢复的密钥解密目标文件:
bkcrack -C encrypted.zip -c target_file.png -k 97d30dcc 173b15a8 6e0e7455 -d decrypted_data-k:输入恢复的密钥(顺序为key0 key1 key2)。-d:指定解密后的输出文件名(如decrypted_data)。
运行得到以下输出:
bkcrack 1.7.1 - 2024-12-21[14:22:30] Writing deciphered data decrypted_dataWrote deciphered data (not compressed).此时你的根目录下将会出现一个经过解密得到的文件decrypted_data。
4. 处理解密后的数据
根据加密时的压缩方式,可能需要进一步处理解密后的数据:
-
场景1:文件以 Store 模式加密(未压缩)
解密后的数据即原始文件,直接重命名即可。 -
场景2:文件以 Deflate 模式加密(需解压)
解密后的数据需要进一步解压,使用tools文件夹提供Python解压脚本:
python tools/inflate.py < decrypted_data > output.png掩码攻击
工具
ARCHPR
攻击条件
已知压缩包密码的长度,还知道密码的其中一部分
攻击步骤
攻击类型选择掩码,左边选择好范围,在右边输入掩码

比如说已知压缩包的密码是以1391040开头的手机号,那么掩码就可以填1391040????,这里的?可以理解为一个占位符
字典爆破
工具
弱口令:
shadowabi/S-BlastingDictionary: 自己搜集的爆破字典,包括常用用户名、密码弱口令、SQL万能密码等
zxcvbn001/password_brute_dictionary: 口令爆破字典,有键盘组合字典、拼音字典、字母与数字混合这三种类型
rootphantomer/Blasting_dictionary: 爆破字典
社工: