Lektion 10 gav dig hashcat. John fyller en annan funktion. Båda kan testa ordlistor och masker — men John är smartare på "single mode": den läser användarnamn och full name från en lösenordsfil och genererar kandidater baserade på dem (annaandersson, Anna1!, anders123, ...).
01Vad John egentligen är
John the Ripper är ett kommandoradsverktyg som tar in:
- En fil med hashar (en per rad, eventuellt med användarnamn före)
- En strategi (single, wordlist, incremental, mask)
- Eventuellt en ordlista
...och försöker lista ut klartexten för varje hash. Den auto-detekterar oftast hash-typen — du behöver inte säga "det här är MD5". Den jobbar primärt på CPU (även om det finns OpenCL-versioner) och är effektivast på klassiska Unix-format: /etc/shadow, NTLM, ZIP, RAR, SSH-nycklar med lösenord, KeePass-databaser.
02John vs hashcat
John the Ripper
- Stark på single mode — använder användarnamn som hint
- Auto-detekterar hash-typer
- Inbyggda konverteringsverktyg (
zip2john,ssh2john...) - Snabbast på CPU, bra för enskilda hashar
- Klassiskt val för Unix-system, CTF-utmaningar
hashcat
- Stark på GPU-acceleration — miljarder gissningar/sek
- Du måste säga
-m hash-typsjälv - Bästa för stora batchar av hashar
- Mer flexibel regelmotor
- Standard i bug bounty och pentesting när du har många hashar
Många pentestare använder båda: John för snabb första-attack på enstaka hashar, hashcat när det är dags att slå hårt mot en stor läcka.
03Installation
Linux:
sudo apt install john
john --version
John the Ripper 1.9.0-jumbo-1 OMP [linux-gnu 64-bit x86_64 AVX2 AC]
macOS:
brew install john-jumbo
Windows: ladda ner från openwall.com/john — välj "John the Ripper 1.9.0-jumbo-1 (Windows binaries)". Packa upp och kör john.exe från en cmd-prompt.
Notera: "jumbo" är community-versionen med stöd för 250+ hash-typer. Det är den du vill ha.
04Din första krackning
# skapa en MD5-hash av lösenordet "kanin" echo -n "kanin" | md5sum c454085df514ce66b7d124ee8d60fb85 - # spara i en fil med användarnamn före echo "anna:c454085df514ce66b7d124ee8d60fb85" > hash.txt # låt John auto-detektera och attackera john --format=raw-md5 hash.txt Using default input encoding: UTF-8 Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3]) Press 'q' or Ctrl-C to abort, almost any other key for status kanin (anna) 1g 0:00:00:01 DONE 2/3 (2026-05-21 14:32) 0.7142g/s # visa knäckta lösenord john --show --format=raw-md5 hash.txt anna:kanin 1 password hash cracked, 0 left
John knäckte det utan att du gett någon ordlista. Den körde "single mode" först — vilket inkluderade variationer av användarnamnet och vanliga default-lösenord.
05Attack-lägen
Single mode (default first pass) — använder användarnamn och GECOS-fältet:
john --single hash.txt
Wordlist mode — med rockyou eller annan ordlista:
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Wordlist + rules — modifierar varje ord (kapitalisera, lägg till siffra, etc.):
john --wordlist=rockyou.txt --rules hash.txt
Incremental — brute force, alla kombinationer:
john --incremental hash.txt
06Konverteringsverktyg
En av Johns styrkor är att det finns scripts för att extrahera hashar från olika filtyper:
# hash från ZIP-fil med lösenord zip2john secret.zip > zip.hash # hash från SSH-privatnyckel med lösenfras ssh2john id_rsa > ssh.hash # hash från PDF pdf2john report.pdf > pdf.hash # sen vanlig john-körning john --wordlist=rockyou.txt zip.hash
Det här används i CTF-utmaningar konstant — du får en fil med lösenord och måste krackra det med John.
07Vad du lärt dig
- John är klassisk lösenordskrackare; "jumbo"-versionen är den du vill ha
- Single mode = smart attack baserad på användarnamn
- Wordlist + rules = ordlista med modifieringar (utöka 1000 ord till miljoner)
- Konverteringsverktyg (
zip2john,ssh2john) extraherar hashar från filtyper - John och hashcat kompletterar varandra; båda är bra att ha
Övning: knäck en ZIP-fil med eget lösenord
1. Skapa en lösenordsskyddad zip: zip -e test.zip filerna_du_vill_packa — välj ett enkelt lösenord som finns i rockyou.txt (t.ex. password123).
2. Extrahera hashen: zip2john test.zip > test.hash.
3. Knäck den: john --wordlist=/usr/share/wordlists/rockyou.txt test.hash.
4. Visa resultatet: john --show test.hash.
5. Reflektion: hur lång tid tog det? Det här är samma teknik som används mot läckta KeePass-databaser, PGP-nycklar och Office-dokument — varför starka lösenord på dina filer faktiskt spelar roll.