Usando Automator ou AppleScript para criptografar / descriptografar com OpenSSL -- applescript campo com automator campo com encryption campo com openssl camp apple Relacionado O problema

Using Automator or AppleScript to encrypt/decrypt with OpenSSL


3
vote

problema

português

Eu gostaria de saber como usar o Automator ou o AppleScript para criar uma gota que comprima / descompactar (tar.gz) e criptografar / descriptografar com arquivos openssl e / ou diretórios caíram nele. O fluxo de trabalho no que a gota fará para criptografar seria algo assim:

  • arquivos / diretório é descartado na gotícula
  • arquivos / diretório é compactado
  • Um prompt de senha é apresentado
  • openssl é usado para criptografar arquivo, arquivo é renomeado para * .Encrypted

para descriptografar:

  • o arquivo é descartado na gotícula
  • Se o arquivo for denominado * .Encrypted, um prompt de senha será apresentado. Se não, criptografe o fluxo de trabalho
  • o arquivo é descriptografado e renomeado
  • Arquivos é descompactado

Alguém?

english

I would like to know how to use Automator or AppleScript to create a droplet that would compress/uncompress (tar.gz) and encrypt/decrypt with OpenSSL files and/or directories dropped in it. The workflow on what the droplet will do to encrypt would be something like this:

  • Files/directory is dropped on droplet
  • Files/directory is compressed
  • A password prompt is presented
  • OpenSSL is used to encrypt file, file is renamed to *.encrypted

To decrypt:

  • File is dropped on droplet
  • If file is named *.encrypted, a password prompt is presented. If not, do encrypt workflow
  • File is decrypted, and renamed
  • Files is uncompressed

Anyone?

           

Lista de respostas

2
 
vote
vote
Melhor resposta
 

Na verdade, o Automator não é uma má escolha para isso, pois permite combinar o AppleScript e Shell Scripting sem realmente ter que misturá-los (o que leva você diretamente para escapar do inferno, depois de uma curta estadia no citando os valores do purgatório) e entre eles uma forma ordenada. Além disso, além de um aplicativo de gotículas, o Automator permitirá que você crie um serviço com excelente integração no localizador:

    .
  1. Crie um novo fluxo de trabalho automático.
    • Selecione "Aplicativo" quando solicitou que tipo de fluxo de trabalho para criar - que receberá uma gotícula que processa arquivos e pastas que você envia ou
    • Selecione "Ação de Pasta" e SET "Aceita Selecionado" para "Arquivos e Pastas" - que receberá um item no menu Finder e no menu de contexto de arquivos de pastas (todas as traduções aproximadas, estou em um sistema alemão ).
  2. Adicione uma ação "Executar AppleScript" e edite seu conteúdo da seguinte maneira:

      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    

    - isso irá solicitar o usuário para a senha de criptografia e passá-lo como o primeiro argumento para a próxima ação.

  3. Adicione uma ação "Executar script de shell", configurando-a para obter sua entrada por meio de Argumentos (não stdin , como é o padrão). Certifique-se de que o shell esteja configurado para /bin/bash . Edite o conteúdo do script da seguinte maneira:

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

    - isso irá descriptografar e untar-gzip .encrypted arquivos, tar-gzip e criptografar todos os outros arquivos e diretórios com a criptografia AES 256-CBC e a senha fornecida.

theice empteor: manuseio de erros é primitivo (basicamente, o for loop pula uma iteração quando encontra um erro), não há registro e não há falhas no Entradas de senha erradas (você pode querer perguntar duas vezes e comparar os resultados, como o utilitário shell faz). Desastres não devem acontecer, porém, como os arquivos são excluídos apenas quando as etapas anteriores são concluídas com êxito.

Por fim, talvez você queira investigar alternativas para solicitar uma senha - um arquivo de senha em uma tecla USB, digamos (use -pass file:/Volumes/volname/passfile em vez de -pass pass:$password , pule o AppleScript Etapa e remova a primeira linha do script shell) ou armazene sua senha no chaveiro OS X e recuperando-o programaticamente (veja este resposta do meu em troca de pilha para maneiras de fazer isso).

 

Actually, Automator is not a bad choice for this, as it allows you to combine AppleScript and shell scripting without actually having to mix them (which leads you straight to escaping hell, after a short stay in quoting purgatory) and pass values between them an orderly fashion. Also, besides a droplet application, Automator will allow you to create a Service with excellent integration into Finder:

  1. Create a new Automator workflow.
    • either select xe2x80x9cApplicationxe2x80x9d when prompted what type of workflow to create xe2x80x93 that will get you a droplet that processes files and folders you send to it, or
    • select xe2x80x9cFolder actionxe2x80x9d and set xe2x80x9cAccepts selectedxe2x80x9d to xe2x80x9cfiles and foldersxe2x80x9d xe2x80x93 that will get you an item in the Finder Services and context menu of files an folders (all translations approximate, Ixe2x80x99m on a German system).
  2. Add a "Run AppleScriptxe2x80x9d action and edit its contents as follows:

    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 

    xe2x80x93 this will prompt the user for the encryption password and pass it as the first argument to the next action.

  3. Add a xe2x80x9cRun Shell Scriptxe2x80x9d action, setting it to get its input through arguments (not stdin, as is default). Make sure the shell is set to /bin/bash. Edit the script contents as follows:

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

    xe2x80x93 this will decrypt and untar-gzip .encrypted files, tar-gzip and encrypt all other files and directories with AES 256-CBC encryption and the password given.

Caveat Empteor: error handling is primitive (basically, the for loop skips an iteration when it encounters an error), there is no logging and there is no failsafe against wrong password inputs (you might want to ask twice and compare the results, as the shell utility does). Disasters should not happen, though, as files are only deleted when the previous steps complete successfully.

Finally, you might want to investigate alternatives to prompting for a password xe2x80x93 a passphrase file on a USB key, say (use -pass file:/Volumes/volname/passfile instead of -pass pass:$password, skip the Applescript step and remove the first line of the shell script), or storing your password in the OS X keychain and retrieving it programmatically (see this answer of mine on Stack Exchange for ways to do that).

 
 
         
         
1
 
vote

Eu construí uma gota de aplicativos para comprimir e amp; criptografar uma pasta. Você pode precisar mudar de casos em compressa e amp; descompactar e alterar o comando para obter o mesmo.

https://github.com/palaniraja/passarchive

Olhe para o código - https //github.com/palaniraja/passarchive/blob/master/passarchive.app/contents/resources/scripts/main.cpt

meu script é basicamente uma pequena versão embelezada de

http://hints.macworld.com/article.php?story=20040923120629702 < / a>

 

I built an applescript droplet to compress & encrypt a folder. You may need to switch cases on compress & decompress and change command to achieve the same.

https://github.com/palaniraja/PassArchive

look at the code - https://github.com/palaniraja/PassArchive/blob/master/PassArchive.app/Contents/Resources/Scripts/main.scpt

My script is basically a little more beautified version of

http://hints.macworld.com/article.php?story=20040923120629702

 
 
 
 

Perguntas relacionadas

10  À luz da vulnerabilidade do Freak TLS, como posso desativar as roupas cifras inseguras manualmente no Safari?  ( In the light of the freak tls vulnerability how may i disable insecure cipher s ) 
Um grupo de pesquisa chamado smack lançou uma vulnerabilidade conhecida como aberração que pode ser usada para o homem-in-the-meio (Mitm) ataque. A vulnerab...

1  Ruby 2.0.0 não é instalado por causa do openSSL  ( Ruby 2 0 0 fails to install because of openssl ) 
Não consigo instalar o Ruby da origem, na configuração ( ./ configure ) afirma Ignore OpenSSL broken by Apple. Please use another openssl. (e.g. using `con...

1  Atualizando OpenSSL sem vinculação e soluções alternativas  ( Upgrading openssl without linking and workarounds ) 
Estou confuso com todas as postagens, perguntas, respostas, soltando symlink, ligação, bug heartbleed, etc ... que existem em atualizar o seu openssl em um ...

3  Ruby 1.9.3's Infamous OS X OpenSSL Segfault em http.rb: 799  ( Ruby 1 9 3s infamous os x openssl segfault in http rb799 ) 
[post encurtado e atualizado com uma resposta.] Ruby 1.9.3 compilado no OS X 10.7.4 com os Macports falha nos meus aplicativos de trilhos ao usar SSL em htt...

3  Usando Automator ou AppleScript para criptografar / descriptografar com OpenSSL  ( Using automator or applescript to encrypt decrypt with openssl ) 
Eu gostaria de saber como usar o Automator ou o AppleScript para criar uma gota que comprima / descompactar (tar.gz) e criptografar / descriptografar com arqu...

128  Como atualizar o OpenSSL no OS X?  ( How to upgrade openssl in os x ) 
hoje o Heartbleed OpenSSL Explorit foi anunciado na natureza, que permite que um invasor detecta e roube as chaves do servidor privado (permitindo que eles ...

7  Onde está Ruby procurando por ssl_cert_file?  ( Where is ruby looking for ssl cert file ) 
Eu estou tentando descobrir onde Ruby espera encontrar sua lista de CA OpenSSL. Meu ambiente é: Mac OS 10.7.5 openssl do homebrew rbenv de homebrew R...

0  Como compilar PHP com openssl no OS X 10.9?  ( How to compile php with openssl on os x 10 9 ) 
Então, eu estou tentando compilar PHP 5.6.10 da fonte enfrentou o seguinte problema: Undefined symbols for architecture x86_64: "_PKCS5_PBKDF2_HMAC", r...

2  Quais alternativas para openssl eu tenho que calcular um hash SHA-256?  ( Which alternatives to openssl do i have to calculate a sha 256 hash ) 
Como calcular sha-2 Hash Em um arquivo para gerar um Resultado de 256 bits (SHA-256)? Nos velhos tempos, usamos o openssl ferramenta. Ouvi dizer que...

8  Ruby 2.0.0 Instalar via RVM: Erros ao redor OpenSSL  ( Ruby 2 0 0 install via rvm errors surrounding openssl ) 
Usando: Mountain Lion 10.8.2 , RVM 1.18.15 Ter problemas com, aparentemente , openssl ao tentar instalar o Ruby 2.0.0 via RVM: $ rvm install 2.0.0 ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.