pdfcrack — gendan glemte PDF-kodeord på Linux og macOS (2026)
pdfcrack er et lille, single-threaded CPU-værktøj til at gendanne glemte user- og owner-kodeord på PDF'er. Fin til 40-bit RC4 og små dictionary-angreb; til 128/256-bit AES-PDF'er skal du bruge pdf2john + hashcat på en GPU.
TL;DR — pdfcrack er et kommandolinjeværktøj, der gendanner user-kodeordet eller owner-kodeordet på en krypteret PDF via brute-force eller dictionary-angreb. Det er lille, skrevet i C, kører på Linux/macOS/WSL og håndterer enhver krypterings-profil, PDF har leveret — 40-bit RC4, 128-bit RC4, 128-bit AES, 256-bit AES (PDF 1.7 + 2.0). Det er single-threaded og kun CPU, så det er hurtigt på den svage gamle RC4-40-kryptering, men stadig langsommere, efterhånden som PDF’er bliver moderne. Installeres med apt install pdfcrack (Debian/Ubuntu), brew install pdfcrack (macOS) eller bygges fra kilden. Når pdfcrack er for langsom, så skift til pdf2john + hashcat på en GPU.
Dette indlæg antager, at du har autorisation til at gendanne kodeordet på PDF’en — dit eget dokument, en kundes eller en lovligt anskaffet fil. Angrib ikke PDF’er, du ikke ejer.
User-kodeord vs owner-kodeord
PDF har to kodeord:
- User-kodeord — kræves for at åbne og læse dokumentet.
- Owner-kodeord — kræves for at fjerne begrænsninger (print, kopi, rediger) på et dokument, der åbner uden et user-kodeord.
Mange “beskyttede” PDF’er er kun owner-kodeord-begrænsede: de åbner fint, men print og kopi er deaktiveret af læseren. Dem er trivielt at låse op — qpdf --decrypt eller et hvilket som helst pdftk-lignende værktøj fjerner owner-only-restriktioner uden at skulle gætte noget. pdfcrack er til det sværere tilfælde: en user-kodeord-beskyttet PDF, du slet ikke kan åbne.
Tjek hvilken du har med at gøre:
$ qpdf --show-encryption dokument.pdf
R = 6
P = -3904
User password =
Supplied password is owner password
extract for accessibility: allowed
extract for any purpose: not allowed
print low resolution: allowed
print high resolution: not allowed
modify document assembly: not allowed
modify forms: not allowed
modify annotations: not allowed
modify other: not allowed
stream encryption method: AESv3
string encryption method: AESv3
file encryption method: AESv3
R = ...fortæller dig revisionen/profilen.R=2= RC4-40,R=3= RC4-128,R=4= AES-128,R=5/6= AES-256.- “Supplied password is owner password” + “User password = (tom)” betyder, du kan åbne den og bare skal fjerne restriktioner. Brug
qpdf --decrypt --password='' input.pdf output.pdf, og du er færdig.
Installation
# Debian / Ubuntu / Mint / Kali
sudo apt install pdfcrack
# macOS (Homebrew)
brew install pdfcrack
# Arch / Manjaro
sudo pacman -S pdfcrack
# Fedora / RHEL
sudo dnf install pdfcrack
# Fra kilden
wget https://sourceforge.net/projects/pdfcrack/files/latest/download -O pdfcrack.tar.gz
tar xf pdfcrack.tar.gz && cd pdfcrack-*
make
sudo cp pdfcrack /usr/local/bin/
Benchmark
$ pdfcrack -b
Benchmark: Average Speed (calls / second):
MD5: 1728972.6
MD5_50 (fast): 97879.3
MD5_50 (slow): 69167.0
RC4 (40, static): 606555.3
RC4 (40, no check): 598050.0
RC4 (128, no check): 590141.7
Benchmark: Average Speed (passwords / second):
PDF (40, user): 453510.2
PDF (40, owner): 220250.0
PDF (40, owner, fast): 499995.0
PDF (128, user): 22000.0
PDF (128, owner): 10408.7
PDF (128, owner, fast): 22220.0
Oversat:
- RC4-40 (PDF 1.3, meget gammel) — ~450k kodeord/sek. Brute-force af et fuldt 8-tegns alfanumerisk space: ~1 uge på én core.
- RC4-128 / AES-128 — ~22k kodeord/sek. Brute-force bliver urealistisk over længde 6 med et hvilket som helst charset.
- AES-256 (R=5/6) — endnu langsommere;
pdfcrackunderstøtter det, men reelt kun til dictionary-angreb mod små ordlister.
Har du brug for mere fart end det, så vil du bruge hashcat på en GPU. Tal i bunden.
Dictionary-angreb
pdfcrack -f dokument.pdf -w /usr/share/wordlists/rockyou.txt
-f— målfil.-w <fil>— ordliste, én kandidat pr. linje.- Valgfri
-o— angrib kun owner-kodeord (ignorer user-kodeord). Default er at prøve user-kodeord først. - Valgfri
-u— angrib kun user-kodeord.
Har du kontekst — kodeordet er sandsynligvis et fornavn, et årstal, en projektkode — saml en mindre målrettet liste. Generiske lister er en lang skud, når du er forbi top ti tusind indgange.
Brute-force-angreb
pdfcrack -f dokument.pdf -c 'abcdefghijklmnopqrstuvwxyz0123456789' -n 4 -m 8
-c <charset>— tegnsæt at prøve. Default inkluderer et bredt ASCII-område.-n <min>— minimumslængde.-m <max>— maksimumslængde.
Juster -c aggressivt. Ved du, at kodeordet er alt-lowercase, så giv det ikke uppercase. Ved du, det har et ciffer til sidst, så brug et mask-angreb (hashcat-territorium, ikke pdfcrack).
Genoptag et langt kørsel
pdfcrack -f dokument.pdf -w rockyou.txt -s /tmp/state.sav
-s skriver periodiske save-filer; hvis du stopper pdfcrack og genstarter, så giv -l /tmp/state.sav for at genoptage.
Hvornår du skal skifte til hashcat
Til enhver moderne PDF (R=4, 5 eller 6 — altså AES-128 eller AES-256) bliver pdfcracks single-core-fart flaskehalsen. pdf2john + hashcat giver dig to til tre størrelsesordener mere throughput på en GPU.
Trin 1: træk hashen ud
$ /usr/share/john/pdf2john.pl dokument.pdf > hash.txt
(På Debian/Ubuntu: apt install john leverer pdf2john.pl.)
Trin 2: identificér hash-mode
$ head -1 hash.txt
dokument.pdf:$pdf$5*6*256*-1028*1*16*...
Map de første to tal:
$pdf$1*2*...→ mode 10400 (PDF 1.1–1.3, RC4-40, user)$pdf$1*2*...med owner-salt → mode 10410 / 10420$pdf$2*3*...→ mode 10500 (PDF 1.4–1.6, RC4-128 / AES-128)$pdf$5*5*...→ mode 10600 (PDF 1.7 r=5, AES-256)$pdf$5*6*...→ mode 10700 (PDF 1.7 r=6 / PDF 2.0, AES-256 med PBKDF2)
Trin 3: kør hashcat
hashcat -m 10700 hash.txt /sti/til/ordliste.txt
På en enkelt moderne GPU (fx RTX 4090):
- Mode 10400 (RC4-40): ~10 milliarder H/s — ethvert praktisk kodeord gendannes øjeblikkeligt.
- Mode 10500 (RC4-128 / AES-128): ~100 millioner H/s.
- Mode 10700 (AES-256, PBKDF2): ~50.000 H/s. Det er ved design — PBKDF2-iterationerne gør brute-force dyrt.
For mode 10700 betyder din angrebsstrategi mere end rå fart. Dictionary + regler + mask-angreb målrettet mod sandsynlige kodeord-mønstre er størrelsesordener mere produktive end udtømmende brute-force.
Almindelige faldgruber
“Filen ser ud til at være krypteret, men jeg kan åbne den uden kodeord”
Du ser på owner-only-restriktioner. Brug qpdf --decrypt input.pdf output.pdf — ingen cracking nødvendigt.
pdfcrack kører, men finder aldrig noget
Tre sandsynlige årsager:
- Kodeordet er længere / mere komplekst, end dit charset × længde dækker. Øg
-mog/eller udvid-c, eller skift til en dictionary. - Kodeordet indeholder ikke-ASCII-tegn. pdfcracks charset er ASCII som default; ikke-ASCII-user-kodeord i gamle PDF’er brugte varierende encodings (PDFDocEncoding, UTF-16). Prøv
pdf2john+ hashcat, som håndterer encoding’en korrekt. - Det er AES-256 (R=6), og du er tålmodig. Se hastighedsnoterne ovenfor — kun realistisk med en dictionary.
“Only AES-256 is supported”-fejl eller lignende
Din pdfcrack-build er gammel. Ubuntu LTS leverer nogle gange en version, der ikke fuldt håndterer R=6. Byg fra kilden eller skift til pdf2john + hashcat.
PDF’en åbner, men print/kopi er blokeret
Det er kun owner-kodeord-begrænset. qpdf --decrypt uden at behøve et kodeord virker som regel:
qpdf --decrypt --password='' input.pdf output.pdf
Defensiv pointe
Til alt, du vil have til at forblive krypteret i 2026, brug AES-256 med en PDF 2.0 (R=6) kodeord. Det er profilen med PBKDF2-nøgle-afledning, der gør offline-angreb dyre på nuværende hardware.
Og som altid betyder kodeordets længde mere end noget andet. En 20-tegns tilfældig passphrase er brute-force-intraktabel mod enhver nuværende GPU. Et 6-tegns “smart substitutions”-kodeord er en kaffepause på en RTX 4090.
Ofte stillede spørgsmål
Er pdfcrack stadig vedligeholdt?
Opdateres langsomt. Kodebasen håndterer alle nuværende PDF-krypterings-profiler; det er bare ikke her, performance-arbejdet foregår længere (det er hashcat).
Bruger pdfcrack GPU?
Nej. Kun CPU, single-threaded. Til GPU-arbejde, brug pdf2john + hashcat.
Kan pdfcrack gendanne dokumentet, hvis skaberen ryddede user-kodeordet, men beholdt owner-kodeordet?
Ja — brug qpdf --decrypt først; hvis det ikke fuldt dekrypterer, angriber pdfcrack -o owner-kodeordet.
Lækker pdfcrack min PDF nogle steder?
Nej. Den er lokal. Alt online-only (“crack min PDF på cloud-service-X.com”) indebærer at uploade filen, hvilket du ikke skal gøre for fortroligt materiale.
Hvad hvis jeg kun vagt husker kodeordet?
Skriv ned, hvad du husker — sandsynlige ord, sandsynlige cifre, sandsynlig længde — og byg en målrettet ordliste eller et hashcat-mask (-a 3 ?l?l?l?l?l?d?d?d?d). Det slår enhver generisk liste.
Kan jeg gendanne tekst fra en AES-256-PDF uden kodeordet?
Nej. AES-256 med PBKDF2 (R=6) er, så vidt offentlig kryptanalyse går, ikke brudt. Hvis kodeordet er stærkt og tabt, er indholdet tabt.
Opsummering
- Kun owner-kodeord?
qpdf --decrypt, ingen cracking nødvendigt. - User-kodeord-beskyttet, gammel (R=2/3)?
pdfcrackmed en dictionary virker fint. - Moderne (R=4/5/6)?
pdf2john+hashcatpå en GPU, målrettet angreb. - Stærk 20-tegns tilfældig? Accepter tabet.