8

ghostscriptを使用してPDFがパスワードで保護されているかどうかを確認することはできますか?コマンドは何でしょうか?ghostscriptを使用してPDFパスワードを削除できることは知っていますが、PDFがパスワードで保護されているか、セキュリティが有効になっているかを確認するだけです。

4

5 に答える 5

10

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は所有者パスワードを無視します(これを参照)。

于 2010-12-09T10:02:06.513 に答える
2

これによりpdftk、操作を試みるだけでユーザーパスワードやオーナーパスワードを検出することができますdump_data

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

ここでの問題は、パスワードが何を防ぐのかわからないことです:読み取り、データの抽出、変更...?

于 2010-12-09T08:22:21.380 に答える
2

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を使用してセキュリティを削除し、元のフォルダに戻します。

于 2016-07-05T12:08:21.563 に答える
2

を使用してテストできますpdfinfo

pdfinfo $filename &>/dev/null;
if [[ $? -eq 1 ]] ; then
   echo "File can not be opened for reading"
fi
于 2018-06-27T22:58:55.210 に答える
0

@Benoitの答えは、コンソールで醜いエラーを出しますが、機能します。

だから私はこれをエラー出力を抑制したワンライナーに入れます:

protected=0 && pdftk "input.pdf" dump_data output /dev/null dont_ask 2>/dev/null || protected=1
于 2021-09-17T08:47:33.077 に答える