script
February 6

Отчищаем PDF файлы от вредоносного/шпионского кода

По причине широкого использования формата PDF, он зачастую используется всякими чудаками на букву М для распространения зловредного или шпионского ПО.

Скачивая PDFку, например книжку с сайта или ТГ-канала, легко намотать на процессор своего ПеКа какую-нибудь заразу в виде бэкдора, майнера или кейлоггера от ЦРУ/АНБ/ФСБ/СБУ

Для профилактики всякого нехорошего, рекомендуется проверять загруженные файлы антивирусом или на сайте "вирустотал".

Также можно почистить файл с помощью простого питонического скрипта.

После запуска скрипта, открывается окно выбора папки, в которой содержатся подозрительные PDF файлы, происходит их отчистка и сохранение под новыми именами с префиксом clean_

import os
from tkinter.filedialog import askdirectory
from PyPDF2 import PdfReader, PdfWriter


def pdf_cleaner(input_pdf_directory):
    for filename in os.listdir(input_pdf_directory):
        if filename.endswith('.pdf'):
            pdf_path = os.path.join(input_pdf_directory, filename)

            pdf_reader = PdfReader(pdf_path)
            pdf_writer = PdfWriter()
            # Remove Annotations
            for page in pdf_reader.pages:
                pdf_writer.add_page(page)
                if page.annotations:
                    page.annotations.clear()
            # Add fake Metadata (optional)
            pdf_writer.add_metadata(
                {
                    "/Author": "Comrade Major",
                    "/Producer": "KGB",
                }
            )

            # Save clean file
            new_pdf_path = os.path.join(input_pdf_directory, f'clean_{filename}')
            with open(new_pdf_path, 'wb') as new_pdf:
                pdf_writer.write(new_pdf)

            print(f'{filename} was cleaned!')


def main():
    # Ask the directory containing your PDFs
    pdf_directory = askdirectory()

    pdf_cleaner(pdf_directory)


if __name__ == '__main__':
    main()