发布网友 发布时间:2024-09-26 01:49
共1个回答
热心网友 时间:2024-10-26 02:02
前言:日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了。但是zip文件中文件有很重要很必须。那么,我们试一试万能的Python,暴力破解密码。一、破解zip加密文件的思路:1、准备一个加密的zip文件。2、zipfile模块可以解压zip文件。解压时可以提供密码zfile.extractall("./",pwd=password.encode("utf8"))3、itertools.permutations实现全字符的全排列。通过函数itertools.permutations("abc",3)实现全字符的全排列:abc/acb/bca/bac/cab/cba二:实例代码演示:0、zip的压缩方式:本文介绍的zip文件知道密码一共是4位的,密码字符的范围是a-z1-0。并且不存在重复字符的,不会有“aabb”的密码。zip压缩时是选择了zip传统加密!1、解压zip文件:导入zipfile模块,使用其中的extractall()函数。importitertoolsfilename="readme.zip"#创建一个解压的函数,入参为文件名和密码#并使用try-except,避免报错中断程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse2、实现密码字符的全排列:importzipfileimportitertoolsfilename="readme.zip"#创建一个解压的函数,入参为文件名和密码#并使用try-except,避免报错中断程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse#chars是密码可能的字符集chars="abcdefghijklmnopqrstuvwxyz0123456789"forcinitertools.permutations(chars,4):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解压失败。',password)else:print('解压成功。',password)break文件压缩时,一些注意的事项:
三、密码是几位未知,也可以破解密码:查过一些资料,zip压缩文件密码最长为12位,在原来的程序上增加上一个for循环就可以实现破解密码了。
importzipfileimportitertoolsfilename="readme.zip"defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalsechars="abcdefghijklmnopqrstuvwxyz0123456789"foriinrange(12):forcinitertools.permutations(chars,i):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解压失败。',password)else:print('解压成功。',password)break总结:此方法可以是实现破解zip文件的密码,python可以完成一些好玩的事情。