Identificer en hash' algoritme

identificerer den sandsynlige algoritme for en hash (MD5, SHA-1, SHA-256, bcrypt, argon2…) ud fra dens længde og format, og forsøger at finde den klare tekst via en ordbog over almindelige adgangskoder
Indsæt enhver hash (hexadecimal, bcrypt $2y$..., argon2 $argon2id$...). Værktøjet detekterer den sandsynlige algoritme.

Hvad er en kryptografisk hash?

Et hash (eller kryptografisk fingeraftryk) er resultatet af en funktion, der transformerer en inputdata af vilkårlig størrelse (en adgangskode, en fil, en streng) til en streng på fast størrelse. Denne funktion er envejs: fra en hash er den det matematisk umuligt at finde den originale post. To identiske input producerer altid den samme hash, men den mindste ændring i input ændrer fuldstændig resultatet.

Vores værktøj identificerer den sandsynlige algoritme for en hash baseret på dets format, og forsøger et opslag mod en ordbog med ultra-almindelige adgangskoder forudberegnet på hovedalgoritmerne.

Hvordan identificerer man en hash?

Identifikation er baseret på tre spor:

  • Længde: hver algoritme producerer et fodaftryk af fast størrelse.
  • Formatet: rent hexadecimalt, Base64 eller Modular Crypt Format med præfikser specifik.
  • Præfikset: Moderne kodeords-hasher følger formatet $id$params$salt$hash, hvor id entydigt identificerer funktionen brugt.

Almindelige hexadecimale længder

  • 8 tegn: CRC32 (checksum, ikke en kryptografisk hash)
  • 32 tegn: MD5, MD4, NTLM, RIPEMD-128
  • 40 tegn: SHA-1, RIPEMD-160
  • 64 tegn: SHA-256, SHA3-256
  • 96 tegn: SHA-384, SHA3-384
  • 128 tegn: SHA-512, SHA3-512, Whirlpool

Længde alene er ikke nok til at konkludere: MD5 og NTLM deler samme størrelse på 32 tegn hex, for eksempel. Vores værktøj returnerer derefter listen over mulige algoritmer.

Modulære krypteringsformatpræfikser

Adgangskode-hash fra crypt() eller moderne biblioteker bruger en eksplicit præfiks:

  • $1$: MD5-krypt
  • $5$: SHA-256 krypt
  • $6$: SHA-512 krypt
  • $2y$, $2a$, $2b$: Bcrypt (varianter afhængigt af platform)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (varianter af brug, og Argon2id anbefales i dag)

Bcrypt hash-eksempel

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Brug cases

  • Analyse af datalæk: Identificer den algoritme, der bruges af en database kompromitteret for at vurdere angrebets sværhedsgrad.
  • Fejlretning: Bekræft hurtigt, hvilken algoritme der genererede et fundet fingeraftryk i et API-svar eller log.
  • Sikkerhedsrevision: Find et system, der stadig gemmer adgangskoder i MD5 eller SHA-1 (skal undgås).
  • Retsmedicin: karakteriser en artefakt i en undersøgelse.

Hvorfor en hash ikke er reversibel

En hash-funktion er designet til at være envejs. Der er ingen algoritme af "hash-dekryptering", fordi en hash ikke er en kryptering: det er en projektion. Flere forskellige input kan i teorien producere den samme hash (kollision), så selv at vide en post, der producerer den korrekte hash, har du ingen garanti for, at det er den originale post.

I praksis betyder "at bryde" en hash massivt teste kandidatposter indtil du finder den, hvis fingeraftryk matcher. Det er, hvad ordbogsangreb gør og med rå magt.

Integreret ordbogsopslag

Vores værktøj inkluderer en miniordbog med 39 ultra-almindelige adgangskoder: tom streng, adgangskode, admin, 123456, qwerty, letmein osv. Disse 39 input er forudberegnet på 10 algoritmer (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM osv.). Hvis din hash matcher et af disse fingeraftryk, værktøjet returnerer adgangskoden til dig i klartekst.

Denne funktion illustrererhvorfor simple hashes ikke er egnede til ord af pass: en angriber behøver ikke engang at beregne, han konsulterer en tabel.

Simpel hash vs password hash

Ikke alle hashes er ens til lagring af adgangskoder:

  • Simple hashes (MD5, SHA-256, SHA-512): designet til at være hurtige, hvilket er en standard, når du vil modstå et brute force-angreb. De omfatter ikke sel som standard, så to brugere med samme adgangskode vil have samme hash, der udsætter den for angreb fra forudberegnet tabeller (regnbuetabeller).
  • Adgangskodehash (bcrypt, scrypt, Argon2): designet til at være langsom ved konstruktion, integrer et tilfældigt salt og en faktor på konfigurerbare omkostninger. Argon2id er i dag det topmoderne anbefalet af OWASP.

Sådan bruger du værktøjet

  1. Indsæt hashen i indtastningsfeltet.
  2. Værktøjet registrerer formatet (længde, præfiks) og foreslår mulige algoritmer.
  3. Hvis hashen matcher en ultra-almindelig adgangskode, vises ord i almindelig tekst.
  4. Ellers får du listen over kandidatalgoritmer, som du kan udforske yderligere med et værktøj dedikeret.

Ofte stillede spørgsmål

Hvorfor er min bcrypt-hash ikke matchet med ordbogen?

Bcrypt bruger et unikt tilfældigt salt pr. hash: selv med adgangskoden password, hver bruger producerer en anden hash. Ordbogsforberegningen virker derfor ikke. Det er netop den egenskab, der gør bcrypt modstandsdygtig over for bordangreb.

Hvad skal man gøre, hvis flere algoritmer er mulige i samme længde?

Kryds med andre spor: kilden til hashen (Active Directory peger på NTLM, Linux /etc/shadow til SHA-512-krypten, en gammel MySQL-database til MD5 osv.), og ansøgningskontekst. Ved samme længde forbliver MD5 statistisk den mest sandsynlige på gamle systemer.

Hvordan "bryder man" en hash i praksis?

Til legitime sikkerhedstests (audit, pentest) er standardværktøjer John the Ripper og hashcat. De accepterer ordlister massive (rockyou osv.) og udnytte GPU'en til at teste milliarder af kandidater pr sekund. Gennemførlighed afhænger af algoritmen: MD5 og SHA-1 giver hurtigt udbytte, bcrypt og Argon2 bremse angrebet med flere størrelsesordener.

Er den indbyggede ordbog søgbar?

Ordbogen er bevidst minimalistisk (39 poster) og tjener til at illustrere svagheden ved simple hashes på trivielle adgangskoder. For seriøs dækning, brug en ordliste ekstern (rockyou, SecLists) med John the Ripper eller hashcat.

Kan vi "afkode" en hash?

Nej. En hash er ikke en kryptering: der er ingen omvendt funktion. Ethvert websted, der lover at "afkode en hash" anvender faktisk et opslag i en forudberegnet base. Hvis din adgangskoden er unik og lang, den er der ikke.

Anmodningseksempel

curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
  -H "Content-Type: application/json" \
  -d '{"hash":"..."}'

Inputskema

Felt Type Påkrævet Standard
hash text

Endpoints

  • GET https://cdrn.fr/api/v1/tools - lister alle tilgængelige værktøjer
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - henter skemaet for dette værktøj
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - udfører dette værktøj med et JSON-payload