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