¿Cuál ' es la diferencia entre estos hash MD5?

¿Cuál es la diferencia entre este formato:

Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0 

y el siguiente:

5f4dcc3b5aa765d61d8327deb882cf99 

Y también,

¿Cómo convertir el primer formato hash en el segundo?

Gracias en avance.

Comentarios

  • Dudo que el primer ejemplo sea solo un hash. Parece que contiene el nombre de usuario en claro y posiblemente otra información . ¿Dónde lo conseguiste? Realmente no es posible repetir el refrito sin conocer el valor de texto claro.
  • Eso ' es lo que yo ' Yo también me lo estoy preguntando. Pero lo obtuve después de ejecutar routersploit en mi enrutador usando Kali Linux y el resultado dice exactamente eso > > Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0. También encontré un caso similar aquí enlace

Respuesta

El primer ejemplo parece un formulario de archivo de sombra en: ID (admin) Algoritmo (1 = MD5) Salt (ninguno) Hash (oLN1UCc1Y3T30QkMcKMSx0), con el hash en lo que parece ser un formato Base64.

El segundo (5f4dcc3b5aa765d61d8327deb882cf99) parece ser una cadena hexadecimal de 128 bits consistente con ser un hash MD5 como bueno.

Sin embargo, al convertir ambos a binarios & y luego volver a sus formatos opuestos, los dos hashes no coinciden:

  • Base64 del valor binario representado por la cadena hexadecimal (5f4dcc3b5aa765d61d8327deb882cf99) es X03MO1qnZdYdgyfeuILPmQ.

  • Por el contrario, la cadena hexadecimal del hash base64 (oLN1UCc1Y3T30QkMcKMSx0) es a0b3755027356374f7d1090c70a312c7.

     ------- Edit ----- 

Como user1686 señaló: oLN1UCc1Y3T30QkMcKMSx0 es MD5crypt, que son mil rondas de MD5 con extras en cada ronda. Si ambos hash son de hecho de la misma contraseña, debería ser posible convertir el hash MD5 directo en su equivalente MD5Crypt sin sal al omitir el primer cálculo MD5 en MD5Crypt y alimentarlo con el hash en lugar de la contraseña.

Responder

La parte después del último $ está codificada en base64, que es una forma razonablemente compacta (cuatro caracteres se convierten en tres bytes) para representar datos binarios como caracteres comunes imprimibles (no códigos de control ASCII ni nada que requiera el bit alto). El segundo hash es simplemente codificado en hexadecimal, que es menos eficiente (cuatro caracteres se convierten en dos bytes) pero más fácil de leer, especialmente para los programadores (que usan hexadecimal todo el tiempo).

EDITAR: Además, el primero Es casi seguro que el algoritmo sea md5 crypt , que es un MD5 iterado con algunas cosas adicionales hechas. Por lo tanto, no va a producir la misma salida que el MD5 base para una entrada dada. Y de hecho vemos que no lo hace: si convierte la pieza después del último $ a hexadecimal, sale a0b3755027356374f7d1090c70a312c7. Eso también podría (en al menos en parte) porque creo que md5crypt usa una base64 personalizada, que tiene los mismos caracteres que la base64 normal en un orden diferente.

El primer hash es un ejemplo del formato de contraseña / etc / shadow. $1 significa MD5crypt, y la falta de algo entre los siguientes dos caracteres $ significa que no tiene sal. No tenemos tal información para el segundo; podría ser salado, o posiblemente una contraseña diferente, un algoritmo hash diferente o ambos. Sin embargo, es más probable que sea MD5 desnudo que md5crypt.

Editado para reflejar la diferencia entre MD5 y md5crypt

Comentarios

  • Incluso si ' no tiene sal, $ 1 $ todavía no es solo MD5 desnudo, es ' s md5crypt , que involucra 1000 rondas de MD5 con algunos otros condimentos agregados.
  • El segundo hash es solo md5 (' contraseña '). echo -n 'password' | md5sum produce 5f4dcc3b5aa765d61d8327deb882cf99

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *