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' ') 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:Python34python.exe CrackZipfile.py -z e:Archive.zip -d e:dictionary.txt 2 找到密码: 1q3e5t