Identyfikator szyfrowania

Wklej wartość do rozpoznania.

Rozpoznaj format

Przeglądasz zrzut bazy danych i widzisz ciągi takie jak $2y$10$... lub 5f4dcc3b5aa765d61d8327deb882cf99, i zanim zaczniesz je łamać lub odwracać, musisz wiedzieć, na co patrzysz. Ten identyfikator stosuje heurystyki dotyczące długości, zestawu znaków, struktury oraz prefiksów, aby oszacować najbardziej prawdopodobny algorytm lub sposób kodowania stojący za próbką szyfrogramu.

Jak rozpoznać tekst szyfrowany

  1. 1

    Wklej próbkę

    Pojedynczy hasz, blok szyfrogramu, token lub zakodowany ciąg.

  2. 2

    Zobacz pasujące formaty

    Wynik porządkuje pasujące formaty: najpierw te najbardziej prawdopodobne, potem to, czym jeszcze może być próbka.

  3. 3

    Zweryfikuj krzyżowo

    Jeśli pasuje kilka formatów, użyj łamacza haszów lub dekodera, aby potwierdzić właściwy.

  4. 4

    Miej na uwadze niepewność

    Identyfikacja na podstawie samej próbki rzadko jest jednoznaczna; jeśli nic nie pasuje, narzędzie to sygnalizuje.

Formaty rozpoznawane przez identyfikator

Hasze szesnastkowe, rozpoznawane po długości (wielkie lub małe litery):

Długość (znaki szesnastkowe) Najbardziej prawdopodobne
8 CRC32 lub inna 32-bitowa suma kontrolna
32 MD5, MD4 lub NTLM
40 SHA-1 lub RIPEMD-160
56 SHA-224 lub SHA3-224
64 SHA-256 lub SHA3-256
96 SHA-384 lub SHA3-384
128 SHA-512 lub SHA3-512

Na przykład d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01 ma 56 znaków: to hasz SHA-224 słowa „password”.

Hasze haseł, rozpoznawane po prefiksie i strukturze:

  • $2a$, $2b$, $2y$: bcrypt, ze współczynnikiem kosztu odczytanym z prefiksu
  • $1$: md5crypt; $apr1$: Apache MD5 (htpasswd)
  • $5$ i $6$: sha256crypt i sha512crypt
  • $y$: yescrypt; $7$ i $scrypt$: scrypt
  • $argon2id$, $argon2i$, $argon2d$: Argon2
  • $pbkdf2-sha256$ (passlib) i pbkdf2_sha256$ (Django): PBKDF2
  • $P$ i $H$: phpass (WordPress, phpBB); $S$: Drupal 7
  • *, a po niej 40 znaków szesnastkowych: MySQL 4.1+
  • {SSHA}, {SHA} i pozostałe popularne schematy LDAP

W typowych przypadkach wynik pokazuje też tryb hashcat (-m): MD5 0, NTLM 1000, SHA-1 100, SHA-256 1400, SHA-512 1700, bcrypt 3200, md5crypt 500, sha256crypt 7400, sha512crypt 1800, phpass 400, Drupal 7 7900, MySQL 4.1+ 300 i Django PBKDF2-SHA256 10000.

