можно ли проверить, защищен ли pdf паролем с помощью ghostscript?

можно ли проверить, защищен ли pdf паролем с помощью ghostscript? какая будет команда? Я знаю, что вы можете удалить пароль PDF с помощью ghostscript, но все, что я хочу сделать, это просто проверить, защищен ли PDF паролем или включена ли безопасность.


person Aman    schedule 28.10.2010    source источник
comment
Запустив баунти, я также хотел бы знать, можно ли обнаружить защищенные паролем PDF-файлы с помощью других инструментов.   -  person Benoit    schedule 09.12.2010


Ответы (4)


checkuserpasswdPDF.sh:

#!/bin/sh

GS=~/gs/bin/gs
output=`$GS -dBATCH -sNODISPLAY "$1" 2>&1`
gsexit=$?

if [ "$gsexit" == "0" ]; then
  echo "Not user-password protected"
  exit 0;
else
  found=`echo "$output" |grep -o "This file requires a password"`
  if [ -z "$found" ]; then
    echo "Failed to invoke gs" 
    exit $gsexit
  else
    echo "Protected"
    exit 0;
  fi  
fi

Проверяет PDF-файлы, защищенные паролем пользователя: checkuserpasswdPDF.sh test.pdf.

GS игнорирует пароли владельцев (см. эту).

person khachik    schedule 09.12.2010
comment
хм, выглядит многообещающе, попробую - person Aman; 10.12.2010
comment
Эта команда занимает много времени для больших PDF-файлов и увеличивает нагрузку на сервер. - person Rishab; 24.02.2020

С помощью pdftk можно определить пароль пользователя или владельца, просто попытавшись выполнить операцию dump_data.

 protected=0
 pdftk "input.pdf" dump_data output /dev/null dont_ask || protected=1

Проблема здесь в том, что вы не знаете, что блокирует пароль: чтение, извлечение данных, изменение...?

person Benoit    schedule 09.12.2010
comment
я пробовал что-то подобное, но это ограничивало, и pdftk не всегда давал мне правильный результат. - person Aman; 10.12.2010

Используя файл bat, вы можете найти небольшой обходной путь, выполнив поиск «Зашифровать» в pdf-файлах. Его тихий быстрый поиск по многим файлам.

Findstr /M /I "Encrypt" *.pdf 

Это вернет все имена файлов, которые защищены (поскольку «Зашифровать» будет записано в файле, поскольку dos его читает)

Может быть, это то, что кто-то может использовать. Я использую:
for /f %%a in ('Findstr /M /I "Encrypt" *.pdf') do move %%a c:\tempfiles\
для перемещения всех защищенных PDF-файлов в c:\tempfiles. Оттуда я использую ghostscript для удаления безопасности и перемещаю его обратно в исходную папку.

person TrueTom    schedule 05.07.2016
comment
Имейте в виду, что это не делает различий между защитой паролем владельца и защитой паролем пользователя. Этот тест показывает, есть ли какая-либо защита паролем. - person Reza S; 26.07.2018

Вы можете протестировать с помощью pdfinfo

pdfinfo $filename &>/dev/null;
if [[ $? -eq 1 ]] ; then
   echo "File can not be opened for reading"
fi
person Reza S    schedule 27.06.2018