3 votes

Comment puis-je créer une image AES-256 bit en utilisant Automator ?

Par défaut, Automator utilise le cryptage 128 bits pour la création d'images. Je ne veux pas ouvrir l'utilitaire de disque en permanence pour créer des images cryptées. J'ai donc pensé à utiliser hdiutil dans Automator.

Comment définir le chemin du dossier source dans mon flux de travail ? Comment créer une image avec le cryptage le plus élevé en utilisant Automator ?

Automator Workflow

4voto

Pirooz Points 486

Vous n'avez pas besoin d'Automator pour faire cela. Utilisez simplement le cousin d'Automator, AppleScript.

  1. Ouvrir l'éditeur script en /Applications/Utilities
  2. Copiez et collez le code ci-dessous
  3. Allez dans Fichier>Exportation
  4. Format de fichier : Application
  5. Faites glisser les fichiers et les dossiers sur l'icône (vous pouvez même ajouter l'icône au document pour un accès facile).
  6. Entrez votre mot de passe
  7. Les fichiers seront créés dans le même répertoire avec un ajout de _EncryptedDMG.dmg

Code :

on open myFiles
    set theCount to 1
    display dialog "Enter the password to encrypt" default answer "" with hidden answer
    set myPassword to the text returned of the result as text
    set d to "•"
    set td to ""
    repeat length of myPassword times
        set td to td & d
    end repeat
    display dialog "Verify the password: " & td default answer "" with hidden answer
    set theVerify to the text returned of the result
    if myPassword is theVerify then
        tell application "System Events"
            repeat with myFile in myFiles
                set myPath to the POSIX path of myFile
                set myName to the characters 1 thru ((offset of "." in (name of myFile as text)) - 1) of (name of myFile as text)
                set myContainer to (the POSIX path of (container of myFile))
                do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & myPath & "' '" & myContainer & "/" & myName & "'"
                do shell script "mv '" & myPath & "' ~/.Trash"
                display notification "File created at " & myContainer & "/" & myName & ".dmg. Original file deleted." with title "Encryption Complete" subtitle "File " & theCount & " of " & (length of myFiles) sound name "glass"
            end repeat
        end tell
    else
        display dialog "Error: Passwords did not match"
    end if
end open

Si vous souhaitez ajouter le menu contextuel, copiez et collez le code suivant dans une "Exécuter le script d'Apple". Action.

on run {myFiles, parameters}
    set theCount to 1
    display dialog "Enter the password to encrypt" default answer "" with hidden answer
    set myPassword to the text returned of the result as text
    set d to "•"
    set td to ""
    repeat length of myPassword times
        set td to td & d
    end repeat
    display dialog "Verify the password: " & td default answer "" with hidden answer
    set theVerify to the text returned of the result
    if myPassword is theVerify then
        tell application "System Events"
            repeat with myFile in myFiles
                set myPath to the POSIX path of myFile
                set myName to the characters 1 thru ((offset of "." in (name of myFile as text)) - 1) of (name of myFile as text)
                set myContainer to (the POSIX path of (container of myFile))
                do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & myPath & "' '" & myContainer & "/" & myName & "'"
                do shell script "mv '" & myPath & "' ~/.Trash"
                display notification "File created at " & myContainer & "/" & myName & ".dmg. Original file deleted." with title "Encryption Complete" subtitle "File " & theCount & " of " & (length of myFiles) sound name "glass"
            end repeat
        end tell
    else
        display dialog "Error: Passwords did not match"
    end if
end run

Lorsque vous ouvrez Automator, sélectionnez le menu contextuel, puis les paramètres suivants

enter image description here

Remarque : vous serez heureux d'apprendre que MacOS Mojave apportera une fonctionnalité similaire de manière native. Il existe une fonction d'ajout de mot de passe dans le menu contextuel qui permet de compresser et de crypter le fichier de la même manière que cette application, mais il n'y a toujours pas de barre de progression.

Note [2] : Ce script va pas a fonctionné si le dossier contient des fichiers verrouillés (Fichier>Info>Locked).

0 votes

Ainsi, l'utilisation d'une action "Shell script" dans Automator fonctionnerait également ? :-)

0 votes

Josh, merci. C'est exactement ce que je cherchais. La raison pour laquelle je voudrais utiliser Automator est que je peux l'ajouter au dossier des services comme menu contextuel (clic droit). De plus, Automator affiche la progression du chiffrement dans la barre de menu. Comment puis-je utiliser l'AppleScript dans le flux de travail d'Automator ?

1 votes

@howdytom Afficher la progression dans AppleScript et Automator sont tous deux possibles, mais impossibles lorsqu'on utilise so she'll script. C'est juste une limite des deux. Pour le menu contextuel je vais éditer la réponse bientôt.

2voto

wch1zpink Points 6067

J'ai estimé qu'il y avait suffisamment de différences entre ma solution et l'autre réponse postée, pour proposer ce script comme une autre réponse au post original.

Enregistrer ce script comme une application dans l'app ScriptEditor

Ce script permet à l'utilisateur de déposer plusieurs fichiers ou dossiers, directement sur l'icône de cette application... Et donne également à l'utilisateur l'option de conserver ou de supprimer les fichiers ou dossiers originaux.

Si cette application script est exécutée de manière normale en double-cliquant sur l'application, l'utilisateur a la possibilité de choisir des fichiers uniques ou multiples ou de choisir des dossiers uniques ou multiples, à traiter. En outre, l'utilisateur a la possibilité de supprimer ou de conserver les fichiers originaux.

Ceci a été testé avec la dernière version de MacOS High Sierra.

UPDATE : Ce code a été modifié pour traiter les fichiers ou dossiers qui sont verrouillés.

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

global deleteFiles, isTrue, theCount, myPassword, theName

