Есть ли быстрый и простой способ сбросить содержимое брелка MacOS X?
Я ищу способ сбрасывать (экспортировать) содержимое ключа Keychain OS X в файл, который я могу легко обрабатывать в другом месте, например открытый текст с разделителями табуляции или что-то в этом роде.
Приложение Keychain Access не предлагает таких функций, и получение ключевых данных включает в себя открытие каждого по очереди и необходимость вводить пароль keychain для просмотра пароля, хранящегося с помощью ключа, каждый раз.
После небольшого копания я нашел какое-то решение, используя AppleScript и приложение для скриптинга Keychain для доступа к цепочкам ключей (не может ссылаться на отдельные сообщения, прокрутите вниз примерно на две трети до конца страницы):
http://discussions.apple.com/thread.jspa?threadID=1398759
Используя скрипты Keychain, вы можете получить доступ ко всем полям данных всех ключей, включая пароль открытого текста! - и довольно легко сбрасывать эти данные в текстовый файл и т.д. Я тестировал его, и он работает хорошо.
Однако это решение по-прежнему требует подтверждения доступа к каждому ключу, нажав кнопку "ОК" в диалоговом окне. Это намного лучше, чем каждый раз вводить пароль keychain, но он все еще раздражает. Кроме того, вы должны подтвердить доступ дважды для каждого ключа; один раз для редактора Script (или самого Script, если он работает как приложение) и один раз для скрипта для ключей. Итак, если вы обрабатываете брелок с 100 ключами, вам нужно вручную щелкнуть ОК на 200 диалоговых окнах.
Теперь я ищу решение, чтобы обойти это. Я понимаю, что, поскольку цель цепочки ключей для защиты конфиденциальных данных и предотвращения именно того, что я пытаюсь сделать, любое такое решение, вероятно, связано с каким-то взломом.
Меня очень интересовали бы ваши идеи!
Ответы
Ответ 1
Хорошо, я глуп. Там используется инструмент командной строки 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>"
Ответ 2
Пожалуйста, прочтите следующее: https://gist.github.com/rmondello/b933231b1fcc83a7db0b
Игнорировать: -----
Я нашел решение для диалога "Всегда разрешать" в каждом ключе!
Просто запустите предыдущую команду с помощью sudo.
sudo security dump-keychain -d login.keychain
Таким образом вам нужно будет ввести пароль дважды. Один на Терминале sudo и другой, чтобы разблокировать брелок!;)
Приятного дня!
Ответ 3
Обновление, теперь есть инструмент, который делает это красиво:
Keychaindump - это инструмент доказательной концепции для чтения паролей ключей OS X с правами root. Он охотится за разблокированными главными ключами keychain, расположенными в пространстве памяти процесса securityd, и использует их для дешифрования файлов ключей.
Источник: https://github.com/juuso/keychaindump
Ответ 4
Я нашел решение для того, чтобы не нажимать "Разрешить" несколько раз
sudo su
security dump-keychain -d /Users/YourUsername/Library/Keychains/login.keychain