dav1.ch

Blog über Hard- und Software

Passwortschutz von PDFs (automatisiert) unter Linux entfernen

⚠️ Disclaimer

Ich übernehme keine Haftung für die geschriebenen Inhalte:

  • Begeht mit den Informationen aus diesem Post keine strafbaren Handlungen
  • Betrachtet diesen Post nicht als Best Practice
  • Ich hafte nicht für Totalverlust von Daten und Hardware

Weitere Informationen

Einführung

Viele von euch, die regelmässig passwortgeschützte PDFs erhalten, z.B. Lohnabrechnungen, kennen das Problem: Möchte man das passwortgeschützte PDF so archivieren? Was macht man mit dem Passwort, damit das Dokument in Zukunft weiterhin geöffnet werden kann? Beim eventuellen Weiterversand das Passwort gleich mit angeben?

Solange das Dokument an einem sicheren Ort archiviert werden kann, ist es besser, den Schutz vom Dokument gleich zu entfernen. Unter Windows mit Acrobat oder PDF24 ist das schon lästig genug, wenn man es jedes Mal wiederholen muss. Unter Linux ist mir auch kein grafisches Tool bekannt, welches das kann. Online-Tools zur Bearbeitung von persönlichen Dokumenten verwenden? Sicher nicht.

Für diese Aufgabe habe ich ein einfaches (und vermutlich schlechtes) Script geschrieben, welches alle passwortgeschützten PDFs (mit statischem Passwort) im selben Ordner entschlüsselt und dann in einem Unterordner bereitstellt. Bei Bedarf lässt sich das ganze auch per Cron oder Task auf dem NAS automatisieren, Voraussetzung ist eine lauffähige Version von qpdf.

Installation

Unter Ubuntu reicht für die Installation

sudo apt install qpdf

Das unten stehende Script wird idealerweise als decrypt_all_pdfs.sh abgespeichert und mit chmod +x decrypt_all_pdfs.sh ausführbar gemacht. Das Script wird im selben Ordner wie die zu entschlüsselnden PDFs platziert. Ein Unterordner für die entschlüsselten PDFs muss existieren, die Variabeln für das Passwort und vom Unterordner müssen definiert sein.

#!/bin/bash

#dav1.ch, 2024

#Passwort für geschütztes PDF
pass="M31NP@$$W0RT"
#Vorhandenen Unterordner für die entsperrten PDFs angeben
subf="entsperrt"
#Optional: Suffix für entsperrte PDFs angeben, z.B. "_entsperrt"
suff=""

shopt -s nullglob

if [ ! -d "$subf" ]; then
    echo "ERROR : Ordner \"$subf\" existiert nicht";
    exit;
fi

for p in *.pdf; do
    
    path=$subf/"$(basename -s .pdf "$p")"$suff.pdf;

    if [ ! -f "$path" ]; then
        
        qpdf --password=$pass --decrypt "$p" "$path" 2> /dev/null;

        exco="$?";
        
        if [ $exco == 0 ]; then
            echo "OK : $path";
        elif [ $exco == 2 ]; then
            echo "ERROR : Falsches oder gar kein Passwort gesetzt für $p";
        else
            echo "ERROR : Sonstiger Fehler"
        fi
    else
        echo "SKIP : $p";
    fi
done

Der wichtige Teil im Script ist die Ausführung von qpdf:

qpdf --password=PASSWORT --decrypt PDF_IN PDF_OUT

Ausführung

Wenn alles passt, sieht es dann so aus:

Ausführung auf der Konsole

Es wird nicht viel abgefangen, nur das Vorhandensein vom Unterordner, Korrektheit vom Passwort und ob die Zieldatei nicht schon existiert. So ist es mindestens möglich, das Script regelmässig laufen zu lassen, ohne dass die bereits entschlüsselten wieder Dateien überschrieben werden.

Links

https://github.com/qpdf/qpdf

Abonnieren
Benachrichtige mich bei
0 Comments
Oldest
Newest
Inline Feedbacks
View all comments