使用 python 暴力破解 zip 密码

1. 说明

让python去一个个尝试我们设定的密码字符集的排列组合,直到试出来密码。

我设定是每一千次尝试会打印一下,方面关注当前进度和状态。

2. 代码

import zipfile
from itertools import product
import string

def brute_force_zip(zip_filepath, min_length=1, max_length=4):
    """
    暴力破解 ZIP 文件密码。

    :param zip_filepath: ZIP 文件路径
    :param min_length: 密码最小长度
    :param max_length: 密码最大长度
    :return: 如果找到密码,返回密码;否则返回 None
    """
    # chars = string.ascii_letters + string.digits  # 使用的字符集:字母和数字
    chars = string.digits  # 使用的字符集:仅数字
    zip_file = zipfile.ZipFile(zip_filepath)

    i_turn = 0
    for length in range(min_length, max_length + 1):
        # 生成字符集内所有可能的密码组合
        for pwd in product(chars, repeat=length):
            password = ''.join(pwd)
            # 进度监控
            if i_turn%1000 == 0:
                print(f"i_turn: {i_turn},current trying password:{password}")
            i_turn = i_turn + 1
            try:
                # 使用密码尝试解压
                zip_file.extractall(pwd=bytes(password, 'utf-8'))
                print(f"找到密码:{password}")
                return password
            except:
                pass  # 继续尝试下一个密码
    print("未能找到密码。")
    return None

zip_filepath = r"test.zip"  # 替换为你的 ZIP 文件路径
brute_force_zip(zip_filepath, min_length=1, max_length=6)

3. 运行

如果成功找到则会显示类似下面内容:

发表评论