Python破解压缩包密码问题

时间:2022-08-02 08:05:51

所用知识

  1. Pool 进程池

  2. try...except 异常处理

  3.枚举的方式

  4.生成器的运用

逻辑关系

通过生成假密码去碰撞!捕获异常,一直碰撞,直到生成的密码与压缩包建立的密码对应,成功拿到正确的密码!

 

具体代码

import zipfile,time
import itertools as its
from multiprocessing import Pool
#author = __rianley__
def extractFile(numer):
password=generate_pwd(numer) #拿到生成器对象,密码字典过大,只能用生成器否则一下就把内存撑爆了!
zFile = zipfile.ZipFile('Suite 6.zip') # 打开zip包
for pwd in password:
try:
zFile.extractall(pwd=bytes(pwd,"utf-8"))
return pwd except Exception as e:
# print(pwd)
continue def generate_pwd(numer): #生成密码
words = "1234568790" #密码范围:当前表示纯数字范围
r = its.product(words, repeat=numer)
for i in r:
pwd = ''
for num in i:
pwd += num
yield pwd if __name__ == '__main__':
p = Pool() #开启进程池
res_list = [] # 定义存放进程的列表
for i in range(1, 30): # 设置 随机密码的位数(如果别人的设置的密码)
res_run = p.apply_async(extractFile,args=(i,)) # res_run = extractFile(zFile,pwd)
res_list.append(res_run) print('正在尝试破解') # 打印一句提示性的信息 for kill in res_list:
data=kill.get() if data:
print('破解成功:密码是:%s'%data)
exit()

  

版本保护

  1.转载请注明出处

  2.该文章以及代码归作者与博客园所有,严禁转载不注明出处的行为!

  3.该文章所阐述的观点,仅代表个人看法,代码仅为学习使用!造成任何商业纠纷与原作者无关!

  4.本文由程小航编写!