Como encontrar o algoritmo de hash usado para hash de senhas?
772
Eu tenho a senha de trabalho e posso ver o hash (/etc/passwd). Como faço para encontrar o algoritmo de hash usado para fazer o hash da senha, sem tentar manualmente diferentes algoritmos até encontrar uma correspondência?
Se salt for uma string de caracteres começando com os caracteres "$ id $" seguidos por uma string terminada opcionalmente por "$", então o resultado terá o seguinte formato:
$id$salt$encrypted
id identifica o método de criptografia usado em vez de DES e isso determina como o restante da string de senha é interpretado. Os seguintes valores de id são suportados:
ID | Method
─────────────────────────────────────────────────────────
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
Blowfish, também conhecido como bcrypt, também é identificado pelos prefixos 2, 2b, 2xe 2y(consulte a documentação do PassLib ).
Portanto, se uma senha com hash for armazenada no formato acima, você poderá encontrar o algoritmo usado observando o id ; caso contrário, é crypto algoritmo DES padrão (com um hash de 13 caracteres) ou crypto DES "grande" (estendido para suportar senhas de 128 caracteres, com hashes de até 178 caracteres) ou DES estendido BSDI (com um _prefixo seguido por um hash de 19 caracteres).
Algumas distribuições usam libxcrypt que suporta e documenta mais alguns métodos:
y: simcriptografia
gy: gost-yescrypt
7: criptografar
sha1: sha1crypt
md5: SunMD5
Outras plataformas suportam outros algoritmos, então verifique a página de cryptmanual lá. Por exemplo, o OpenBSDcrypt(3) suporta apenas o Blowfish, que ele identifica usando o id “2b”.
Isso está documentado na
crypt(3)
página de manual de , que você pode encontrar nashadow(5)
página de manual de oupasswd(5)
de . Esses links são apropriados para sistemas modernos baseados em Linux; a descrição lá é:Blowfish, também conhecido como
bcrypt
, também é identificado pelos prefixos2
,2b
,2x
e2y
(consulte a documentação do PassLib ).Portanto, se uma senha com hash for armazenada no formato acima, você poderá encontrar o algoritmo usado observando o id ; caso contrário, é
crypt
o algoritmo DES padrão (com um hash de 13 caracteres) oucrypt
o DES "grande" (estendido para suportar senhas de 128 caracteres, com hashes de até 178 caracteres) ou DES estendido BSDI (com um_
prefixo seguido por um hash de 19 caracteres).Algumas distribuições usam libxcrypt que suporta e documenta mais alguns métodos:
y
: simcriptografiagy
: gost-yescrypt7
: criptografarsha1
: sha1cryptmd5
: SunMD5Outras plataformas suportam outros algoritmos, então verifique a página de
crypt
manual lá. Por exemplo, o OpenBSDcrypt(3)
suporta apenas o Blowfish, que ele identifica usando o id “2b”.