Python暴力破解zip加密压缩包文件

643 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言:

日常工作中,会遇到一些[加密]的zip文件,但是因为某些原因或者时间过长,密码不知道了。 但是zip文件中文件有很重要很必须。那么,我们试一试万能的Python,暴力破解密码。

所谓暴力破解,就是利用计算机的高速运行能力进行密码穷举,就像人类一样一次又一次的尝试输入密码,而输入密码的人换成了计算机,那速度就不可想象了,但对于长密码。计算机可能也无能为力。比如七八位数在加上字母,全排列组合,成指数级增长,堪称“大数字”,但未来随着计算机的运行能力进一步提升,相信也会一步步的突破,说不定也成指数级增长。不过对于几位数字而言。破解轻而易举

# zipfile模块可以解压zip文件,为解压提供密码
zf.extractall("./", pwd=password.encode("utf-8"))
#实现全字符的全排列abc/acb/cba/cab/bca/bac
itertools.permutations("abc",3)

==itertools==模块可以提供全排列方法,比如abc,全排列三位,就会有6种组合,分别是abc/acb/cba/cab/bca/bac

提前准备两个模块zipfile和itertools 注意:.py文件需与待破解的压缩包在一个目录下 全代码如下:

#导入所需模块
import zipfile
import itertools

# 待解压文件名
filename = "加密文件.zip"


# 定义函数,传入密码对文件进行解压
def uncompress(filename, password):
    try:
        with zipfile.ZipFile(filename) as zf:
            # ./表示当前文件夹,密码选择utf-8编码
            zf.extractall("./", pwd=password.encode("utf-8"))
        return True
    except:
        return False


# 生成候选集a-z,0-9,使用全排列的形式生成密码字典
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for c in itertools.permutations(chars, 4):
    password = "".join(c)
    print(password)
    result = uncompress(filename, password)
    if not result:
        print("解压失败", password)
    else:
        print("解压成功", password)
        break

在这里插入图片描述