web-dev-qa-db-ja.com

ディレクトリ内の複数のOpenPGPファイルを復号化する

ディレクトリには、filename.xyz.gpgという形式の数百のgpg暗号化ファイルがあります。「xyz」は任意の拡張子です。各ファイルのパスワードを手動で入力する必要がないように復号化されたfilename.xyzを生成するには、すべてのファイルを復号化する必要があります。

「Testing」ディレクトリに対して次のことを試しました。

for file in 'ls Testing'; do (echo <password>|gpg --passphrase-fd 0 -d $file 
--output     $file.decrypted);

コマンドプロンプト>で終了するだけで、何も起こりません。

構文の問題は何ですか? bash Shellループなしでこれを行うためのより効率的な方法はありますか?

20
user1815498

マニュアルで述べられているように、--batchオプションを追加する必要があります:

   --passphrase-fd n
          Read the passphrase from file descriptor n. Only the first line will be read from file descriptor n. If you use 0 for n, the passphrase will be read from
          STDIN. This can only be used if only one passphrase is supplied.  Note that this passphrase is only used if the option --batch has also been given.  This is
          different from gpg.

   --passphrase string
          Use string as the passphrase. This can only be used if only one passphrase is supplied. Obviously, this is of very questionable security on a multi-user sys‐
          tem. Don't use this option if you can avoid it.  Note that this passphrase is only used if the option --batch has also been given.  This is different from
          gpg.

次の2つの形式のいずれかを使用できます。

echo "passphrase" | gpg --passphrase-fd 0 --batch -d --output "decrypted.file" "file.gpg"

またはより単純:

gpg --passphrase "passphrase" --batch -d --output "decrypted.file" "file.gpg"

次のようなスクリプトを試して、ファイルを抽出できます。

#!/bin/bash

read -rsp "Enter passphrase: " PASSPHRASE

for FILE in *.*.gpg; do
    echo "Extracting $FILE to ${FILE%.gpg}."
    echo "$PASSPHRASE" | gpg --passphrase-fd 0 --batch -d --output "${FILE%.gpg}" "$FILE"
done
14
konsolebox

gpgは複数のファイルを復号化できるため、ループを記述する必要はありません。

以下を試してください。一度パスワードを入力する必要があります。

gpg --passphrase-fd 0 --decrypt-files *.gpg 
23
dogbane

私は成功しました

gpg --decrypt-files *.gpg

cf. https://serverfault.com/a/388068/103585

3
Gabe Kopley

それは私のために以下のコマンドで動作しました:

単一ファイルの場合:gpg --decrypt --input C:\PGPFiles\[encryptedfilename.pgp] --passphrase [yourpassphrase]

複数のファイルの場合:gpg --decrypt --input C:\PGPFiles\* --passphrase [yourpassphrase]

0

私はgpg --decrypt-files *で成功しましたが、*。gpgでは成功しませんでした

0
Ong Ming Soon