문제

문제

제목이 거의 그것을 말해줍니다.신뢰할 수 있는 PDF로 변환는 귀중한 도구이며 우분투 생태계에서 구현하면 좋을 것입니다.

편집: '신뢰할 수 있는 PDF'는 각 페이지에 (a) 신뢰할 수 있는 프로세스(즉, 해당 목적에 맞게 회전된 신뢰할 수 있는 VM)에서 생성된 래스터 이미지와 선택적으로 (b) 해당 프로세스의 텍스트 OCR만 포함하는 PDF 파일입니다. 래스터 이미지.

답변1

문제

신뢰할 수 없는 PDF 파일이 있습니다. 여기에는 악성 코드가 포함되어 있을 수 있으며 악성 코드가 컴퓨터를 감염시켜 끔찍한 일을 할 수 있습니다.

Ubuntu 컴퓨터를 위험에 빠뜨리지 않고 맬웨어가 없는 "신뢰할 수 있는" PDF로 이 PDF를 변환하고 싶습니다.

방법

아이디어는 설치하는 것입니다멀티패스Ubuntu 컴퓨터에서 기본 기본 가상 머신(VM)을 사용하여 신뢰할 수 없는 PDF 파일을 "평탄화"합니다. PDF를 병합하는 과정에는 PDF 파일을 포스트스크립트(PS) 파일로 변환한 다음 PS 파일을 다시 PDF로 변환하는 작업이 포함됩니다. 원본 PDF의 모든 악성 코드는 이중 변환 프로세스에서 살아남지 못할 것으로 예상되므로 결과 PDF는 "신뢰할 수 있습니다".

마지막으로 변환이 완료되면 VM이 삭제됩니다. 따라서 원본 PDF의 맬웨어에 의해 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 파일이 다른 폴더에 있으면 스크립트(작성된 대로)가 해당 파일을 찾을 수 없습니다.

이 스크립트를 시작하면 발생하는 작업 목록은 다음과 같습니다.

  1. VM이 생성됩니다.
  2. 최소 버전의 Ubuntu가 VM에 설치됩니다.
  3. ghostscript변환에 필요한 스크립트가 설치됩니다 .
  4. 신뢰할 수 없는 PDF 파일은 VM의 가상 저장소에 복사됩니다.
  5. 신뢰할 수 없는 PDF는 임시 PS 파일로 변환되고
  6. 임시 PS 파일은 "Trusted-" 접두사가 붙은 "신뢰할 수 있는" PDF로 변환됩니다.
  7. 신뢰할 수 있는 PDF가 홈 폴더로 다시 이동됩니다.
  8. VM이 중지, 삭제 및 제거됩니다.

이 전체 프로세스, 특히 VM 시작 및 ghostscript.

참고: 신뢰할 수 없는 PDF 파일이 매우 큰 경우 Multipass VM은 기본적으로 할당된 가상 메모리가 부족할 수 있습니다. VM에 더 많은 메모리를 할당하는 방법은 멀티패스 설명서를 참조하세요.

단점

내가 알 수 있는 한, Ghostscript를 설치한 후 Multipass에서 기본 VM의 스냅샷을 찍고 다음에 PDF를 삭제해야 할 때 저장된 VM을 회전할 수 있는 방법이 없습니다. 이것이 가능하다면 프로세스에 소요되는 시간이 조금 줄어들 것입니다.

또 다른 방법

유사한 결과를 얻는 또 다른 방법은 다음을 사용하는 것입니다.LDX/LXC 컨테이너. LXD는 스냅샷을 지원하며 Ghostscript만 있는 사용자 정의 컨테이너는 전체 VM보다 약간 가벼울 수 있습니다. 그러나 저는 LXD/LXC에 대한 경험이 없습니다.

도움이 되었기를 바랍니다

관련 정보