MD5 Double Hash crack

19 giugno 2008

Recentemente mi sono accorto che alcuni servizi di hosting conservano nel database le passwords degli accounts in doppia hash md5.
Per doppia hash intendo

MD5(MD5(password)).

Un tentativo di forzare una password in questo stato facendo uso dei servizi online come Md5Crack o come Gdata,sarebbe totalmente inutile.
Il sistema che ho implementato è banale,prevede la ricerca della password a partire da una hash doppia,facendo uso di un dizionario: di ogni voce del dizionario viene calcolata la hash doppia e viene confrontata con l’input,se vi è un match il programma si arresta e fornisce la voce ottenuta.
Sicuramente una ricerca lineare non è il massimo,l’ideale è implementare un database distribuito come il celebre rainbow tables,ma per le hashes doppie attualmente non sembra esserci altro.
Facendo uso di un buon dizionario di passwords,come questo,il programmino impiega un tempo nell’ordine di 30 secondi per scorrere un tale dizionario,e parliamo di circa 40MB.
Nel codice faccio uso di una funzione molto importante per la gestione dei files da applicativi in C :
la funzione mmap,tale funzione consente di mappare un file sullo spazio di indirizzamento virtuale del processo,in pratica vi muoverete sul file come su un vettore void* ,fate il cast a char*e avrete una vera e propria stringa:potete dimenticarvi quindi delle odiose fseek,fwrite etc…
La funzione MD5,presa dalla libreria libssl, con header in

openssl/md5.h

ha 3 argomenti:stringa da criptare,dimensione in bytes della stringa da criptare,stringa su cui riporre l’hash.
Leggi il seguito di questo post »


Iscriviti

Get every new post delivered to your Inbox.