Jaký je rozdíl mezi tímto formátem:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
a následujícím:
5f4dcc3b5aa765d61d8327deb882cf99
A také,
Jak převést první hash formát na druhý?
Díky předem.
Komentáře
Odpověď
První příklad vypadá jako stínový soubor at: ID (admin
) Algoritmus (1
= MD5) sůl (none) Hash (oLN1UCc1Y3T30QkMcKMSx0
), s hash ve formátu Base64.
Druhý (5f4dcc3b5aa765d61d8327deb882cf99
) se jeví jako hexadecimální řetězec 128 bitů shodný s tím, že je hash MD5 jako dobře.
Avšak při převodu obou na binární & a zpět na jejich opačné formáty se tyto dva hashe neshodují:
-
Base64 binární hodnoty představované hexadecimálním řetězcem (
5f4dcc3b5aa765d61d8327deb882cf99
) jeX03MO1qnZdYdgyfeuILPmQ
. -
Hex řetězec hash base64 (
oLN1UCc1Y3T30QkMcKMSx0
) je naopaka0b3755027356374f7d1090c70a312c7
.------- Edit -----
Jako user1686 zdůraznil: oLN1UCc1Y3T30QkMcKMSx0 je MD5crypt, což je tisíc kol MD5 s doplňky v každém kole. Pokud jsou oba tyto hashe ve skutečnosti ze stejného hesla, mělo by být možné převést přímý hash MD5 na jeho ekvivalent no-salt MD5Crypt tak, že obejdete první výpočet MD5 v MD5Crypt a místo hesla zadáte hash.
Odpovědět
Část za posledním $ je zakódována v base64, což je rozumně kompaktní (čtyři znaky se stávají třemi bajty) způsob, jak reprezentovat binární data jako běžné tisknutelné znaky (ne kontrolní kódy ASCII nebo cokoli, co vyžaduje vyšší bit). Druhý hash je jednoduše kódován hexadecimálně, což je méně efektivní (čtyři znaky se stávají dvěma bajty), ale čitelnější, zejména pro programátory (kteří hex používají stále).
EDIT: Navíc první Algoritmus je téměř jistě md5 crypt , což je iterovaná MD5 s několika dalšími věcmi. Proto pro daný vstup nebude produkovat stejný výstup jako základní MD5. A skutečně vidíme, že ne: pokud převedete část poté, co poslední $ na hex, vyjde a0b3755027356374f7d1090c70a312c7. To také může (na alespoň částečně), protože si myslím, že md5crypt používá vlastní base64, který má stejné znaky jako normální base64 v jiném pořadí.
První hash je příkladem formátu hesla / etc / shadow. $1
znamená MD5crypt a nedostatek čehokoli mezi dalšími dvěma znaky $ znamená, že je nesolený. Za druhé nemáme žádné takové informace; mohlo by to být solené, nebo možná jiné heslo, jiný hash algoritmus nebo obojí. Pravděpodobnější je však být holý MD5 než md5crypt.
Upraveno tak, aby odráželo rozdíl mezi MD5 a md5crypt
Komentáře
- I když je ' s nesolený, $ 1 $ stále není jen holý MD5 – ' s md5crypt , což zahrnuje 1000 kol MD5 s přidáním některých dalších koření.
- Druhý hash je jen md5 (' heslo ').
echo -n 'password' | md5sum
vytváří5f4dcc3b5aa765d61d8327deb882cf99
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. Podobný případ jsem našel i zde odkaz