Una parte de mi archivo /etc/login.defs
se ve así:
ENCRYPT_METHOD SHA512
# Define the number of SHA rounds.
# If not specified, the libc will choose the default number of rounds (5000).
# The values must be inside the 1000-999999999 range.
# If only one of the MIN or MAX values is set, then this value will be used.
# If MIN > MAX, the highest value will be used.
#
# SHA_CRYPT_MIN_ROUNDS 5000
SHA_CRYPT_MAX_ROUNDS 6000
Por lo que entiendo de esto, es que la contraseña pasará a través de 6000 rondas de hash.
Ahora, cuando usé una herramienta como hashcat
, ¿cómo le digo que el hash ha pasado por el número de rondas 'x'?
Soy capaz de usar hashcat así: hashcat -m 1800 -a 0 -o found.txt hash.txt rockyou.txt
y todavía puedo encontrarlo. ¿Es capaz de calcular el número de rondas por sí mismo?
Editar : acabo de descubrir que la caja de Linux en realidad no estaba usando 6000 rondas de hash, aunque pensé que la había configurado para usar 6000 rondas. En su lugar, fue sólo 5000.
Con algunos códigos Python, pude replicar el cifrado de contraseña "SHA512" en Linux:
from passlib.hash import sha512_crypt
sha512_crypt.encrypt("testing123",rounds=6000,salt="6EGwX1iP")
El hash resultante es $6$rounds=6000$6EGwX1iP$oMerxGPimb/4ZXcI0Vbt87sNfw07eh7VPzcQwHOls8t3hLYGLQR0KjncrpyAjLTfPC3Fj7jhFoZKeuPRfTbJa/
Esta cadena, por supuesto, tiene el número de rondas que se pueden pasar a hashcat
.