
Der Titel sagt eigentlich schon alles.In vertrauenswürdiges PDF konvertierenist ein wertvolles Tool und es wäre großartig, es im Ubuntu-Ökosystem zu implementieren.
Bearbeiten: Ein „vertrauenswürdiges PDF“ ist eine PDF-Datei, die nur (a) Rasterbilder enthält, die von einem vertrauenswürdigen Prozess (d. h. in einer zu diesem Zweck gestarteten vertrauenswürdigen VM) auf jeder Seite generiert wurden, und optional (b) OCR-Text aus diesen Rasterbildern.
Antwort1
Das Problem
Sie haben eine nicht vertrauenswürdige PDF-Datei. Sie könnte Malware enthalten und diese könnte Ihren Computer infizieren und schlimme Dinge damit anrichten.
Sie möchten dieses PDF in ein „vertrauenswürdiges“ PDF ohne Malware konvertieren, ohne Ihren Ubuntu-Computer zu gefährden.
Die Methode
Die Idee ist zu installierenMehrfachpassauf Ihrem Ubuntu-Computer und verwenden Sie die standardmäßige primäre virtuelle Maschine (VM), um die nicht vertrauenswürdige PDF-Datei zu „glätten“. Der Prozess des Glättens der PDF-Datei umfasst die Konvertierung der PDF-Datei in eine Postscript-Datei (PS) und die anschließende Rückkonvertierung der PS-Datei in PDF. Die resultierende PDF-Datei ist „vertrauenswürdig“, da davon auszugehen ist, dass etwaige Malware in der ursprünglichen PDF-Datei den doppelten Konvertierungsprozess nicht überlebt.
Sobald die Konvertierung abgeschlossen ist, wird die VM zerstört. Damit werden auch alle Änderungen, die die Malware möglicherweise im Original-PDF an der VM vorgenommen hat, zerstört.
Ein Proof of Concept
Diese Lösung ist befehlszeilenbasiert, wobei wir Befehle in das Terminal eingeben (oder einfügen).
Lassen Sie uns zunächst Multipass mit dem folgenden Befehl auf Ihrem Computer installieren:
sudo snap install multipass
Sie müssen es nur einmal tun.
Den Rest der Arbeit erledigt ein Bash-Skript. Ich nenne es flatten.sh. Speichern Sie das folgende Skript in Ihrem Home-Ordner flatten.sh
und machen Sie es ausführbar.
#!/bin/bash
if [ -z $1 ]; then
echo "No argument set. Valid argument is a PDF filename.pdf in the $HOME folder"
read -ep "Enter filename: " FULLNAME
else
FULLNAME=$1
fi
if [ ! -f $FULLNAME ]; then
echo "The file $FULLNAME not found."
echo "Valid argument is a PDF filename.pdf in the $HOME folder"
echo "exiting..."
exit 1
fi
INPNAME=$(basename $FULLNAME)
DIR=$(dirname $FULLNAME)
OUTNAME="Trusted-$INPNAME"
multipass start
multipass exec primary -- sudo apt update
multipass exec primary -- sudo apt install ghostscript -y
multipass exec primary -- cp "Home/$INPNAME" .
multipass exec primary -- pdf2ps "$INPNAME" temp
multipass exec primary -- ps2pdf temp "$OUTNAME"
multipass exec primary -- mv "$OUTNAME" Home/
multipass stop primary
multipass delete primary
multipass purge
Angenommen, Sie haben eine Datei namens test.pdf
, der Sie nicht vertrauen. Verwenden Sie den folgenden Befehl, um das Skript auszuführen:
./flatten.sh test.pdf
Das test.pdf
sollte in Ihrem $HOME-Ordner sein. Wenn Sie Ihre PDF-Datei in einem anderen Ordner haben, wird das Skript (so wie es geschrieben ist) sie nicht finden.
Hier ist die Liste der Dinge, die passieren, wenn Sie dieses Skript starten:
- Eine VM wird erstellt
- Eine minimale Version von Ubuntu wird in der VM installiert
ghostscript
Das für die Konvertierung benötigte Skript wird installiert- Die nicht vertrauenswürdige PDF-Datei wird in den virtuellen Speicher der VM kopiert.
- Das nicht vertrauenswürdige PDF wird in eine temporäre PS-Datei umgewandelt und
- Die temporäre PS-Datei wird in ein „vertrauenswürdiges“ PDF mit dem Präfix „Truted-“ konvertiert.
- Das vertrauenswürdige PDF wird zurück in Ihren Home-Ordner verschoben.
- Die VM wird gestoppt, gelöscht und bereinigt.
Dieser gesamte Vorgang wird einige Zeit in Anspruch nehmen, insbesondere die Initiierung der VM und die Installation von ghostscript
.
Hinweis: Wenn die nicht vertrauenswürdige PDF-Datei sehr groß ist, kann der standardmäßig zugewiesene virtuelle Speicher der Multipass-VM erschöpft sein. Informationen zum Zuweisen von mehr Speicher zur VM finden Sie in der Multipass-Dokumentation.
Nachteil
Soweit ich weiß, gibt es keine Möglichkeit, nach der Installation von Ghostscript einen Snapshot der primären VM in Multipass zu erstellen und diese gespeicherte VM für das nächste Mal, wenn Sie eine PDF-Datei bereinigen müssen, zu verwenden. Wenn dies möglich wäre, würde der Vorgang etwas weniger Zeit in Anspruch nehmen.
Ein anderer Weg
Eine andere Möglichkeit, ähnliche Ergebnisse zu erzielen, besteht darin,LDX/LXC-Container. LXD unterstützt Snapshots und ein benutzerdefinierter Container mit nur Ghostscript ist möglicherweise etwas leichter als eine vollständige VM. Ich habe jedoch keine Erfahrung mit LXD/LXC.
Hoffe das hilft