Mám funkční heslo a vidím hash (/etc/passwd). Jak najdu hašovací algoritmus použitý k hašování hesla, aniž bych ručně zkoušel různé algoritmy, dokud nenajdu shodu?
Přijatá odpověď:
To je zdokumentováno v crypt(3)
manuálovou stránku, kterou najdete přes shadow(5)
manpage nebo passwd(5)
s. Tyto odkazy jsou vhodné pro moderní systémy založené na Linuxu; popis je zde:
Pokud sůl je znakový řetězec začínající znaky „$id $“
následovaný řetězcem volitelně ukončeným „$“, pak má výsledek
tvar:$id$salt$encrypted
id identifikuje použitou metodu šifrování namísto DES a to pak
určuje, jak bude interpretován zbytek řetězce hesla. Jsou podporovány
následující hodnoty id: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, také známý jako bcrypt
, je také identifikován předponami 2
, 2b
, 2x
a 2y
(viz dokumentace PassLib).
Pokud je tedy hashované heslo uloženo ve výše uvedeném formátu, můžete použitý algoritmus najít pohledem na id; jinak je to crypt
výchozí algoritmus DES (s 13znakovým hashem) nebo „velký“ crypt
's DES (rozšířený tak, aby podporoval 128znaková hesla, s hashem o délce až 178 znaků), nebo BSDI rozšířený DES (s _
prefix následovaný 19znakovým hashem).
Některé distribuce používají libxcrypt, který podporuje a dokumentuje několik dalších metod:
y
:yescryptgy
:gost-yescrypt7
:scryptsha1
:sha1cryptmd5
:SunMD5
Jiné platformy podporují jiné algoritmy, proto zkontrolujte crypt
tam manuálová stránka. Například crypt(3)
OpenBSD podporuje pouze Blowfish, kterou identifikuje pomocí id "2b".