Como encontrar o algoritmo de hash usado para senhas de hash?
11
Eu tenho a senha de trabalho e posso ver o hash (/ etc / passwd). Como localizo o algoritmo de hash usado para o hash da senha, sem tentar manualmente diferentes algoritmos até encontrar uma correspondência?
Estou muito surpreso que você possa ver um hash /etc/passwd. Eu pensei que todas as variantes do Unix / Linux haviam se mudado para /etc/shadowanos atrás. (Eu sei que esses sistemas ainda apoiar hashes em passwdmas eu não conheço nenhum utilitários que colocá-los lá mais um sistema embarcado, talvez.?
roaima
É o OpenWrt Backfire 10.03. Hashes ainda são armazenados /etc/passwdaqui. Isso, no entanto, não altera o assunto da questão. Faz isso?
Dorin Botan
1
Apenas para constar: os BSDs têm dois arquivos Berkeley DB, roaima. Ainda está dividido, mas não está /etc/shadowe eles não têm arquivo com esse nome.
Se salt for uma sequência de caracteres iniciada com os caracteres "$ id $" seguida por uma sequência opcionalmente terminada por "$", o resultado terá o formato:
$id$salt$encrypted
id identifica o método de criptografia usado no lugar do DES e, em seguida, determina como o restante da cadeia de senha é interpretada. 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 por prefixos 2, 2b, 2x, e 2y(veja a documentação do PassLib ).
Portanto, se uma senha com hash estiver 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 alguns outros métodos:
y: yescrypt
gy: gost-yescrypt
7: scrypt
sha1: sha1crypt
md5: SunMD5
Outras plataformas suportam outros algoritmos, portanto verifique a página de cryptmanual lá. Por exemplo, o OpenBSDcrypt(3) suporta apenas o Blowfish, que ele identifica usando o ID "2b".
Senhas baseadas DES são BTW sempre 13 caracteres e consistir de caracteres alfanuméricos, bem como .e /. Os dois primeiros caracteres são o salt e os outros 11 são um valor de hash (mais ou menos). E é o único dos algoritmos suportados pelos cryptquais é tão fraco que você não pode compensá-lo escolhendo uma senha mais forte.
/etc/passwd
. Eu pensei que todas as variantes do Unix / Linux haviam se mudado para/etc/shadow
anos atrás. (Eu sei que esses sistemas ainda apoiar hashes empasswd
mas eu não conheço nenhum utilitários que colocá-los lá mais um sistema embarcado, talvez.?/etc/passwd
aqui. Isso, no entanto, não altera o assunto da questão. Faz isso?/etc/shadow
e eles não têm arquivo com esse nome.Respostas:
Isso está documentado no
crypt(3)
'manpage s , onde pode encontrar atravésshadow(5)
da página de manual , oupasswd(5)
's . Esses links são apropriados para sistemas modernos baseados em Linux; a descrição existe:Blowfish, também conhecido como
bcrypt
, também é identificado por prefixos2
,2b
,2x
, e2y
(veja a documentação do PassLib ).Portanto, se uma senha com hash estiver 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 alguns outros métodos:
y
: yescryptgy
: gost-yescrypt7
: scryptsha1
: sha1cryptmd5
: SunMD5Outras plataformas suportam outros algoritmos, portanto verifique a página de
crypt
manual lá. Por exemplo, o OpenBSDcrypt(3)
suporta apenas o Blowfish, que ele identifica usando o ID "2b".fonte
.
e/
. Os dois primeiros caracteres são o salt e os outros 11 são um valor de hash (mais ou menos). E é o único dos algoritmos suportados peloscrypt
quais é tão fraco que você não pode compensá-lo escolhendo uma senha mais forte.