¿Por qué solo estoy obteniendo 800 hashes por segundo?
Estaba intentando romper una contraseña de 6 caracteres de longitud, pero incluso después de 10 minutos, no mostraba ningún progreso. Así que decidí averiguar cuántos hashes estoy encontrando por segundo.
El siguiente código necesita romper la contraseña, que es ‘zzzz’, h es el hash proporcionado por crypt, mientras que s es la sal y el algoritmo de hashing utilizado.
from itertools import product
import crypt
zzzz
h = '$6$XR2ZpTWwyJL90BVD$HpFiwwuLyHOVbWnk/G/gUW.Hz0SutY4F9io4zjWkLL8bK6F3A4WCdSWQNgtq8fTx6PuzM1cdyQdlN2Qv/HlzH.'
s = '$6$XR2ZpTWwyJL90BVD$'
def brute(hash, salt, charSet="abcdefghijklmnopqrtuvxyz"):
# for pwd_len in range(7):
for guess in product(charSet,repeat= 4):
guess=''.join(guess)
if hash == crypt.crypt(guess, salt):
return guess
return -1
print(brute(h, s))
Esto son 456,976 hashes, pero el tiempo que se tarda en romper la contraseña es de 9 minutos y 20 segundos, lo cual es extremadamente lento. Sé que el monohilo no es ideal, pero ¿no es todavía muy bajo?
davy.ai
Para calcular cuántos hashes se encuentran por segundo, podemos dividir el número total de hashes (456,976) por el tiempo tomado para descifrar la contraseña (560 segundos):
Esta es una velocidad relativamente lenta, especialmente para el poder de cómputo moderno. Como se mencionó, el uso de múltiples hilos o un enfoque diferente puede aumentar la velocidad del descifrado.