Tips en Trucs 2024

PDF documenten versleutelen

Portable Document Files (PDF) vormen de ruggengraat van de moderne documentdistributie. Hiermee kun je elk document eenvoudig opmaken en verwachten dat het leesbaar is op verschillende apparaten.

PDF documenten versleutelen

We kunnen een PDF-document om verschillende redenen willen vergrendelen met een wachtwoord. De gegevens in het document kunnen bijvoorbeeld vertrouwelijk zijn. Daarom willen we niet dat onbevoegden toegang hebben tot de gegevens in het document en ze wijzigen.

Een optie om gebruikerswachtwoorden voor PDF-bestanden in te stellen is met het hulpprogramma qpdf. Dit hulpprogramma leest het ingevoerde PDF-bestand, past de transformaties gespecificeerd door de argumenten toe op het bestand in het geheugen en slaat het resultaat op in het gespecificeerde uitvoerbestand. Qpdf installeer je in op Debian gebaseerde distributies met de volgende opdracht:

dany@pindabook:~$ sudo apt install qpdf
[sudo] wachtwoord voor root: 
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  qpdf
0 opgewaardeerd, 1 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 131 kB aan archieven opgehaald worden.
Na deze bewerking zal er 322 kB extra schijfruimte gebruikt worden.
Ophalen:1 http://deb.debian.org/debian bookworm/main amd64 qpdf amd64 11.3.0-1+deb12u1 [131 kB]
131 kB opgehaald in 0s (1.693 kB/s)
Voorheen niet geselecteerd pakket qpdf wordt geselecteerd.
(Database wordt ingelezen ... 180692 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../qpdf_11.3.0-1+deb12u1_amd64.deb wordt voorbereid...
Bezig met uitpakken van qpdf (11.3.0-1+deb12u1) ...
Instellen van qpdf (11.3.0-1+deb12u1) ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...

We gebruiken de optie --encrypt van qpdf om een versleuteld uitvoerbestand te genereren:

dany@pindabook:~$ qpdf --encrypt lees_wachtwoord eigenaar_wachtwoord 256 -- linux1sp11.pdf linux1sp11_met_wachtwoord.pdf

Het eerste argument van de --encrypt optie is het gebruikerswachtwoord en het tweede argument is het eigenaarswachtwoord. Deze hebben in het voorbeeld respectievelijk de waarden lees_wachtwoord en eigenaar_wachtwoord. Vervolgens geven we de sleutellengte door, die in het voorbeeld 256 is. De optie -- geeft het einde van de coderingsopties aan. Ten slotte geven we de naam van het PDF-invoerbestand op dat zal worden versleuteld en de naam van het versleutelde uitvoerbestand. Dit zijn respectievelijk linux1sp11.pdf en linux1sp11_met_wachtwoord.pdf.

Om het PDF document te lezen, heb je het gebruikerswachtwoord nodig. Om het PDF document aan te passen, heb je het eigenaarswachtwoord nodig.

Qpdf gebruikt RC4 als versleutelingsalgoritme. Maar het is ook mogelijk om AES te gebruiken met de optie --use-aes.

Laten we nu proberen het PDF-bestand te openen met Okular.

PDF wachtwoord

We krijgen een dialoogvenster waarin staat dat het document is vergrendeld en dat er een wachtwoord nodig is voordat het kan worden geopend, zoals verwacht.

PDF documenten ontgrendelen

Versleutelde PDF documenten beheren vereist dat je elk wachtwoord bijhoudt voor elk PDF-bestand dat je hebt versleuteld. Dit kan een probleem zijn als je een archief van PDF's wilt bijhouden voor een project of boekhouding.

Eén van de eenvoudigste manieren om het wachtwoord van een gecodeerd PDF-document te verwijderen, is door een kopie ervan "opnieuw af te drukken" met de documentviewer van jouw systeem. Standaard werkt het versleutelingsalgoritme dat een PDF beveiligt alleen als de gegevens in rust zijn.

Dit betekent dat als het document eenmaal geopend is, je er gemakkelijk een onversleutelde kopie van kunt maken door de optie Naar bestand afdrukken (PDF) van je viewer te gebruiken.

PDF afdrukken

Het is ook mogelijk om het wachtwoord van een gecodeerde PDF rechtstreeks vanuit een terminal te verwijderen. Dit kan handig zijn als je een script wilt maken en het verwijderingsproces wilt automatiseren. Dit kan zowel voor het gebruikerswachtwoord als voor het eigenaarswachtwoord.

dany@pindabook:~$ qpdf --password=lees_wachtwoord --decrypt linux1sp11_met_wachtwoord.pdf linux1sp11_zonder_wachtwoord.pdf
dany@pindabook:~$ qpdf --password=eigenaar_wachtwoord --decrypt linux1sp11_met_wachtwoord.pdf linux1sp11_zonder_wachtwoord.pdf

Je kunt ook een eenvoudig shellscript maken om de ontgrendeling van een hele map te automatiseren. We beginnen met het verwijderen van het ontgrendelde linux1sp11_zonder_wachtwoord.pdf bestand:

dany@pindabook:~$ rm linux1sp11_zonder_wachtwoord.pdf

Daarna maken we een map aan waarin de ontgrendelde PDF documenten in terecht komen. En gebruiken we een lus om alle PDF documenten in de huidige map te ontgrendelen:

dany@pindabook:~$ mkdir zonder_wachtwoord
dany@pindabook:~$ for i in *.pdf; do qpdf --password=lees_wachtwoord --decrypt "${i}" ./zonder_wachtwoord/"${i}"; done

PDF documenten ongrendellen zonder dat je het wachtwoord kent

Hoewel de vorige methoden werken voor PDF's waarvan je het wachtwoord kent, zijn er gevallen waarin dit niet het geval is. Dit kan een probleem zijn als je te maken hebt met een ouder PDF-archief waarvan je het wachtwoord kwijt bent.

dany@pindabook:~$ qpdf --password=verkeerd_wachtwoord --decrypt linux1sp11_met_wachtwoord.pdf zonder_wachtwoord/linux1sp11.pdf
qpdf: linux1sp11_met_wachtwoord.pdf: invalid password

Een manier om dit probleem op te lossen is door het hulpprogramma pdfcrack te installeren en te gebruiken. Dit is een eenvoudig programma dat de encryptie van een PDF-document "kraakt" door herhaaldelijk het wachtwoord te raden, via een woordenboekbestand of willekeurige tekst.

Je kunt pdfcrack in Debian installeren door de volgende opdracht uit te voeren:

dany@pindabook:~$ sudo apt install pdfcrack 
[sudo] wachtwoord voor root: 
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  pdfcrack
0 opgewaardeerd, 1 nieuw geïnstalleerd, 0 te verwijderen en 3 niet opgewaardeerd.
Er moeten 33,2 kB aan archieven opgehaald worden.
Na deze bewerking zal er 91,1 kB extra schijfruimte gebruikt worden.
Ophalen:1 http://deb.debian.org/debian bookworm/main amd64 pdfcrack amd64 0.20-1 [33,2 kB]
33,2 kB opgehaald in 0s (572 kB/s)
Voorheen niet geselecteerd pakket pdfcrack wordt geselecteerd.
(Database wordt ingelezen ... 180705 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../pdfcrack_0.20-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van pdfcrack (0.20-1) ...
Instellen van pdfcrack (0.20-1) ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...

Ga naar de map met je versleutelde PDF en voer de volgende opdracht uit:

dany@pindabook:~$ pdfcrack -f linux1sp11_met_wachtwoord.pdf 
The specific version is not supported (Standard - 6)

Met andere woorden, vergrendelde PDF documenten kraken, lukt alleen met oude PDF documenten en vraagt (zeer) veel tijd. Ons PDF document gebruikt versie 1.7, en niet 1.6 (6 voor pdfcrack).

dany@pindabook:~$ file linux1sp11_met_wachtwoord.pdf 
linux1sp11_met_wachtwoord.pdf: PDF document, version 1.7, 164 pages

Qpdf en pdfcrack van de computer verwijderen