Cómo identificar hashes [cerrado]

1

¿Cómo puedo identificar un hash? No solo con la longitud, quiero decir: como sé, los hashes específicos tienen conjuntos de caracteres específicos. ¿Donde puedo encontrarlos? Necesito esta información para hacer una herramienta de identificación de hash. (esta es una publicación única, la otra no fue respondida por completo).

    
pregunta Vilius Povilaika 18.06.2015 - 16:46
fuente

3 respuestas

2

Hay una diferencia entre un hash como se define para un protocolo específico y un hash criptográfico. Un hash criptográfico simplemente toma un mensaje de x bits y genera n bits donde x puede ser cualquier número positivo o cero y n es el tamaño de salida del hash. Entonces, en ese sentido, un hash criptográfico no define la codificación ninguna . Un hash criptográfico es indistinguible del azar para una persona que no conoce la entrada (aparte del tamaño de salida). Por lo tanto, no puede distinguir entre SHA-256(x) y SHA-512/256(x) sin conocer x .

Sin embargo, un hash se puede codificar junto con varios parámetros, especialmente si en realidad es un hash de contraseña (que en realidad es una función de derivación de clave basada en contraseña o PBKDF). En ese caso depende del protocolo que genere el hash. Esto es lo que muestran los sitios como el señalado por User456 . Estos valores solo deben interpretarse para esos protocolos específicos. Sin embargo, estos protocolos no se han diseñado a partir de una especificación común; los protocolos no tienen que cumplir ninguna regla . La salida de estos protocolos puede superponerse .

Entonces, la única manera de decir qué hash codificado es para un protocolo específico es comparar el hash codificado con el formato definido por el protocolo. Las expresiones regulares podrían usarse para filtrar a los candidatos. Debería esperar una combinación de hexadecimales, base 64, números decimales y, por supuesto, caracteres separadores para la mayoría de ellos.

    
respondido por el Maarten Bodewes 18.06.2015 - 23:39
fuente
1

Lo mínimo es que no puedes.

Los hash no generan caracteres codificados. Generan bytes , y parece que una buena función hash genera todos sus bytes de salida al azar.

A menudo, las salidas de hash se codifican más tarde para que los humanos las lean o por compatibilidad; por ejemplo, como hex o base64. Pero los datos de cualquier se pueden codificar de esta manera, y no hay manera de distinguir la salida de un hash.

Si ve 256 bits de datos aparentemente aleatorios, podría ser un hash (por ejemplo, SHA-256 o BLAKE2b / 256), de 128 a 255 bits de datos cifrados con un cifrado de bloque de 128 bits (por ejemplo, AES CBC), 256 bits de datos cifrados con un cifrado de flujo (por ejemplo, AES-CTR), datos puramente aleatorios (por ejemplo, salida de /dev/random ), salida de un DRBG (por ejemplo, Yarrow CSPRNG), o cualquiera de un número de otras posibilidades. La única manera de saberlo con seguridad es a través del contexto.

    
respondido por el Stephen Touset 18.06.2015 - 23:41
fuente
0

Eche un vistazo a la siguiente página:
enlace

Le proporcionará algunos ejemplos de hashes. Puede usar herramientas como hashid o hash-identifier para ayudar a identificar varios hashes (ambos se incluyen con Kali si está listo para activar una VM de Linux). La parte difícil, como he visto recientemente, es que a veces es un hash y otras es una contraseña cifrada o hash. O otras veces es un hash codificado en base64, por lo que primero tendría que decodificarlo y luego identificar el hash. Y así, de modo que lo que parece un hash puede no ser solo un hash.

Por lo tanto, en algunos casos, identificar el hash es más difícil que en otros (al menos en mi estimación de principiante, otros aquí pueden proporcionar mejores perspectivas).

    
respondido por el User456 18.06.2015 - 22:33
fuente

Lea otras preguntas en las etiquetas