encriptar desencriptar archivos bash encryption gnupg

bash - desencriptar - encriptar archivos linux



descifrar múltiples archivos OpenPGP en un directorio (4)

Tengo varios cientos de archivos encriptados gpg en un directorio, del formato nombre_archivo.xyz.gpg donde "xyz" es una extensión arbitraria. Necesito descifrar todos los archivos para generar el nombre de archivo.xyz descifrado de tal manera que no tenga que ingresar manualmente la contraseña para cada archivo.

He intentado lo siguiente para el directorio "Pruebas":

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

Acabo de terminar con un indicador de comando> y no pasa nada.

¿Cuál es el problema con mi sintaxis? ¿Hay alguna forma más eficiente de hacerlo sin un bucle de shell bash?


Como se dice en el manual, debe agregar la opción --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.

Puedes tener cualquiera de estas dos formas:

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

O más simple:

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

Puedes probar un script como este para extraer tus archivos:

#!/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



Tuve éxito con gpg --decrypt-files * pero no * .gpg


gpg puede descifrar múltiples archivos, por lo que no debería necesitar escribir un bucle.

Intenta lo siguiente. Deberá ingresar su contraseña una vez.

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