python针对zip文件的暴力破解

    科技2025-05-15  6

    参考:https://blog.csdn.net/cjm_01/article/details/106409247?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param 代码:

    # -*- coding: utf-8 -*- """ @func: 暴力破解zip """ import zipfile # from unrar import rarfile import threading import itertools as its # 判断线程是否需要终止 flag = True def save_pwd(): words = '1234567890' r = its.product(words, repeat=4) # repeat要生成多少位的字典 with open("pwd.txt", "w+")as f: for i in r: f.write("".join(i)) f.write("".join("\r")) def extract(password, file): try: password = str(password) file.extractall(pwd=password.encode('utf-8')) # zip解压缩 # file.extractall(pwd=password)#rar解压缩 print("压缩包的密码是:{}".format(password)) global flag flag = False except Exception: pass # 密码错误则跳过 def main(): save_pwd() file = zipfile.ZipFile("test.zip") # 压缩文件 passwords = open('pwd.txt') # 密码字典 for line in passwords.readlines(): # 逐行读取密码 if flag is True: password = line.strip('\n') # 去掉回车 print(line, end="") # 逐个查看当前密码 t = threading.Thread(target=extract, args=(password, file)) t.start() # 开始 t.join() # Parent父线程会等待child子线程运行完再继续运行 if __name__ == '__main__': main()

    代码中pwd.txt为穷举的4位数字字典,在程序启动开始总会生成密码字典,且覆盖存于pwd.txt中。 如果密码不是4位,是更多,则生成密码字典时就要选其它数。如果不知道是几位密码,就需要将密码数位从1到n都穷举一遍。如果密码中有数字或是符号,则需要在穷举时将这些一并加上。测试了一下,如果明确知道是4位密码,普通机器1分钟内可以破解。若是7位数字,则需要比较久的时间,如果再加上26个字母且大小写区分,再加上其它符号一并算上,将是一个很大很大的数字,几天几夜也破解不了。

    Processed: 0.010, SQL: 8