Problema
Aveți un fișier PDF care nu este de încredere. Poate conține un malware, iar acesta poate infecta computerul și poate face lucruri groaznice.
Doriți să convertiți acest PDF într-un PDF „de încredere” care nu are niciun program malware, fără a pune în pericol computerul Ubuntu.
Metoda
Ideea este instalarea Multipass în computerul Ubuntu și utilizați mașina virtuală (VM) primară implicită pentru a „aplatiza” fișierul PDF care nu este de încredere. Procesul de aplatizare a PDF-ului implică conversia fișierului PDF într-un fișier postscript (PS) și apoi convertirea fișierului PS înapoi în PDF. PDF-ul rezultat este „de încredere”, deoarece orice malware din PDF-ul original nu este de așteptat să supraviețuiască procesului dublu de conversie.
În cele din urmă, odată ce conversia este completă, VM-ul este distrus. Astfel încât orice modificări care pot fi aduse VM-ului de către malware din PDF-ul original să fie distruse odată cu acesta.
O dovadă a conceptului
Această soluție se bazează pe linia de comandă, unde vom introduce (sau lipi) comenzi în terminal.
Mai întâi, permiteți-ne să instalăm Multipass pe computer cu următoarea comandă:
sudo snap install multipass
Trebuie să o faci o singură dată.
Restul lucrării este realizat de un script bash. Eu o numesc aplatizare.sh. Salvați scriptul de mai jos în folderul dvs. principal ca aplatiza.sh
și faceți-l executabil.
#!/bin/bash
dacă [ -z $1 ]; atunci
echo „Niciun argument setat. Argumentul valid este un fișier PDF nume.pdf în folderul $HOME”
read -ep "Introduceți numele fișierului: " FULLNAME
altfel
FULLNAME=$1
fi
dacă [ ! -f $NUME COMPLET ]; atunci
echo "Fișierul $FULLNAME nu a fost găsit."
echo „Argumentul valid este un PDF filename.pdf în folderul $HOME”
ecou "iese..."
iesirea 1
fi
INPNAME=$(nume de bază $FULLNAME)
DIR=$(dirname $FULLNAME)
OUTNAME="De încredere-$INPNAME"
pornire multipass
multipass exec primar -- actualizare sudo apt
multipass exec primar -- sudo apt install ghostscript -y
multipass exec primar -- cp "Acasă/$INPNAME" .
multipass exec primar -- pdf2ps „$INPNAME” temp
multipass exec primar -- ps2pdf temp „$OUTNAME”
Multipass exec primar -- mv "$OUTNAME" Acasă/
oprire multipass primar
ștergere multipass principal
purjare multipass
Să spunem că aveți un fișier numit test.pdf
că nu ai încredere. Utilizați următoarea comandă pentru a rula scriptul:
./flatten.sh test.pdf
The test.pdf
ar trebui să fie în folderul dvs. $HOME. Dacă aveți fișierul PDF într-un folder diferit, scriptul (așa cum este scris) nu îl va găsi.
Iată lista lucrurilor care se vor întâmpla odată ce porniți acest script:
- Va fi creat un VM
- O versiune minimă de Ubuntu va fi instalată în VM
- Scriptul se va instala
ghostscript
, necesar pentru conversie
- Fișierul PDF care nu este de încredere va fi copiat în stocarea virtuală a VM.
- PDF-ul neîncrezat va fi convertit într-un fișier PS temporar și
- Fișierul PS temporar va fi convertit în PDF „de încredere” cu prefixul „Truted-”.
- PDF-ul de încredere va fi mutat înapoi în dosarul dvs. de acasă.
- VM-ul va fi oprit, șters și curățat.
Întregul proces va dura ceva timp, în special inițierea VM-ului și instalarea ghostscript
.
Notă: dacă fișierul PDF care nu este de încredere este foarte mare, VM Multipass poate rămâne fără memoria virtuală alocată implicit. Consultați documentația Multipass despre cum să alocați mai multă memorie VM.
Dezavantajul
Din câte îmi dau seama, nu există nicio modalitate de a face un instantaneu al VM-ului principal în Multipass după instalarea Ghostscript și de a roti acea VM stocată pentru data viitoare când trebuie să igienizați un PDF. Dacă acest lucru ar fi posibil, procesul ar dura puțin mai puțin.
Altă cale
O altă modalitate de a obține rezultate similare poate fi utilizarea Containere LDX/LXC. LXD acceptă instantanee și un container personalizat cu doar Ghostscript poate fi puțin mai ușor decât un VM complet. Cu toate acestea, nu am nicio experiență cu LXD/LXC.
Sper că acest lucru vă ajută