Reproduza as senhas / etc / shadow

0

Eu estou tentando reproduzir manualmente um hash de senha / etc / shadow da senha de texto sem formatação e do salt. Vamos tomar como exemplo a seguinte entrada de sombra:

user:$1$/M$5GK8.h6z8o0WQLEOWC.YI/:16764:0:99999:7:::

a senha de texto simples aqui é "toor". Eu tentei anexar (e prefixar) o salt à senha e fazer isso usando o MD5, mas não obtenho o mesmo resultado que no arquivo de senhas, existem outras transformações que o sistema executa no texto simples para deduzir o hash? o comando que usei para gerar o hash:

echo -n "/Mtoor"| md5sum

algo mais que eu notei, o hash salvo no arquivo mapeia para 176 bits, enquanto o tradicional md5 mapeia para 128 bits.

    
por imaibou 26.11.2015 / 11:54

1 resposta

0

Como @otus notou, os hashes não são raw MD5 - crypt () usa MD5Crypt , que envolve algumas dúzias de iterações MD5 (a quantidade exata realmente difere com base no hash em si), alguns bitshifting e alguns pó de pixie.

/* Then just as many characters of the MD5(pw,salt,pw) */

/* On a 60 Mhz Pentium this takes 34 msec */

/* Then something really weird... */

Em suma, não é algo que você possa reproduzir usando o md5sum básico, mas sim chamando a libc crypt (3) ou usando ferramentas como mkpasswd que fazem o mesmo:

# echo -n toor | openssl passwd -stdin -1 -salt /M
$1$/M$5GK8.h6z8o0WQLEOWC.YI/

Além disso, tanto o sal como o hash na saída crypt () são codificados usando uma Base64 ligeiramente modificada (6 bits por byte), enquanto md5sum imprime o hash em hexadecimal (4 bits por byte), de modo que responde pela diferença no comprimento da saída.

    
por 26.11.2015 / 12:51