# 字典攻擊import itertools # 迭代器import datetimeimport hashlibimport timedef generatelibary(library, length=8):libararys = itertools.product(library,repeat=length)dic = open("paswordlirbarys.txt","w",encoding='utf-8')#寫模式開啟檔案for i in libararys:dic.writelines(i)dic.writelines("\n")dic.close()#x = hashlib.md5("123".encode(encoding="utf-8")).hexdigest()#hash演算法儲存密碼#202cb962ac59075b964b07152d234b70#print(x)def dict_attack(path,password):file = open(path)for passwords in file:#print(passwords)passwords = passwords.split("\n")[0]if password == hashlib.md5(passwords.encode(encoding="utf-8")).hexdigest():print("你的密碼是:{}".format(passwords))if __name__ == "__main__":#lowercase = 'abcdefghijklmnopqrstuvwxyz'#字元組合#uppercase = 'ABCDEFGHIJKLMNOPQRS'#digits = '0123456789'word = "xiaowng2067"#special = """!"#$%&'( )*+,-./:;<=>?@[]^_`{|}~"""#word = lowercase + uppercase + digits + specialstarttime = datetime.datetime.now() # 獲取當前時間print(time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())))generatelibary(word,length=6) #生成8位數字字典#dict_attack("paswordlirbarys.txt","05213bc82bacf7312806baf095038402")endtime = datetime.datetime.now()print(time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())))print('The time cost: ')print(endtime - starttime)#時間
六位密碼測試效果最好,八位太長,需要時間過多