Я ищу способ сбросить (экспортировать) содержимое цепочки ключей OS X в файл, который я могу легко обработать в другом месте, например, открытый текст с разделителями табуляции или что-то в этом роде.
Приложение Keychain Access не предлагает никаких таких функций, и получение данных ключа включает в себя открытие каждого из них по очереди и необходимость каждый раз вводить пароль цепочки для ключей, чтобы каждый раз видеть пароль, хранящийся с ключом.
Немного покопавшись, я нашел чье-то решение, используя AppleScript и приложение Keychain Scripting для доступа к цепочкам ключей (не могу ссылаться на отдельный пост, прокрутите примерно две трети до конца страницы):
http://discussions.apple.com/thread.jspa?threadID=1398759
Используя сценарии цепочки для ключей, вы можете получить доступ ко всем полям данных всех ключей, включая открытый пароль! – и эти данные довольно легко выгрузить в текстовый файл и т. д. Я протестировал это, и оно работает хорошо.
Однако это решение по-прежнему предполагает необходимость подтверждать доступ к каждому ключу, нажимая OK в диалоговом окне. Это намного лучше, чем каждый раз вводить пароль от связки ключей, но все равно раздражает. Кроме того, вы должны подтверждать доступ дважды для каждого ключа; один раз для редактора сценариев (или самого сценария, если он работает как приложение) и один раз для сценариев цепочки ключей. Таким образом, если вы обрабатываете связку ключей со 100 ключами, вам нужно вручную нажимать «ОК» в 200 диалогах.
Я сейчас ищу решение, чтобы обойти это. Я понимаю, что цель брелков — защитить конфиденциальные данные и предотвратить именно то, что я пытаюсь сделать, и любое такое решение, вероятно, потребует какого-то взлома.
Мне будут очень интересны ваши идеи!
Решение проблемы
Ладно, я тупой. Есть инструмент командной строки, 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>"
Комментариев нет:
Отправить комментарий