Identyfikator szyfrowania

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

    W wyniku zostaną wymienione wszystkie formaty, których wzorzec pasuje do Twojej próbki.

  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.

Wzorce sygnatur używane przez identyfikator

Na podstawie długości (dla haszów kodowanych szesnastkowo):

Długość (znaki szesnastkowe) Zidentyfikowano jako
32 MD5
40 SHA-1
64 SHA-256
128 SHA-512

Inne długości, jak SHA-224 (56 znaków szesnastkowych) czy SHA-384 (96), nie są rozpoznawane jako hasze (ciąg hex o 56 lub 96 znakach zostanie zaklasyfikowany jako Base64).

Na podstawie prefiksu (rozpoznawane są tylko prefiksy bcrypt):

  • $2a$ $2b$ $2y$ bcrypt

Inne prefiksy w stylu crypt ($1$, $5$, $6$, $argon2i$, $argon2id$, $pbkdf2$) nie są rozpoznawane.

Na podstawie kodowania:

  • Wszystkie znaki należą do [A-Za-z0-9+/=], a długość jest wielokrotnością 4: prawdopodobnie Base64.
  • Trzy segmenty rozdzielone kropką ., każdy złożony ze znaków [A-Za-z0-9_-]: JWT.

Otoczki PEM, bloby OpenSSH ssh-rsa/ssh-ed25519 oraz ciągi Base64url zawierające - lub _ nie są wykrywane.

Czego identyfikacja nie jest w stanie ustalić

  • Dokładnego algorytmu ze 100% pewnością. Ciąg 64 znaków szesnastkowych jest raportowany jako SHA-256, ale może być też SHA3-256 albo BLAKE2s; na podstawie samego szyfrogramu nie da się ich odróżnić. Hasze NTLM (również 32 znaki hex) wyglądają identycznie jak MD5.
  • 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) zawsze są 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 następnie opakowany w Base64, zostanie błędnie rozpoznany. Spróbuj raz zdekodować i uruchomić ponownie.
  • Nietypowe długości. Skrócone hasze (np. pierwsze 16 znaków SHA-256 użyte jako identyfikator) są wyświetlane jako “Base64”, ponieważ reguły dotyczące znaków i długości nakładają się na siebie.
  • Formaty w ramce lub otoczce. Bloki PEM, klucze OpenSSH i format pbkdf2_sha256$... z Django nie są rozpoznawane; usuń otoczkę lub prefiks i spróbuj ponownie, albo użyj dedykowanego parsera.

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.

Powiązane narzędzia

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