it-swarm.com.de

entschlüsseln mehrerer OpenPGP-Dateien in einem Verzeichnis

Ich habe mehrere hundert gpg-verschlüsselte Dateien in einem Verzeichnis mit dem Format Dateiname.xyz.gpg, wobei "xyz" eine beliebige Erweiterung ist. Ich muss alle Dateien entschlüsseln, um dateiname.xyz so zu entschlüsseln, dass ich das Kennwort für jede Datei nicht manuell eingeben muss.

Ich habe folgendes für das Verzeichnis "Testing" ausprobiert:

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

Ich beende gerade mit dem Befehl Prompt> und nichts passiert.

Was ist los mit meiner Syntax? Gibt es eine effizientere Möglichkeit, dies ohne eine bash-Shell-Schleife zu tun?

18
user1815498

Wie im Handbuch erwähnt, müssen Sie die Option --batch hinzufügen:

   --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.

Sie können eine der beiden folgenden Formen haben:

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

Oder einfacher:

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

Sie können ein Skript wie folgt ausprobieren, um Ihre Dateien zu extrahieren:

#!/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 kann mehrere Dateien entschlüsseln, so dass Sie keine Schleife schreiben müssen.

Versuche Folgendes. Sie müssen Ihr Passwort einmal eingeben.

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

Ich hatte Erfolg mit

gpg --decrypt-files *.gpg

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

1
Gabe Kopley

Es funktionierte mit folgenden Befehlen für mich:

Für eine einzelne Datei: gpg --decrypt --input C:\PGPFiles\[encryptedfilename.pgp] --passphrase [yourpassphrase]

Für mehrere Dateien: gpg --decrypt --input C:\PGPFiles\* --passphrase [yourpassphrase]

0

Ich hatte Erfolg mit gpg --decrypt-files * , Aber nicht mit * .gpg

0
Ong Ming Soon