1 #coding=utf-8 2 3 """ 4 用户输入-z参数指定要破解的zip文件,输入-d参数输入字典文件,即可暴力破解加密的zip文件 5 """ 6 7 import optparse,zipfile,threading 8 9 foundpassword = False #当密码找到后,将此置为True,避免继续验证字典中的其它word,提高效率 10 11 def extract_zipfile(a_zipfile,password): 12 global foundpassword 13 try: 14 a_zipfile.extractall(pwd=password) #若密码不对,会返回异常 15 print(\'找到密码:\',password.decode(\'utf-8\')) 16 foundpassword = True 17 except: 18 pass 19 20 def main(): 21 usage = \'Usage: %prog -z <zipfile> -d <dictionaryfile>\' 22 parser = optparse.OptionParser(usage,version=\'v1.0\') 23 parser.add_option(\'-z\',dest=\'zname\', 24 help=\'待破解的zip文件\') 25 parser.add_option(\'-d\',dest=\'dname\', 26 help=\'指定字典文件\') 27 (options,args) = parser.parse_args() 28 if options.zname == None or options.dname == None: 29 print(parser.usage) 30 exit(0) 31 else: 32 zname = options.zname 33 dname = options.dname 34 a_zipfile = zipfile.ZipFile(zname) 35 dictFile = open(dname,\'rb\') 36 for word in dictFile: 37 password = word.strip(b\'\r\n\') 38 t = threading.Thread(target=extract_zipfile,args=(a_zipfile,password)) 39 t.start() 40 if foundpassword == True: 41 exit(0) 42 43 if __name__ == \'__main__\': 44 main() 45
运行后的结果为:
1 c:\Python34\python.exe CrackZipfile.py -z e:\Archive.zip -d e:\dictionary.txt 2 找到密码: 1q3e5t