¿Cómo puedo usar keychain scripting para escribir un script de Applescript que recupera el nombre de usuario y contraseña de un sitio web del llavero de Inicio de sesión , dada la URL del sitio web?
Respuestas
¿Demasiados anuncios?Si usted sabe el nombre exacto de las llaves elemento, se puede utilizar la siguiente:
tell application "Keychain Scripting" to tell keychain "login.keychain" to get {account, password} of (first Internet key whose name is "www.google.com")
La cosa es que, Llavero de secuencias de comandos es lento y con muchos errores. Por ejemplo, las búsquedas de un llavero elemento en el ejemplo anterior, usando name contains
en lugar de name is
no funciona. Usted tendría que usar una instrucción repeat similar a lo que @Philip publicado:
tell application "Keychain Scripting" to tell keychain "login.keychain"
repeat with x from 1 to (count every Internet key)
if name of Internet key x contains "Google" then
return {account, password} of Internet key x
end if
end repeat
end tell
Si está bien usar la línea de comandos y sólo quieren mirar cosas, prefiero usar:
security find-internet-password -g -s www.google.com
y, a continuación, grep lo que usted desea.
Llavero de secuencias de comandos se rompen bastante bien en Lion, por lo que la herramienta de línea de comandos de seguridad es su mejor apuesta. Alternativamente, utilice secuencias de comandos además de suéter rojo, que es más rápido y más fácil de secuencia de comandos para que los viejos scripts acceso a Llaveros.
Llavero está expuesto a Applescript mediante la aplicación de Secuencias de comandos de llavero . Existen numerosos ejemplos en la web, siendo el uso más básico:
set theShortUserName to do shell script "/usr/bin/whoami" --get the short
userid. This is how your default keychain is labled.
tell application "Keychain Scripting"
set myKeyChain to keychain theShortUserName
set theKeyList to every Internet key of myKeyChain --email keys are
normally Internet Keys
repeat with x from 1 to (length of theKeyList)
set theKey to item x of theKeyList
if the name of theKey is "name of key here" then
set thePassword to password of theKey --grab the password
set theUserID to the account of theKey --grab the userid
end if
end repeat
end tell