La decompilazione del software è probabilmente la più semplice.
Le password sono tipicamente sottoposte a hash con molte iterazioni (come 100.000) della funzione di hash per rallentare gli attacchi di forza bruta che cercano di indovinare la password. In genere il codice di hashing sul lato server è simile al seguente:
hashval = password
count = 0
while(count++ < NUM_HASH_ITERATIONS):
hashval = sha1(hashval + salt)
return hashval
A seconda del software che stai cercando di rompere, potresti essere in grado di trovare la costante NUM_HASH_ITERATIONS
in un file di configurazione da qualche parte, altrimenti avresti bisogno di decompilare il file binario per esso o forzarlo brute-force. Non so se esiste un software standard per forzare il numero di iterazioni, ma i valori tipici, ma non sarebbe troppo difficile o intensivo per la CPU poiché si prova a eseguire l'hashing e se non lo fa t match, hash di nuovo fino ad un limite come 1 milione
hashval = "password"
count = 0
while(count++ < 1000000):
hashval = sha1(hashval + salt)
if (hashval == "3a58f2b..."):
// We win!
che dovrebbe essere eseguito in pochi minuti e provarlo un paio di volte con diverse permutazioni su come l'hash e il sale sono combinati. Si noti che ci sono molte cose il cui output è uguale a SHA1, quindi a meno che non si sappia che è SHA1, potrebbe essere necessario provare queste varianti con MD5, SHA2-256, SHA2-384, SHA2-512, PBKDF2, BCRYPT, SCRYPT, ...