900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python_暴力破解zip压缩文件

Python_暴力破解zip压缩文件

时间:2019-01-14 06:23:20

相关推荐

Python_暴力破解zip压缩文件

目录

前言

一、破解原理

二、使用步骤

1.引入库

2.读入数据

2.1、破解ZIP 传统加密模式

2.2、破解ZIP AES加密模式

总结

前言

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

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

故存在两种解压方式。

一、破解原理

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

二、使用步骤

1.引入库

代码如下(示例):

import ziffile#zip压缩文件import itertools #无穷迭代器import pyzipper #AES解密

2.读入数据

2.1、破解ZIP 传统加密模式

代码如下(示例):

import zipfileimport itertoolsfilename = "加密文件.zip"def uncompress(filename, password):try:with zipfile.ZipFile(filename) as zfile:zfile.extractall('./', pwd=password.encode('utf-8'))return Trueexcept: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 pyzipperimport pyzipperfrom threading import Threadflag= Truedef 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/cbaitertools.permutations("abc",3)

总结

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。