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
