
タイトルがほぼそれを物語っています。信頼できるPDFに変換は貴重なツールであり、Ubuntu エコシステムに実装できれば素晴らしいと思います。
編集: 「信頼できる PDF」とは、各ページに (a) 信頼できるプロセス (つまり、その目的のために起動された信頼できる VM) から生成されたラスター イメージのみを含み、オプションで (b) それらのラスター イメージからのテキストの OCR を含む PDF ファイルです。
答え1
問題
信頼できない PDF ファイルがあります。このファイルにはマルウェアが含まれている可能性があり、そのマルウェアがコンピュータに感染して、ひどい被害を与える可能性があります。
Ubuntu コンピューターを危険にさらすことなく、この PDF をマルウェアのない「信頼できる」PDF に変換したいと考えています。
方法
アイデアはインストールすることですマルチパスUbuntu コンピューターで、デフォルトのプライマリ仮想マシン (VM) を使用して、信頼できない PDF ファイルを「フラット化」します。PDF をフラット化するプロセスでは、PDF ファイルをポストスクリプト (PS) ファイルに変換し、その後 PS ファイルを PDF に戻します。元の PDF 内のマルウェアは二重の変換プロセスで生き残ることはないと予想されるため、結果として得られる PDF は「信頼」されます。
最後に、変換が完了すると、VM は破棄されます。これにより、元の PDF 内のマルウェアによって VM に加えられた変更も VM とともに破棄されます。
概念実証
このソリューションはコマンド ライン ベースであり、ターミナルにコマンドを入力 (または貼り付け) します。
まず、次のコマンドを使用して、コンピューターに Multipass をインストールします。
sudo スナップインストールマルチパス
一度だけ行う必要があります。
残りの作業は bash スクリプトによって行われます。これを flatten.sh と呼びます。以下のスクリプトをホーム フォルダーに保存しflatten.sh
、実行可能にします。
#!/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
信頼できない というファイルがあるとしますtest.pdf
。次のコマンドを使用してスクリプトを実行します。
./flatten.sh test.pdf
これはtest.pdf
$HOME フォルダにあるはずです。PDF ファイルが別のフォルダにある場合、スクリプトは (記述されているとおり) それを見つけることができません。
このスクリプトを開始すると、次のようなことが発生します。
- VMが作成されます
- VMにUbuntuの最小バージョンがインストールされます
- スクリプトは
ghostscript
変換に必要なをインストールします - 信頼できない PDF ファイルは VM の仮想ストレージにコピーされます。
- 偽造されたPDFは一時的なPSファイルに変換され、
- 一時 PS ファイルは、「Truted-」プレフィックスが付いた「信頼できる」PDF に変換されます。
- 信頼された PDF はホーム フォルダーに戻されます。
- VM は停止、削除、および消去されます。
このプロセス全体、特に VM の初期化と のインストールには時間がかかりますghostscript
。
注意: 信頼されていない PDF ファイルが非常に大きい場合、Multipass VM はデフォルトで割り当てられた仮想メモリを使い果たす可能性があります。VM にさらにメモリを割り当てる方法については、Multipass のドキュメントを参照してください。
欠点
私の知る限り、Ghostscript をインストールした後、Multipass でプライマリ VM のスナップショットを作成し、次に PDF をサニタイズする必要があるときにその保存された VM をスピンする方法はありません。これが可能であれば、プロセスにかかる時間が少し短縮されます。
別の方法
同様の結果を得るための別の方法としては、LDX/LXC コンテナLXD はスナップショットをサポートしており、Ghostscript のみのカスタム コンテナーは完全な VM よりも少し軽量になる可能性があります。ただし、私は LXD/LXC の経験はありません。
お役に立てれば