Probablemente, lo más fácil es descompilar el software.
Las contraseñas suelen estar saturadas con muchas iteraciones (como 100,000) de la función hash para ralentizar los ataques de fuerza bruta que intentan adivinar la contraseña. Normalmente, el código de hashing del lado del servidor se ve así:
hashval = password
count = 0
while(count++ < NUM_HASH_ITERATIONS):
hashval = sha1(hashval + salt)
return hashval
Dependiendo del software que esté intentando romper, es posible que pueda encontrar la constante NUM_HASH_ITERATIONS
en un archivo de configuración, de lo contrario, tendría que descompilar el binario o forzarlo. No sé si existe un software estándar para forzar la fuerza bruta el número de iteraciones, pero los valores típicos, pero no sería demasiado difícil ni consumiría mucha CPU, ya que simplemente lo intentas con hash, y si no es así. T Match, hash otra vez hasta cierto límite como 1 millón
hashval = "password"
count = 0
while(count++ < 1000000):
hashval = sha1(hashval + salt)
if (hashval == "3a58f2b..."):
// We win!
que debería ejecutarse en unos pocos minutos, y pruébelo varias veces con diferentes permutaciones de cómo se combinan el hash y la sal. Tenga en cuenta que hay muchas cosas cuya salida se ve igual a SHA1, así que, a menos que sepa a ciencia cierta que es SHA1, es posible que deba probar esas variantes con MD5, SHA2-256, SHA2-384, SHA2-512, PBKDF2, BCRYPT, SCRYPT, ...