2009-04-04 1 views
33

Я ищу способ сбрасывать (экспортировать) содержимое брелка OS X в файл, который я могу легко обрабатывать в другом месте, например открытый текст с разделителями табуляции или что-то в этом роде.Есть ли быстрый и простой способ сбросить содержимое брелка MacOS X?

Приложение Keychain Access не предлагает таких функций, и получение данных ключа включает в себя открывание каждого по очереди и необходимость вводить пароль для ключевого слова, чтобы каждый раз видеть пароль, хранящийся с ключом.

После немного копания, я нашел чью-то решение, с помощью AppleScript и приложение Keychain сценариев для доступа брелки (не могут ссылаться на индивидуальный пост, прокрутите вниз примерно на две трети до конца страницы):

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

Использование скриптов Keychain позволяет получить доступ ко всем полям данных всех ключей, включая пароль открытого текста! - и довольно легко сбрасывать эти данные в текстовый файл и т. Д. Я тестировал его, и он работает хорошо.

Однако это решение по-прежнему требует подтверждения доступа к каждому ключу, нажав кнопку «ОК» в диалоговом окне. Это намного лучше, чем каждый раз вводить пароль keychain, но это все еще раздражает. Кроме того, вы должны подтвердить доступ дважды для каждого ключа; один раз для редактора сценариев (или самого скрипта, если он запущен как приложение) и один раз для сценариев Keychain Scripting. Итак, если вы обрабатываете цепочку ключей с 100 ключами, вам нужно вручную щелкнуть ОК на 200 диалоговых окнах.

Я сейчас ищу решение, чтобы обойти это. Я понимаю, что поскольку цель связки ключей для защиты конфиденциальных данных и предотвращения именно того, что я пытаюсь сделать, любое такое решение, вероятно, связано с каким-то взломом.

Меня очень заинтересуют ваши идеи!

ответ

30

Хорошо, я глуп. Есть инструмент командной строки, называемый security, который делает именно это (и множество других действий на брелках).

Пример использования:

security dump-keychain -d login.keychain 

Это будет сбрасывать все данные в login.keychain (брелок по умолчанию для пользователя) в качестве открытого текста, в том числе пароли. Вам еще должны подтвердить доступ, но только один раз для каждого ключа, и он намного быстрее (и не бросает странные ошибки при попытке доступа к определенным полям) с использованием AppleScript. И это не взломать.

Без опции -d он будет выгружать все поля, кроме пароля.

сброшенные данные для одного из ключевых выглядит следующим образом (для ключа интернет, ключи программы и сертификаты имеют другие поля, но формат тот же самый):

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

Есть ли магия способ избежать нажатия кнопки «Всегда разрешать» один раз для каждой записи? – Cliff

+0

@Cliff Вы можете найти AppleScript, который будет нажимать кнопки для вас здесь: http://apple.stackexchange.com/a/137336. –

+0

Для keychain iCloud, который инструмент (security) (10.9.5) не видит, вы можете скопировать все из брелка iCloud в новую цепочку ключей и использовать эту технику. (http://selfsuperinit.com/2014/01/20/exporting-icloud-keychain-passwords-as-a-plain-text-file/) –

15

Пожалуйста, прочитайте это:https://gist.github.com/rmondello/b933231b1fcc83a7db0b

Игнорировать: -----

Я нашел разрешение на диалог «Всегда разрешать» в каждой клавише!

Просто запустите предыдущую команду с помощью sudo.

sudo security dump-keychain -d login.keychain 

Таким образом, вам нужно будет ввести пароль только два раза. Один на Терминале sudo и другой, чтобы разблокировать брелок! ;)

Имейте славный день!

+2

Кажется не работает, он все еще просит меня «разрешить/запретить "каждый элемент. Может быть, вы всегда «разрешали» все при первом запуске команды? Во второй раз, похоже, он просто волшебным образом работал (независимо от sudo). –

+3

Я просто нажал разрешить 250 раз. – cedivad

+1

Я думаю, что этот совет больше не работает в последних версиях OSX ... – TCB13

-2

Я нашел решение для не нажав на кнопку «Разрешить» несколько раз

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

Не работает для меня. – ma11hew28

0

Update, теперь есть инструмент, который делает это хорошо:

Keychaindump является инструментом проверки концепции для чтение паролей ключей OS X с правами root. Он охотится за разблокированными главными ключами keychain, расположенными в пространстве памяти процесса securityd, и использует их для дешифрования файлов ключей.

Источник: https://github.com/juuso/keychaindump

+0

Этот проект git - отказ от брони, последний бой 6 лет назад. Используйте на свой страх и риск. – Penumbra

Смежные вопросы