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