Python破解压缩包密码问题
所用知识
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.本文由程小航编写!