Bruteforce hash (few chars)
import hashlib
target = '2f2e2e' #/..
candidate = 0
while True :
plaintext = str (candidate )
hash = hashlib .md5 (plaintext .encode ('ascii' )).hexdigest ()
if hash [- 1 * (len (target )):] == target : #End in target
print ('plaintext:"' + plaintext + '", md5:' + hash )
break
candidate = candidate + 1
#From isHaacK
import hashlib
from multiprocessing import Process , Queue , cpu_count
def loose_comparison (queue , num ):
target = '0e'
plaintext = f"a_prefix{ str (num )} a_suffix"
hash = hashlib .md5 (plaintext .encode ('ascii' )).hexdigest ()
if hash [:len (target )] == target and not any (x in "abcdef" for x in hash [2 :]):
print ('plaintext: ' + plaintext + ', md5: ' + hash )
queue .put ("done" ) # triggers program exit
def worker (queue , thread_i , threads ):
for num in range (thread_i , 100 ** 50 , threads ):
loose_comparison (queue , num )
def main ():
procs = []
queue = Queue ()
threads = cpu_count () # 2
for thread_i in range (threads ):
proc = Process (target = worker , args = (queue , thread_i , threads ))
proc .daemon = True # kill all subprocess when main process exits.
procs .append (proc )
proc .start ()
while queue .empty (): # exits when a subprocess is done
pass
return 0
main ()