Существует ли опубликованная реализация QubesOS «Преобразовать в надежный PDF-файл» в Ubuntu?

Название говорит само за себя. Преобразовать в надежный PDF - ценный инструмент, и было бы здорово реализовать его в экосистеме Ubuntu.

0
задан 22 August 2021 в 01:18

1 ответ

Проблема

У вас есть ненадежный файл PDF. Он может содержать вредоносное ПО, которое может заразить ваш компьютер и совершить с ним ужасные вещи.

Вы хотите преобразовать этот PDF-файл в «надежный» PDF-файл, в котором нет вредоносных программ, не подвергая опасности ваш компьютер с Ubuntu.

Метод

Идея состоит в том, чтобы установить Multipass на вашем компьютере с Ubuntu и использовать основную виртуальную машину (ВМ) по умолчанию для «сглаживания» ненадежного файла PDF. Процесс выравнивания PDF включает преобразование файла PDF в файл PostScript (PS), а затем преобразование файла PS обратно в PDF. Полученный PDF-файл является «доверенным», поскольку никакие вредоносные программы в исходном PDF-файле не выдерживают процесса двойного преобразования.

Наконец, после завершения преобразования виртуальная машина уничтожается. Таким образом, любые изменения, которые могут быть внесены в виртуальную машину вредоносным ПО в исходном PDF-файле, уничтожаются вместе с ним.

Подтверждение концепции

Это решение основано на командной строке, где мы будем вводить (или вставлять) команды в терминал.

Сначала давайте установим Multipass на ваш компьютер с помощью следующей команды:

sudo snap install multipass

Вам нужно сделать это только один раз.

Остальная работа выполняется сценарием 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 в другой папке, сценарий (в том виде, в котором он написан) не найдет его.

Вот список вещей, которые произойдут после запуска этого сценария:

  1. Будет создана виртуальная машина
  2. На виртуальной машине будет установлена ​​минимальная версия Ubuntu
  3. Сценарий установит ghostscript , необходимый для преобразования
  4. Недоверенный файл PDF будет скопирован в виртуальное хранилище виртуальной машины.
  5. Непроверенный PDF-файл будет преобразован во временный файл PS, а
  6. Временный файл PS будет преобразован в «надежный» PDF-файл с префиксом «Truted-».
  7. Надежный PDF-файл будет перемещен обратно в вашу домашнюю папку.
  8. ВМ будет остановлена, удалена и очищена.

Весь этот процесс займет некоторое время, особенно запуск виртуальной машины и установка ghostscript .

Примечание: если ненадежный файл PDF очень велик, на многопроходной виртуальной машине может не хватить виртуальной памяти, выделенной по умолчанию. См. Документацию Multipass о том, как выделить больше памяти для виртуальной машины.

Даунсайд

Насколько я могу судить, нет способа сделать снимок основной виртуальной машины в Multipass после установки Ghostscript и развернуть эту сохраненную виртуальную машину, чтобы в следующий раз вам нужно было очистить PDF-файл. Если бы это было возможно, процесс занял бы немного меньше времени.

Другой способ

Другим способом достижения аналогичных результатов может быть использование контейнеров LDX / LXC .LXD поддерживает моментальные снимки, и пользовательский контейнер только с Ghostscript может быть немного легче, чем полноценная виртуальная машина. Однако у меня нет опыта работы с LXD / LXC.

Надеюсь, это поможет

2
ответ дан 4 September 2021 в 09:28

Другие вопросы по тегам:

Похожие вопросы: