Utilizzo di Automator o di AppleScript per crittografare / decodificare con OpenSSL

3

Vorrei sapere come usare Automator o AppleScript per creare un droplet che comprima / decomprimi (tar.gz) e crittografa / decifri con i file OpenSSL e / o le directory abbandonate. Il flusso di lavoro su ciò che farà la goccia per crittografare sarebbe qualcosa del tipo:

  • File / directory viene rilasciato su droplet
  • File / directory è compresso
  • Viene visualizzata una richiesta di password
  • OpenSSL viene utilizzato per crittografare il file, il file viene rinominato in * .encrypted

Per decrittografare:

  • Il file viene rilasciato su droplet
  • Se il file è denominato * .encrypted, viene visualizzata una richiesta di password. In caso contrario, criptare il flusso di lavoro
  • Il file è decrittografato e rinominato
  • I file non sono compressi

Chiunque?

    
posta daviesgeek 04.05.2012 - 12:17
fonte

2 risposte

1

In realtà, Automator non è una cattiva scelta per questo, in quanto consente di combinare AppleScript e script di shell senza doverli mescolare (che ti porta dritto a fuggire dall'inferno, dopo una breve sosta nel citare il purgatorio) e passare i valori tra di loro una moda ordinata. Inoltre, oltre a un'applicazione droplet, Automator ti permetterà di creare un servizio con un'eccellente integrazione nel Finder:

  1. Crea un nuovo flusso di lavoro di Automator.
    • selezionare "Applicazione" quando viene richiesto il tipo di flusso di lavoro da creare - che ti porterà un droplet che elabora i file e le cartelle che gli vengono inviati, oppure
    • seleziona "Servizio" e imposta "Accetta selezionato" su "file e cartelle" - che ti porterà un oggetto nel Finder Services e nel menu di scelta rapida dei file e delle cartelle (tutte le traduzioni sono approssimative, sono su un sistema tedesco) .
  2. Aggiungi un'azione "Esegui AppleScript" e modifica il suo contenuto come segue:

    on run {input, parameters}
        try
            tell application "System Events" to set thePassword to text returned of (display dialog "Please input your password for OpenSSL encryption" default answer "" with hidden answer)
        on error errorMessage number errorNumber
            if errorNumber is -128 then quit me -- user has canceled
            error errorMessage number errorNumber
        end try
        return (thePassword as list) & input
    end run
    

    - questo richiederà all'utente la password di crittografia e la passerà come primo argomento all'azione successiva.

  3. Aggiungi un'azione "Esegui script shell", impostandola per ottenere il suo input tramite argomenti (non stdin , come predefinito). Assicurati che la shell sia impostata su /bin/bash . Modifica il contenuto della sceneggiatura come segue:

    [[ -n $1 ]] && password="$1" && shift || exit 0
    for f in "$@"; do
        if [[ ${f##*.} = "encrypted" ]]; then
            fname="${f%.encrypted}"
            openssl enc -d -aes-256-cbc -salt -in "$f" -out "$fname".tar.gz -pass pass:$password || continue
            tar -xPf "$fname".tar.gz && rm "$fname".tar.gz || continue
        else
            fname=$([[ -f $f ]] && printf "${f%.*}" || printf "$f")
            tar -czPf "$fname".tar.gz "$f" || continue 
            openssl enc -aes-256-cbc -salt -in "$fname".tar.gz -out "$fname".encrypted  -pass pass:$password && rm -f "$fname".tar.gz || continue
        fi
    done
    

    - questo decrittografa e untar-gzip .encrypted file, tar-gzip e crittografa tutti gli altri file e directory con la crittografia AES 256-CBC e la password fornita.

Caveat Empteor: la gestione degli errori è primitiva (in pratica, il ciclo for salta un'iterazione quando incontra un errore), non vi è alcuna registrazione e non vi è alcun fail-safe contro gli input errati della password (tu potrebbe voler chiedere due volte e confrontare i risultati, come fa l'utilità della shell). Tuttavia, i disastri non dovrebbero accadere, poiché i file vengono eliminati solo quando i passaggi precedenti vengono completati correttamente.

Infine, potresti voler esaminare le alternative alla richiesta di una password: un passphrase su una chiave USB, ad esempio (usa -pass file:/Volumes/volname/passfile invece di -pass pass:$password , salta il passo Applescript e rimuovi la prima riga dello script della shell ), o memorizzare la password nel portachiavi di OS X e recuperarla a livello di programmazione (vedere questa mia risposta su Stack Exchange per i modi per farlo).

    
risposta data 11.05.2012 - 22:26
fonte
1

Ho creato una goccia di mele per comprimere & crittografare una cartella. Potrebbe essere necessario cambiare i casi su compress & decomprimi e cambia comando per ottenere lo stesso risultato.

link

guarda il codice - link

Il mio script è fondamentalmente una versione un po 'più abbellita di

link

    
risposta data 04.05.2012 - 16:19
fonte

Leggi altre domande sui tag