Comment puis-je utiliser le trousseau de clés de script pour écrire un script en Applescript qui récupère le nom d'utilisateur et le mot de passe d'un site web à partir du trousseau de clés login, en donnant l'URL du site web ?
Réponses
Trop de publicités?Si vous connaissez le nom exact de l'élément du trousseau, vous pourriez utiliser le suivant :
tell application "Keychain Scripting" to tell keychain "login.keychain" to get {account, password} of (premier élément Internet dont le nom est "www.google.com")
Le problème est que Keychain Scripting est lent et assez bogué. Par exemple, la recherche d'un élément spécifique du trousseau dans l'exemple ci-dessus en utilisant name contains
au lieu de name is
ne fonctionne pas. Vous devrez utiliser une déclaration repeat similaire à celle postée par @Philip :
tell application "Keychain Scripting" to tell keychain "login.keychain"
repeat with x from 1 to (compter tous les éléments Internet)
if name of Internet key x contains "Google" then
return {account, password} of Internet key x
end if
end repeat
end tell
Si vous êtes d'accord pour utiliser la ligne de commande et que vous voulez simplement rechercher des informations, je préférerais utiliser : security find-internet-password -g -s www.google.com
et puis grep ce que vous voulez.
Le scripting de trousseau est assez cassé dans Lion, donc l'outil de ligne de commande de sécurité est votre meilleur choix. En alternance, utilisez l'addition de script Red Sweater, qui est plus rapide et plus facile à scripter que les anciens scripts d'accès au trousseau.
Blog Red Sweater : Scripting de trousseau utilisable pour Lion
Le trousseau de clés est exposé à Applescript via l'application Keychain Scripting. Il existe de nombreux exemples sur le web, voici l'utilisation la plus basique :
définir le nomCourtUtilisateur comme texte du script de shell "/usr/bin/whoami" -- obtenir le nom court
de l'utilisateur. C'est ainsi que votre trousseau par défaut est étiqueté.
dis à l'application "Keychain Scripting"
mettre myKeyChain en tant que trousseau le nomCourtUtilisateur
mettre laListeCles en tant que chaque clé Internet de myKeyChain -- les clés de messagerie sont
généralement des clés Internet
répéter avec x de 1 à (longueur de laListeCles)
mettre laCle en tant qu'élément x de laListeCles
si le nom de laCle est "nom de la clé ici" alors
mettre leMotDePasse en tant que mot de passe de laCle -- obtenir le mot de passe
mettre leUserID en tant que compte de laCle -- obtenir l'utilisateur
fin si
fin répéter
end dis