快捷搜索: 王者荣耀 脱发

Python_暴力破解zip压缩文件

目录


前言

当遇到zip压缩文件有密码时,由于zip输入密码错误次数不限制,可以通过python相关库进行暴力破解。

zip两种加密方式:传统加密方式和AES加密方式(不勾选传统加密方式),加密方式不同

故存在两种解压方式。


一、破解原理

通过zipfile库解压文件,itertools库通过字典密码,排列组成密码进行破解。

二、使用步骤

1.引入库

代码如下(示例):
import ziffile   #zip压缩文件
import itertools #无穷迭代器
import pyzipper  #AES解密

2.读入数据

2.1、破解ZIP 传统加密模式

代码如下(示例):

import zipfile
import itertools

filename = "加密文件.zip"


def uncompress(filename, password):
    try:
        with zipfile.ZipFile(filename) as zfile:
            zfile.extractall(./, pwd=password.encode(utf-8))
        return True
    except:
        return False


# 密码字典
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for c in itertools.permutations(chars, 4):
    password = "".join(c)
    result = uncompress(filename, password)
    if not result:
        print("passwrod:%s is error." % password)
    else:
        print(Decompression succeeded,password is:, password)
        break

2.2、破解ZIP AES加密模式

# 首先得安装pyzipper库,pip insall pyzipper
import pyzipper
from threading import Thread
flag= True

def extractFile(zip_file, password):
    password = str(password)
    with pyzipper.AESZipFile(zip_file, r, compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES) as f:
        f.setpassword(password.encode(utf-8))
        try:
            f.extractall()  # 使用密码尝试解压
            print("Found password: " + password)
        except:
            pass  # 解压失败说明密码错误,跳过


def main():
    # 采用AES默认加密算法的压缩文件
    zip_file_name = "AES破解.zip"
    for number in range(1, 9999):
        if flag is True:
            extractFile(zip_file_name, number)

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

总结

此次破解密码方法简单,只需利用zipfile和itertools两个模块,通过python相关语句实现。

经验分享 程序员 微信小程序 职场和发展