on open theFiles
    --HANDLE THE CASE WHERE THE SCRIPT IS LAUNCHED BY DROPPING FILES ONTO APP ICON
    repeat with i from 1 to count of theFiles
        set thisItem to item i of theFiles
        tell application "Finder"
            if locked of (get properties of thisItem) then
                set locked of thisItem to false
            end if
        end tell
        set isTrue to missing value
        set theCount to 0
        set theName to missing value
        set theFolder to thisItem
        tell application "Finder"
            set theContainer to container of theFolder as alias
            set theName to name of (get properties of theFolder)
        end tell
        run my setPassword
        run my keepOriginals
        set myPath to POSIX path of theFolder
        set theContainer to POSIX path of theContainer
        do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & ¬
            myPath & "' '" & theContainer & theName & "_Encrypted'"
        if deleteFiles = true then
            tell application "Finder" to delete theFolder
        end if
    end repeat
end open

on run
    --HANDLE THE CASE WHERE THE SCRIPT IS LAUNCHED  DROPPED FILES
    activate
    set theChoice to display dialog ¬
        "WOULD YOU LIKE TO CHOOSE FILES OR FOLDERS?" buttons {"Cancel", "Choose Files", "Choose Folders"} ¬
        default button ¬
        "Choose Folders" cancel button ¬
        "Cancel" with title ¬
        "Make Your Choice" with icon 1 ¬
        giving up after 20
    if button returned of theChoice is "Choose Files" then
        run my chooseFiles
    else if button returned of theChoice is "Choose Folders" then
        run my chooseFolders
    else if button returned of theChoice is "" then
        return
    end if
end run

script chooseFiles
    activate
    set theFiles to (choose file with multiple selections allowed)
    repeat with i from 1 to count of theFiles
        set thisItem to item i of theFiles
        tell application "Finder"
            if locked of (get properties of thisItem) then
                set locked of thisItem to false
            end if
        end tell
        set isTrue to missing value
        set theCount to 0
        set theName to missing value
        set theFolder to thisItem
        tell application "Finder"
            set theContainer to container of theFolder as alias
            set theName to name of (get properties of theFolder)
        end tell
        run my setPassword
        run my keepOriginals
        set myPath to POSIX path of theFolder
        set theContainer to POSIX path of theContainer
        do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & ¬
            myPath & "' '" & theContainer & theName & "_Encrypted'"
        if deleteFiles = true then
            tell application "Finder" to delete theFolder
        end if
    end repeat
end script

script chooseFolders
    activate
    set theFiles to (choose folder with multiple selections allowed)
    repeat with i from 1 to count of theFiles
        set thisItem to item i of theFiles
        try
            tell application "Finder"
                set locked of every item of entire contents of thisItem to false
            end tell
        end try
        set isTrue to missing value
        set theCount to 0
        set theName to missing value
        set theFolder to thisItem
        tell application "Finder"
            set theContainer to container of theFolder as alias
            set theName to name of (get properties of theFolder)
        end tell
        run my setPassword
        run my keepOriginals
        set myPath to POSIX path of theFolder
        set theContainer to POSIX path of theContainer
        do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & ¬
            myPath & "' '" & theContainer & theName & "_Encrypted'"
        if deleteFiles = true then
            tell application "Finder" to delete theFolder
        end if
    end repeat
end script

script failedPassVerify
    activate
    display dialog ¬
        "You Have Unsuccessfully Verified Your Password 3 Times In A Row... Please Try Again Later" buttons {"OK"} ¬
        default button ¬
        "OK" with title ¬
        "UNSUCCESSFUL PASSWORD VERIFICATION" with icon 0 ¬
        giving up after 10
    quit me
end script

script keepOriginals
    set keepOrDelete to display dialog ¬
        ("Would You Like To Delete The Original Item... " & theName & "?") buttons {"DELETE ORIGINALS", "KEEP ORIGINALS"} ¬
        default button 2 ¬
        with title ¬
        "KEEP OR DELETE ORIGINALS?" with icon 0 ¬
        giving up after 30
    if button returned of keepOrDelete is "DELETE ORIGINALS" then
        set deleteFiles to true
    else if button returned of keepOrDelete is "KEEP ORIGINALS" then
        set deleteFiles to false
    else if button returned of keepOrDelete is "" then
        set deleteFiles to false
    end if
end script

script setPassword
    repeat until isTrue = true
        activate
        set myPassword to text returned of (display dialog ¬
            ("ENTER THE PASSWORD TO ENCRYPT DISK IMAGE " & theName) default answer "" with hidden answer)
        activate
        set myPassword2 to text returned of (display dialog ¬
            "PLEASE VERIFY YOUR PASSWORD" default answer "" with hidden answer)
        set isTrue to myPassword2 = myPassword
        if isTrue = false then
            set theCount to theCount + 1
            if theCount = 3 then
                run my failedPassVerify
            end if
            activate
            display alert ¬
                "PASSWORDS DO NOT MATCH" message ¬
                "PASSWORDS DO NOT MATCH" giving up after 3
        end if
    end repeat
end script

1 votes

Ma réponse a l'option pour une gouttelette. Mais j'aime la possibilité de déposer et d'ouvrir ! Une idée très cool.

1 votes

Merci :-) Si j'avais vraiment voulu aller plus loin, j'aurais fait en sorte que chaque boîte de dialogue mentionne le nom du fichier ou du dossier qu'elle va traiter. Votre solution était solide... +1 BTW... Toutes les commandes que vous avez enveloppées dans les System Events tell blccks sont en fait gérées par des ajouts standards... L'utilisation des System Events n'est pas nécessaire

0 votes

Merci ! Oui, j'avais un autre plan qui l'exigeait et quand je ne l'ai pas fait, j'ai oublié de le supprimer. Merci quand même.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X