Servicio de automatización para cifrar o descifrar con openssl

2

¿Puedo crear dos servicios de Automator que me permitan cifrar o descifrar archivos? Por lo tanto, me gustaría hacer clic derecho en un archivo y hacer clic en 'Cifrar', el archivo .txt se cifraría en un .enc usando openssl:

pass=$(osascript -e 'tell app (path to frontmost application as text)
text returned of (display dialog "Enter password:" default answer "")
end')
for f in "$@"; do
    printf %s "$pass" | openssl enc -aes-256-cbc -salt -in "$f" -out "${f%.*}.enc" -pass stdin
done

¿Puedo crear una versión de descifrado que me devolverá el archivo .txt original? ¿O puedo escribir un servicio que sepa si quiero cifrar o descifrar y ejecutar de la manera necesaria?

    
pregunta janniks 28.01.2013 - 15:17

1 respuesta

0

Seleccione la plantilla de servicio, cambie el tipo de entrada a archivos, agregue una acción Ejecutar el script de shell, seleccione la entrada de paso como argumentos y pegue este script:

pass() {
    osascript - "$1" <<END
    on run args
    tell app (path to frontmost application as text)
    text returned of (display dialog ("Enter password for " & item 1 of args) default answer "")
    end
    end
END
    [ $? != 0 ] && exit 0
}

for f in "$@"; do
    if [[ "$f" == *.enc ]]; then
        pass "$f" | openssl enc -d -aes-256-cbc -pass stdin -in "$f" -out "${f%.enc}"
    else
        pass "$f.enc" | openssl enc -aes-256-cbc -salt -pass stdin -in "$f" -out "$f.enc"
    fi
done
exit 0

No muestra mensajes de error específicos, debe ejecutar el servicio nuevamente si ingresa una contraseña incorrecta y no hay forma de usar la misma contraseña para varios archivos. Sería más fácil hacerlo solo desde un shell.

    
respondido por el user495470 29.01.2013 - 03:29

Lea otras preguntas en las etiquetas