Zidentyfikuj algorytm hash
- Panel
- Dokumentacja
- API
Czym jest hash kryptograficzny?
Hash (lub odcisk kryptograficzny) to wynik funkcji, która przekształca dane wejściowe o dowolnym rozmiarze (hasło, plik, ciąg) w ciąg o stałym rozmiarze. Ta funkcja jest jednokierunkowa: z hasza matematycznie niemożliwe jest odzyskanie wejścia oryginalnego. Dwa identyczne wejścia zawsze produkują ten sam hash, ale najmniejsza zmiana wejścia całkowicie modyfikuje wynik.
Nasze narzędzie identyfikuje prawdopodobny algorytm hasza na podstawie jego formatu i próbuje lookupu względem słownika ultraczęstych haseł, wcześniej obliczonych na głównych algorytmach.
Jak zidentyfikować hash?
Identyfikacja opiera się na trzech wskazówkach:
- Długość: każdy algorytm produkuje odcisk o stałym rozmiarze.
- Format: czysty szesnastkowy, Base64 lub Modular Crypt Format ze specyficznymi prefiksami.
- Prefiks: nowoczesne hashe haseł podążają za formatem
$id$params$salt$hash, gdzieidjednoznacznie identyfikuje użytą funkcję.
Typowe długości szesnastkowe
- 8 znaków: CRC32 (suma kontrolna, nie hash kryptograficzny)
- 32 znaki: MD5, MD4, NTLM, RIPEMD-128
- 40 znaków: SHA-1, RIPEMD-160
- 64 znaki: SHA-256, SHA3-256
- 96 znaków: SHA-384, SHA3-384
- 128 znaków: SHA-512, SHA3-512, Whirlpool
Sama długość nie wystarcza, aby wyciągnąć wniosek: MD5 i NTLM dzielą ten sam rozmiar 32 znaków hex, na przykład. Nasze narzędzie zwraca wtedy listę możliwych algorytmów.
Prefiksy Modular Crypt Format
Hashe haseł pochodzące z crypt() lub nowoczesnych bibliotek używają jawnego prefiksu:
$1$: MD5 crypt$5$: SHA-256 crypt$6$: SHA-512 crypt$2y$,$2a$,$2b$: Bcrypt (warianty w zależności od platformy)$argon2i$,$argon2id$,$argon2d$: Argon2 (warianty użycia, Argon2id jest dziś zalecany)
Przykład hasza Bcrypt
$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Przypadki użycia
- Analiza wycieków danych: identyfikacja algorytmu używanego przez skompromitowaną bazę w celu oceny trudności ataku.
- Debug: szybkie potwierdzenie, który algorytm wygenerował odcisk znaleziony w odpowiedzi API lub dzienniku.
- Audyt bezpieczeństwa: zlokalizowanie systemu, który nadal przechowuje hasła w MD5 lub SHA-1 (do zabronienia).
- Forensyka: scharakteryzowanie artefaktu w dochodzeniu.
Dlaczego hash nie jest odwracalny
Funkcja hash jest zaprojektowana, aby być jednokierunkowa. Nie istnieje żaden algorytm „deszyfrowania hasza", ponieważ hash nie jest szyfrowaniem: to projekcja. Kilka różnych wejść może teoretycznie produkować ten sam hash (kolizja), więc nawet znając wejście, które produkuje prawidłowy hash, nie masz gwarancji, że to oryginalne wejście.
W praktyce „złamanie" hasza oznacza masowe testowanie wejść kandydatów, aż znajdzie się to, którego odcisk pasuje. To robią ataki słownikowe i brute force.
Wbudowany lookup słownikowy
Nasze narzędzie integruje minisłownik 39 ultraczęstych haseł: pusty ciąg,
password, admin, 123456, qwerty,
letmein itp. Te 39 pozycji jest obliczonych wstępnie na 10 algorytmach
(MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM itp.). Jeśli twój hash odpowiada jednemu z tych odcisków,
narzędzie zwraca ci hasło jawne.
Ta funkcjonalność ilustruje, dlaczego proste hashe nie są odpowiednie dla haseł: atakujący nie musi nawet obliczać, konsultuje tabelę.
Prosty hash vs hash hasła
Nie wszystkie hashe są równe dla przechowywania haseł:
- Proste hashe (MD5, SHA-256, SHA-512): zaprojektowane, aby były szybkie, co jest wadą, gdy chce się oprzeć atakowi brute force. Nie zawierają domyślnie soli, więc dwóch użytkowników z tym samym hasłem będzie miało ten sam hash, narażając się na ataki tabelami precyzyjnie obliczonymi (rainbow tables).
- Hashe haseł (bcrypt, scrypt, Argon2): zaprojektowane, aby były wolne z założenia, integrują losową sól i konfigurowany współczynnik kosztu. Argon2id to dziś stan sztuki zalecany przez OWASP.
Jak korzystać z narzędzia
- Wklej hash w polu wprowadzania.
- Narzędzie wykrywa format (długość, prefiks) i proponuje możliwe algorytmy.
- Jeśli hash odpowiada ultraczęstemu hasłu, jawne hasło się wyświetla.
- W przeciwnym razie otrzymujesz listę kandydujących algorytmów do dalszego eksplorowania dedykowanym narzędziem.
Najczęściej zadawane pytania
Dlaczego mój hash bcrypt nie pasuje do słownika?
Bcrypt używa unikalnej losowej soli na hash: nawet z hasłem password, każdy
użytkownik produkuje inny hash. Wstępne obliczenie słownikowe więc nie działa. To dokładnie
właściwość, która czyni bcrypt odpornym na ataki tabelami.
Co zrobić, jeśli kilka algorytmów jest możliwych dla tej samej długości?
Skrzyżuj z innymi wskazówkami: źródło hasza (Active Directory wskazuje na NTLM, Linux
/etc/shadow na SHA-512 crypt, stara baza MySQL na MD5 itp.) i kontekst aplikacyjny.
Przy równej długości MD5 pozostaje statystycznie najbardziej prawdopodobne na starych systemach.
Jak „złamać" hash w praktyce?
Do legalnych testów bezpieczeństwa (audyt, pentest) standardowe narzędzia to John the Ripper i hashcat. Akceptują masywne wordlisty (rockyou itp.) i wykorzystują GPU do testowania miliardów kandydatów na sekundę. Wykonalność zależy od algorytmu: MD5 i SHA-1 szybko ustępują, bcrypt i Argon2 spowalniają atak o kilka rzędów wielkości.
Czy wbudowany słownik jest dostępny do wglądu?
Słownik jest celowo minimalny (39 pozycji) i służy do zilustrowania słabości prostych haszy na trywialnych hasłach. Dla poważnego pokrycia użyj zewnętrznej wordlisty (rockyou, SecLists) z John the Ripper lub hashcat.
Czy można „zdekodować" hash?
Nie. Hash nie jest szyfrowaniem: nie istnieje funkcja odwrotna. Każda strona, która obiecuje „zdekodować hash", w rzeczywistości stosuje lookup w wcześniej obliczonej bazie. Jeśli twoje hasło jest unikalne i długie, nie jest w niej obecne.
Przykładowe zapytanie
curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
-H "Content-Type: application/json" \
-d '{"hash":"..."}'
Schemat wejściowy
| Pole | Typ | Wymagane | Domyślnie |
|---|---|---|---|
hash |
text | ✓ | – |
Punkty końcowe
GET https://cdrn.fr/api/v1/tools- lista wszystkich dostępnych narzędziGET https://cdrn.fr/api/v1/tools/hash-identifier- zwraca schemat dla tego narzędziaPOST https://cdrn.fr/api/v1/tools/hash-identifier/execute- uruchamia to narzędzie z payloadem JSON