La forma más sencilla de hacer hashing de una contraseña con múltiples algoritmos hash diferentes [cerrado]

0

Tengo una lista de contraseñas de texto simple que me gustaría trocear con varios algoritmos de hash diferentes (con fines educativos). Como mínimo, me gustaría obtener hashes bajo MD5, SHA1, SHA256, (con y sin sales), bcrypt, PBKDF2 y NTLM. Ya que hashcat admite todos estos, pensé que el enfoque más simple sería ejecutar hashcat en las contraseñas con todos los diferentes algoritmos. .

Sin embargo, para mi sorpresa (y frustración), ¡no he podido encontrar una forma sencilla de hacer esto en hashcat ! Como hashcat está orientado a romper contraseñas ya hash, requiere una lista de hashes, no plaintexts .

Por lo tanto, ¿hay una manera de simplemente ejecutar cada algoritmo en hashcat con una contraseña en claro - para obtener su valor de hash?

Nota: Realmente no me importa si es hashcat que utilizo o no, solo busco una forma sencilla de hash algunas contraseñas con varios algoritmos hash diferentes, minimizando la cantidad Tengo que hacer scripting. Por lo tanto, si tiene una herramienta o un enfoque mejor, compártala.

    
pregunta hakoja 08.08.2014 - 16:04
fuente

2 respuestas

2

En la mayoría de los sistemas operativos UNIXoid, el programa de línea de comandos openssl debería estar disponible. Implementa la mayoría de los hashes que mencionas. Para usarlo solo con hash, canalice la salida de echo -n a openssl dgst -[ALGORITHM] . Para calcular el hashsum SHA1 de "Hello World", por ejemplo, use esto:

 echo -n "Hello World" | openssl dgst -sha1

openssl dgst admite los siguientes algoritmos: md5, md4, md2, sha1, sha, mdc2, ripemd160.

    
respondido por el Philipp 08.08.2014 - 16:29
fuente
1

Python tiene una biblioteca llamada passlib que contiene todos esos algoritmos. Incluyendo NTLM que se divide en nthash y lmhash . Podría crear una serie de esquemas:

schemes = ["md5_crypt", ...]

Luego configure un contexto de cripta con esa lista:

pwd_context = CryptContext(schemes=["md5_crypt", "des_crypt"])

Luego haga un bucle a través de len(schemes) calling:

hash = pwd_context.encrypt("passwordtohash", scheme=schemes[i])

Editar
No parece ser tan simple. Estoy investigando una vez que tenga un script de trabajo lo publicaré.

Ejemplo de uso
Agregar sal usando encrypt () Descargar PassLib

    
respondido por el RoraΖ 08.08.2014 - 16:35
fuente

Lea otras preguntas en las etiquetas