Ingeniería inversa de una sal de hash global a partir de texto plano y hash conocidos

2

Primero que nada, no estoy preguntando qué es un hash, o algo más. Intentaré explicar lo que estoy buscando con claridad:

Digamos que tengo un volcado de una base de datos, todas las contraseñas de esta base de datos están cifradas, las contraseñas tienen una longitud de 40 bytes, por lo que el algoritmo utilizado se basa en sha-1. Sin embargo, también sé que hay una sal (sha1($pass.$salt)) o sha1($salt.$pass) . Puedo registrarme en el sitio web específico con un nombre de usuario y una contraseña de mi elección. Una vez hecho esto, puedo ver cuál es mi contraseña con hash y su valor de texto sin formato (por ejemplo, si me registro en el sitio web con la contraseña "123") y si luego vuelco la base de datos para verificar el hash de mi contraseña (así que en mi caso 123) tendré su valor hash. Pero no tengo la sal. Según lo que tengo, ¿puedo adivinar / forzar la sal utilizada, que se corrige en el código de la aplicación específica (no puedo verlo)?

    
pregunta marc Khayle 03.08.2015 - 02:44
fuente

1 respuesta

2

¿Qué tan buenas son tus habilidades de programación?

No sería demasiado difícil escribir un programa o script que recorra todas las cadenas salt posibles, tome su contraseña "123" e intente sha1($pass.$salt) y sha1($salt.$pass) . Si el hash que sale coincide con el de la base de datos, entonces ha encontrado su sal.

Un posible problema es saber exactamente qué función hash utilizaron. Usted dijo

  

usaron algoritmo basado en sha-1

¿Sabes exactamente qué es eso, o vas a tener que adivinar? Es común que un hash de contraseña ingrese la contraseña y ejecute sha-1 no una vez, sino 100, o 1,000, o 10,000, o 100,000 ... veces antes de poner el hash en la base de datos. Sin saber exactamente cómo han hecho el hash, tendrá muchas más combinaciones en su programa, y podría llevar mucho tiempo ejecutarlo.

    
respondido por el Mike Ounsworth 03.08.2015 - 03:45
fuente

Lea otras preguntas en las etiquetas