web-dev-qa-db-fra.com

Existe-t-il un moyen simple et rapide de vider le contenu d’un trousseau MacOS X?

Je cherche un moyen de transférer (exporter) le contenu d'un trousseau OS X dans un fichier que je peux facilement traiter ailleurs, tel qu'un texte brut délimité par des tabulations ou quelque chose du genre.

L'application Keychain Access n'offre pas de telles fonctionnalités et obtenir les données d'une clé implique de les ouvrir à tour de rôle et de devoir saisir le mot de passe du trousseau pour voir le mot de passe stocké avec la clé, à chaque fois.

Après quelques recherches, j'ai trouvé la solution de quelqu'un en utilisant AppleScript et l'application Keychain Scripting pour accéder aux trousseaux (vous ne pouvez pas créer de lien vers un message individuel; faites défiler les deux tiers environ jusqu'à la fin de la page):

http://discussions.Apple.com/thread.jspa?threadID=1398759

En utilisant les scripts du trousseau, vous pouvez accéder à tous les champs de données de toutes les clés - y compris le mot de passe en texte clair! - et il est assez facile de vider ces données dans un fichier texte, etc. Je l’ai testée et cela fonctionne bien.

Cependant, cette solution implique toujours de devoir confirmer l'accès à chaque clé en cliquant sur OK dans une boîte de dialogue. C’est bien mieux que de devoir taper le mot de passe du trousseau à chaque fois, mais cela reste irritant. De plus, vous devez confirmer l’accès deux fois pour chaque touche; une fois pour l'éditeur de script (ou le script lui-même s'il est exécuté en tant qu'application) et une fois pour le script de trousseau. Donc, si vous traitez un trousseau avec 100 clés, vous devez cliquer manuellement sur OK dans 200 boîtes de dialogue.

Je cherche maintenant une solution pour résoudre ce problème. Je réalise que comme les porte-clés ont pour objectif de protéger les données sensibles et d’empêcher précisément le genre de chose que je cherche à faire, une telle solution impliquerait probablement une sorte de bidouillage.

Je serais très intéressé par vos idées!

33

D'accord, je suis stupide. Il existe un outil de ligne de commande appelé security qui ne fait que cela (et de nombreuses autres actions sur les trousseaux).

Un exemple d'utilisation:

security dump-keychain -d login.keychain

Toutes les données du login.keychain (le trousseau par défaut pour un utilisateur) seront sauvegardées sous forme de texte en clair, y compris les mots de passe. Vous encore devez confirmer l'accès, mais une seule fois pour chaque clé, et c'est beaucoup plus rapide qu'avec AppleScript (et ne génère pas d'erreurs bizarres lorsque vous essayez d'accéder à certains champs). Et ce n'est pas un bidouillage.

Sans l'option -d, tous les champs seront sauvegardés, à l'exception du mot de passe.

Les données sauvegardées pour une clé ressemblent à ceci (pour une clé Internet; les clés de programme et les certificats ont d'autres champs, mais le format est le même):

keychain: "/Users/<username>/Library/Keychains/login.keychain"
class: "inet"
attributes:
    0x00000007 <blob>="tech.slashdot.org (<username for this web login>)"
    0x00000008 <blob>=<NULL>
    "acct"<blob>="<username for this web login>"
    "atyp"<blob>="form"
    "cdat"<timedate>=0x32303038303432333038323730355A00  "20080423082705Z\000"
    "crtr"<uint32>=<NULL>
    "cusi"<sint32>=<NULL>
    "desc"<blob>="Kennwort des Web-Formulars"
    "icmt"<blob>="default"
    "invi"<sint32>=<NULL>
    "mdat"<timedate>=0x32303038303432333038323730355A00  "20080423082705Z\000"
    "nega"<sint32>=<NULL>
    "path"<blob>=<NULL>
    "port"<uint32>=0x00000000 
    "prot"<blob>=<NULL>
    "ptcl"<uint32>="http"
    "scrp"<sint32>=<NULL>
    "sdmn"<blob>=<NULL>
    "srvr"<blob>="tech.slashdot.org"
    "type"<uint32>=<NULL>
data:
"<the plaintext password for this key>"
32

Veuillez lire ceci: https://Gist.github.com/rmondello/b933231b1fcc83a7db0b

Ignorer:-----

J'ai trouvé une solution au dialogue "Toujours autoriser" dans chaque touche!

Il suffit de lancer la commande précédente avec Sudo.

Sudo security dump-keychain -d login.keychain

De cette façon, il vous suffira de saisir votre mot de passe deux fois. Un sur le terminal vers Sudo et un autre pour déverrouiller le trousseau! ;)

Bonne journée!

14
TCB13

Mise à jour, il existe maintenant un outil qui le fait bien:

Keychaindump est un outil de validation de concept permettant de lire en tant que root les mots de passe de trousseau OS X. Il recherche les clés principales de trousseau non verrouillées situées dans l'espace mémoire du processus securityd et les utilise pour déchiffrer les fichiers de trousseau.

Source: https://github.com/juuso/keychaindump

0
Brian Heese

En fait, je cherchais simplement la même chose: Pommecript modifié de github, posté par quelqu'un. Pour être exécuté dans ScriptEditor et doit être autorisé dans Préférences et sécurité.

set keychainPassword to "yourpasswordgoeshere"

tell application "System Events"
    repeat while exists (processes where name is "SecurityAgent")
        tell process "SecurityAgent"
            delay 0.1
            try
                set value of text field 1 of window 1 to keychainPassword
                click button "Allow" of window 1
            end try
        end tell
    end repeat
end tell

Vous devez cliquer sur chaque fenêtre séparément pour les activer. Pour cela, j'ai utilisé l'outil "murgaa auto clicker" que je connaissais de runescape il y a de nombreuses années ( http://www.murgaa.com/auto-clicker-mac/ semble toujours actif). Vous venez de définir un raccourci pour le cliquage automatique (par exemple, Commande + R) et de régler la minuterie à 10 ms et cela fonctionne comme un charme.

0
wutter