import hashlib import math from datetime import datetime #INIT INPUT mdhash = "9491876179d7a80bb5c86f15dbe31422" numstart = 0 numend = 88000000 #INPUT DATA #mdhash = input("INPUT MD5 HASH: ") #numstart = int(input("INPUT START INDEX: ")) #numend = int(input("INPUT END INDEX: ")) #print() #PRINT HEADER print("########## INPUT ###########") print("MD5 HASH: " + str(mdhash)) print("START INDEX: " + str(numstart)) print("END INDEX: " + str(numend)) print("") #PRINT DATE-TIME dateTimeObj = datetime.now() timestampStr = dateTimeObj.strftime("%m/%d/%Y, %H:%M:%S") print("########## SYSTEM ##########") print("STATUS: CRACKING MD5 HASH") print("METHOD: brute_force_ABC_abc_123") print("START TIMESTAMP: " + timestampStr) print("") #DEFINE LEX lex = [" ","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"] numbase = len(lex) res = 0 powres = 0 mant = 0 num = 0 num2 = 0 found = False num2 = numstart while num2 < numend: num2 = num2 + 1 num = num2 mant = math.floor(math.log(num,numbase)) strres = "" while mant >= 0: powres = pow(numbase, mant) res = math.floor(num / powres) strres = strres + lex[res] num = num - math.floor(res * powres) mant = mant - 1 #GENERATE MD5 FROM TRY md1 = hashlib.md5(strres.encode()) md2 = md1.hexdigest() #CHECK TO SEE IF TRY IS SAME AS INPUT if md2 == mdhash: #PRINT FOOTER, FOUND dateTimeObj = datetime.now() timestampStr = dateTimeObj.strftime("%m/%d/%Y, %H:%M:%S") print("########## RESULT ##########") print("STATUS: FOUND") print("RESULT: " + strres) print("END TIMESTAMP: " + timestampStr) found = True if found == True: break #PRINT FOOTER, NOT FOUND if found == False: dateTimeObj = datetime.now() timestampStr = dateTimeObj.strftime("%m/%d/%Y, %H:%M:%S") print("########## RESULT ##########") print("STATUS: NOT FOUND") print("END TIMESTAMP: " + timestampStr) print() input("Press ENTER to exit...")