2009-04-04 10 views
33

Sto cercando un modo per esportare (esportare) il contenuto di un portachiavi di OS X in un file che posso facilmente elaborare altrove, come testo in chiaro delimitato da tabulazioni o qualcosa del genere.Esiste un modo semplice e veloce per scaricare i contenuti di un portachiavi MacOS X?

L'app Keychain Access non offre alcuna funzionalità di questo tipo e ottenere i dati di una chiave implica l'apertura di ciascuno a turno e la digitazione della password del portachiavi per visualizzare ogni volta la password memorizzata con la chiave.

Dopo un po 'di scavo, ho trovato la soluzione di qualcuno usando AppleScript e l'applicazione portachiavi script di accesso portachiavi (non può creare un collegamento a singolo post, scorrere verso il basso per circa due terzi alla fine della pagina):

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

Utilizzando lo script Portachiavi, è possibile accedere a tutti i campi dati di tutte le chiavi, inclusa la password in chiaro! - ed è abbastanza facile scaricare questi dati in un file di testo, ecc. L'ho testato e funziona bene.

Tuttavia, questa soluzione implica ancora la necessità di confermare l'accesso a ciascuna chiave facendo clic su OK in una finestra di dialogo. Questo è molto meglio che dover digitare la password del portachiavi ogni volta, ma è ancora irritante. Inoltre, devi confermare l'accesso due volte per ogni chiave; una volta per Script Editor (o lo script stesso se è in esecuzione come app) e una volta per Keychain Scripting. Quindi, se stai elaborando un portachiavi con 100 chiavi, devi fare clic manualmente su OK su 200 finestre di dialogo.

Ora sto cercando una soluzione per aggirare questo. Mi rendo conto che siccome è lo scopo dei portachiavi per salvaguardare i dati sensibili e prevenire precisamente il tipo di cosa che sto cercando di fare, qualsiasi soluzione di questo tipo probabilmente implicherebbe un qualche tipo di hack.

Sarei molto interessato alle tue idee!

risposta

30

Bene, sono stupido. C'è uno strumento da riga di comando chiamato security che fa proprio questo (e molte altre azioni sui portachiavi).

Un esempio d'uso:

security dump-keychain -d login.keychain 

Ciò scaricare tutti i dati del login.keychain (il portachiavi di default per un utente) come testo in chiaro, tra cui le password. È ancora confermare l'accesso, ma solo una volta per ogni chiave, ed è molto più veloce di (e non genera strani errori quando si tenta di accedere ad alcuni campi) utilizzando AppleScript. E non è un hack.

Senza l'opzione -d, eseguirà il dump di tutti i campi tranne la password.

Il scaricati dati per un aspetto chiave come questo (per una chiavetta internet; tasti programma e certificati hanno altri campi, ma il formato è lo stesso):

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>" 
+13

C'è un modo magico per evitare di fare clic "Consenti sempre" una volta per ogni voce? – Cliff

+0

@Cliff È possibile trovare l'AppleScript che premerà i pulsanti qui: http://apple.stackexchange.com/a/137336. –

+0

Per il portachiavi iCloud, che lo strumento (sicurezza) (10.9.5) non vede, è possibile copiare tutto dal portachiavi iCloud a un nuovo portachiavi e continuare a utilizzare questa tecnica. (http://selfsuperinit.com/2014/01/20/exporting-icloud-keychain-passwords-as-a-plain-text-file/) –

15

prega di leggere questo:https://gist.github.com/rmondello/b933231b1fcc83a7db0b

Ignora: -----

Ho trovato una soluzione alla finestra di dialogo "Consenti sempre" in ciascun tasto!

Basta eseguire il comando precedente con sudo.

sudo security dump-keychain -d login.keychain 

In questo modo è sufficiente inserire la password due volte. Uno sul terminale per sudo e un altro per sbloccare il portachiavi! ;)

Buona giornata!

+2

Non sembra funzionare, mi chiede ancora di "consentire/negare " ogni oggetto. Forse hai "sempre permesso" tutto la prima volta che hai eseguito il comando? La seconda volta sembra che abbia funzionato magicamente (indipendentemente da sudo). –

+3

Ho appena premuto per 250 volte. – cedivad

+1

Immagino che questo suggerimento non funzioni più nelle recenti versioni di OSX ... – TCB13

-2

ho trovato la soluzione per non clic su "Consenti" più volte

sudo su 
security dump-keychain -d /Users/YourUsername/Library/Keychains/login.keychain 
+0

Non ha funzionato per me. – ma11hew28

0

aggiornamento, v'è ora uno strumento che fa questo bene:

Keychaindump è uno strumento proof-of-concept per leggendo le password del portachiavi OS X come root. Cerca le chiavi master keychain sbloccate situate nello spazio di memoria del processo securityd e le utilizza per decrittografare i file portachiavi.

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

+0

Questo progetto git è abandon-ware, ultimo commit 6 anni fa. Utilizzare a proprio rischio. – Penumbra

Problemi correlati