You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

暴力破解三位数字密码加密的zip文件,代码运行失败如何解决

问题原因
  • 文件名不匹配:题目给出的目标加密压缩包路径为/tmp/alien-zip-2092.zip,但你的代码中打开的是/tmp/alien-sample-42.zip,读取的文件根本不是目标压缩包,自然无法匹配到正确密码。
  • 加密算法兼容性问题:Python标准库zipfile仅支持Zip传统的ZipCrypto加密算法,如果目标压缩包使用了现在更常见的AES加密,就算密码完全正确,自带的zipfile也会识别为密码错误,无法完成解压。
  • 额外效率问题:你当前的代码每次遍历密码都会重新打开一次压缩包,1000次遍历就会打开关闭文件1000次,执行效率很低,很容易触发超时限制。
解决方案
  1. 首先修正压缩包路径,同时调整文件打开逻辑避免重复打开,参考修正后的代码如下:
import zipfile
import itertools

digits = '0123456789'
# 把压缩包打开逻辑放到循环外,只打开一次
with zipfile.ZipFile('/tmp/alien-zip-2092.zip', 'r') as zip_ref:
    for c in itertools.product(digits, repeat=3):
        password = ''.join(c)
        try:
            zip_ref.extractall(path='/tmp', pwd = bytes(password, 'utf-8'))
            print(f"找到正确密码:{password}")
            break
        except:
            print(f'Password {password} failed')
  1. 如果修正路径后仍提示所有密码错误,说明压缩包使用AES加密,替换为支持AES加密的第三方库pyzipper处理即可,执行pip install pyzipper安装后使用如下代码:
import pyzipper
import itertools

digits = '0123456789'
with pyzipper.AESZipFile('/tmp/alien-zip-2092.zip', 'r') as zip_ref:
    for c in itertools.product(digits, repeat=3):
        password = ''.join(c)
        try:
            zip_ref.extractall(path='/tmp', pwd = bytes(password, 'utf-8'))
            print(f"找到正确密码:{password}")
            break
        except:
            print(f'Password {password} failed')

内容的提问来源于stack exchange,提问作者DuckHunt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:06:01