Klucze, tokeny i identyfikatory:

  • Bloki PEM (-----BEGIN ...-----): klucze prywatne (RSA, EC, OpenSSH, PKCS #8), klucze prywatne chronione hasłem, klucze publiczne, certyfikaty X.509 i żądania podpisania certyfikatu
  • OpenPGP w opakowaniu ASCII: zaszyfrowane wiadomości (BEGIN PGP MESSAGE), bloki kluczy i podpisy
  • Klucze publiczne OpenSSH (ssh-rsa, ssh-ed25519, ecdsa-sha2-...)
  • Tokeny JWT (JSON Web Token): nagłówek jest dekodowany, aby pokazać alg i typ, a token z pięciu części z polem enc to zaszyfrowany JWE
  • UUID wraz z wersją (identyfikator, a nie hasz)

Kodowania, tylko gdy nic bardziej konkretnego nie pasuje:

  • Hex, Base32, Base64 i Base64url z długością po zdekodowaniu w bajtach oraz kodowanie URL (procentowe).
  • Dane hex lub Base64, których długość po zdekodowaniu jest wielokrotnością 16 bajtów, mogą być wynikiem szyfru blokowego, takiego jak AES; przy 128, 256, 384 lub 512 bajtach mogą to być także dane zaszyfrowane RSA albo podpis. Dane Base64 lub Base32 o długości 16, 20, 28, 32, 48 lub 64 bajtów mogą być surowym haszem MD5, SHA-1 lub SHA-2.

Czego identyfikacja nie jest w stanie ustalić

  • Dokładnego algorytmu ze 100-procentową pewnością. Ciąg 64 znaków szesnastkowych jest raportowany jako SHA-256 lub SHA3-256, ale BLAKE2s i inne 256-bitowe hasze wyglądają dokładnie tak samo. Hasze MD5, MD4 i NTLM mają po 32 znaki szesnastkowe.
  • Szyfru, którym zaszyfrowano dane. Zaszyfrowane dane wyglądają losowo. Ich długość jedynie zawęża możliwości, więc AES lub RSA to zawsze tylko możliwość, nigdy pewność.
  • Siły klucza. Hasz bcrypt pokazuje w prefiksie współczynnik kosztu ($2y$10$ = koszt 10), ale nie siłę samego hasła.
  • Czy zastosowano sól. Nowoczesne hasze haseł (bcrypt, Argon2) są zawsze solone; stare (surowe MD5/SHA) mogą być, ale nie muszą.
  • Tekstu jawnego. Identyfikacja nie odwraca hasza; łamanie to osobny proces, dozwolony wyłącznie na własnych danych.

Kiedy identyfikator się myli

  • Tokeny z własnym prefiksem. Aplikacje czasem opakowują hasz własnym prefiksem; najpierw usuń tę otoczkę.
  • Podwójne kodowanie. Binarny hasz zapisany szesnastkowo, a potem opakowany w Base64, zostanie rozpoznany błędnie. Zdekoduj go raz i sprawdź ponownie.
  • Nietypowe długości. Skrócone hasze (np. pierwsze 16 znaków SHA-256 użyte jako identyfikator) są rozpoznawane jako zwykłe dane szesnastkowe, bo ta długość nie odpowiada żadnemu haszowi z tabeli powyżej.
  • Kilka wartości naraz. Sprawdzana jest jedna wartość. Jeśli wkleisz listę haszów, sprawdzona zostanie tylko pierwsza linia; pozostałe wklejaj pojedynczo.

Przykłady zastosowań

  • Audyty bezpieczeństwa: katalogowanie typów haszów w całej bazie kodu przed migracją kryptografii.
  • Wyzwania CTF: szybki pierwszy rzut oka na nieznany fragment danych.
  • Reagowanie na incydenty: identyfikacja formatu wyciekłych danych uwierzytelniających.
  • Debugowanie frameworków: ustalenie, jakie kodowanie generuje dana biblioteka.

Przypomnienie o etyce

Identyfikacja formatu hasza to badanie pasywne. Łamanie cudzego hasza bez upoważnienia narusza przepisy o nadużyciach komputerowych w większości jurysdykcji. Pracuj wyłącznie na haszach, które należą do ciebie lub które masz prawo analizować.

Najczęściej zadawane pytania

Częściowo: MD5 ma 32 znaki szesnastkowe, a SHA-1: 40. Jeśli oba mieszczą się w tym samym zakresie długości, nie da się ich rozróżnić na podstawie samego hasza. Zwykle rozstrzyga kontekst (nazwa kolumny w bazie danych, ustawienia domyślne frameworku lub wyciekły schemat).

Nie. Służy wyłącznie do identyfikacji. Odwrócenie hasza lub odszyfrowanie szyfrogramu wymaga osobnych narzędzi (oraz klucza lub zasobów obliczeniowych potrzebnych do złamania) i jest legalne wyłącznie w odniesieniu do własnych materiałów.

Argon2id (lub bcrypt przy wysokim współczynniku kosztu) jest obecnie zalecanym rozwiązaniem. PBKDF2-SHA256 oraz scrypt pozostają akceptowalne. Zwykły MD5, SHA-1 lub niesolony SHA-256 nie są bezpieczne do przechowywania haseł.

Nie. Wklejona wartość jest wysyłana na nasz serwer w celu sprawdzenia formatu, ale nie jest zapisywana w żadnej bazie danych ani dodawana do linku strony. Między oboma krokami pozostaje w tej karcie przeglądarki, a przycisk „Zacznij od nowa” ją usuwa.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach