38 votes

Existe-t-il un moyen simple et rapide de vider le contenu d'un trousseau de clés MacOS X ?

Je cherche un moyen de vider (exporter) le contenu d'un trousseau OS X dans un fichier que je peux facilement traiter ailleurs, comme un texte en clair délimité par des tabulations ou quelque chose de ce genre.

L'application Keychain Access n'offre pas cette fonctionnalité, et obtenir les données d'une clé implique d'ouvrir chacune d'entre elles tour à tour, et de devoir taper le mot de passe du trousseau pour voir le mot de passe stocké avec la clé, à chaque fois.

Après un peu de recherche, j'ai trouvé la solution de quelqu'un qui utilise AppleScript et l'application Keychain Scripting pour accéder aux trousseaux (je ne peux pas faire de lien vers le message individuel ; faites défiler la page jusqu'aux deux tiers de sa longueur) :

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

En utilisant le script Keychain, vous pouvez accéder à tous les champs de données de toutes les clés - y compris le mot de passe en clair ! - et il est assez facile de transférer ces données dans un fichier texte, etc. Je l'ai testé 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 beaucoup mieux que de devoir taper le mot de passe du trousseau à chaque fois, mais c'est toujours irritant. De plus, vous devez confirmer l'accès deux fois pour chaque clé ; une fois pour l'éditeur script (ou le script lui-même s'il est exécuté en tant qu'application) et une fois pour Keychain Scripting. Ainsi, si vous traitez un trousseau de 100 clés, vous devez cliquer manuellement sur OK sur 200 boîtes de dialogue.

Je suis maintenant à la recherche d'une solution pour contourner ce problème. Je me rends compte que, comme le but des porte-clés est de protéger les données sensibles et d'empêcher précisément le genre de choses que j'essaie de faire, une telle solution impliquerait probablement une sorte de piratage.

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

37voto

Niels Heidenreich Points 602

D'accord, je suis stupide. Il y a un outil de ligne de commande appelé security qui fait justement cela (et beaucoup d'autres actions sur les porte-clés).

Un exemple d'utilisation :

security dump-keychain -d login.keychain

Cela va vider toutes les données du trousseau login.keychain (le trousseau par défaut d'un utilisateur) en texte clair, y compris les mots de passe. Vous pouvez consulter le site todavía Il faut confirmer l'accès, mais une seule fois pour chaque clé, et c'est beaucoup plus rapide que d'utiliser AppleScript (et cela ne provoque pas d'erreurs bizarres lorsque l'on essaie d'accéder à certains champs). Et ce n'est pas du piratage.

Sans le -d l'option, il videra tous les champs sauf le mot de passe.

Les données extraites d'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>"

15 votes

Existe-t-il un moyen magique d'éviter de cliquer sur "Toujours autoriser" une fois pour chaque entrée ?

0 votes

@Cliff Vous pouvez trouver l'AppleScript qui appuiera sur les boutons pour vous ici : apple.stackexchange.com/a/137336 .

1 votes

Pour le trousseau de clés iCloud, que le (10.9.5) security ne voit pas, vous pouvez tout copier du trousseau iCloud vers un nouveau trousseau et continuer à utiliser cette technique. ( selfsuperinit.com/2014/01/20/ )

15voto

TCB13 Points 943

Lisez ceci, s'il vous plaît : https://gist.github.com/rmondello/b933231b1fcc83a7db0b

Ignorer : -----

J'ai trouvé une solution à la boîte de dialogue "Toujours autoriser" dans chaque clé !

Il suffit d'exécuter la commande précédente avec sudo.

sudo security dump-keychain -d login.keychain

De cette façon, vous n'aurez à entrer votre mot de passe que deux fois. Une fois sur le Terminal pour sudo et une autre pour déverrouiller le trousseau ;)

Passez une bonne journée !

4 votes

Cela ne semble pas fonctionner, il me demande toujours d'"autoriser/refuser" chaque élément. Peut-être que vous aviez "toujours tout autorisé" la première fois que vous avez exécuté la commande ? La deuxième fois, il semblerait qu'elle ait fonctionné comme par magie (sans tenir compte du sudo).

5 votes

Je viens d'appuyer sur "autoriser" 250 fois.

0 votes

Dans High Sierra, l'exécution avec sudo demande toujours le mot de passe pour chaque clé. La copie d'iCloud vers un trousseau local requiert également le mot de passe pour chaque clé.

0voto

Brian Heese Points 526

Mise à jour, il existe maintenant un outil qui fait cela très bien :

Keychaindump est un outil de preuve de concept pour lire les mots de passe du trousseau de clés OS X en tant que Root. Il recherche les clés maîtresses déverrouillées du trousseau situées dans l'espace mémoire du processus securityd, et les utilise pour déchiffrer les fichiers du trousseau.

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

0voto

wutter Points 27

En fait, je cherchais justement la même chose : Un applescript modifié de github que quelqu'un a posté. A exécuter dans ScriptEditor et doit être autorisé dans Préférences & 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 afin de les activer. Pour cela j'ai utilisé l'outil "murgaa auto clicker" que j'avais connu dans runescape il y a plusieurs années ( http://www.murgaa.com/auto-clicker-mac/ semble toujours actif). Il suffit de définir un raccourci pour le clic automatique (par exemple Command+R) et de régler la minuterie sur 10 ms pour que cela fonctionne comme sur des roulettes.

0voto

Graham Miln Points 947

Coffre à clés

Keysafe lit et décrypte les fichiers du trousseau d'Apple. Utilisez Keysafe pour accéder en toute sécurité à vos mots de passe et à vos informations d'identification sans Mac.

J'ai écrit un outil appelé Keysafe pour extraire le contenu des fichiers Keychain. Cet outil est disponible sur Mac, Windows et Linux.

Keysafe n'est pas gratuit ; une licence est nécessaire pour décrypter entièrement un trousseau de clés. Sans licence, le contenu est quand même extrait mais les valeurs décryptées sont partiellement caviardées et les notes sécurisées ne sont pas post-traitées en fichiers RTFD.

Si vous avez un trousseau qui ne fonctionne pas avec Keysafe, veuillez nous contacter. Le format du trousseau est très vaste et il est toujours intéressant de trouver des cas particuliers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X