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?


1
Qual variante do Unix você está usando?
Kusalananda

3
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.
JdeBP

Respostas:


27

Isso está documentado no crypt(3)'manpage s , onde pode encontrar através shadow(5)da página de manual , ou passwd(5)'s . Esses links são apropriados para sistemas modernos baseados em Linux; a descrição existe:

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".


2
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.
kasperd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.