Есть ли быстрый и простой способ сбросить содержимое цепочки для ключей MacOS X?

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

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

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

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

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

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

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

Мне будут очень интересны ваши идеи!


person Niels Heidenreich    schedule 04.04.2009    source источник


Ответы (5)


Ладно, я тупой. Существует инструмент командной строки под названием 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>"
person Niels Heidenreich    schedule 04.04.2009
comment
Есть ли какой-нибудь волшебный способ не нажимать «Всегда разрешать» один раз для каждой записи? - person Cliff; 10.12.2011
comment
@Cliff Вы можете найти AppleScript, который будет нажимать кнопки для вас, здесь: apple.stackexchange.com/a/137336. - person Rok Strniša; 02.10.2014
comment
Для связки ключей iCloud, которую инструмент (10.9.5) security не видит, вы можете скопировать все из связки ключей iCloud в новую цепочку для ключей и по-прежнему использовать эту технику. (selfsuperinit.com/ 20.01.2014/) - person Jared Beck; 30.10.2014

Прочитайте это: https://gist.github.com/rmondello/b933231b1fcc83a7db0b< /а>

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

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

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

sudo security dump-keychain -d login.keychain

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

Хорошего дня!

person TCB13    schedule 06.01.2012
comment
Кажется, не работает, он все еще просит меня разрешить/запретить каждый элемент. Может быть, вы всегда разрешали все при первом запуске команды? Во второй раз это, казалось бы, просто волшебным образом сработало (независимо от sudo). - person Juan A. Navarro; 30.05.2013
comment
Я только что нажал разрешить 250 раз. - person cedivad; 08.09.2013
comment
В High Sierra запуск с sudo по-прежнему запрашивает пароль для каждого ключа. Для копирования из iCloud в локальную цепочку ключей также требуется пароль для каждого ключа. - person Elliott B; 22.05.2018

Обновите, теперь есть инструмент, который делает это красиво:

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

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

person Brian Heese    schedule 01.10.2015
comment
Этот проект git заброшен, последний коммит 6 лет назад. Используйте на свой риск. - person Penumbra; 13.02.2018

На самом деле я просто искал то же самое: Модифицированный яблочный скрипт с github, который кто-то выложил. Для запуска в ScriptEditor и должно быть разрешено в настройках и безопасности.

set keychainPassword to "yourpasswordgoeshere"

tell application "System Events"
    repeat while exists (processes where name is "SecurityAgent")
        tell process "SecurityAgent"
            delay 0.1
            try
                set value of text field 1 of window 1 to keychainPassword
                click button "Allow" of window 1
            end try
        end tell
    end repeat
end tell

Вы должны щелкнуть каждое окно отдельно, чтобы активировать их. Для этого я использовал инструмент «murgaa auto clicker», знакомый мне по runescape много лет назад (http://www.murgaa.com/auto-clicker-mac/ кажется все еще активным). Вы просто устанавливаете ярлык для автоматического нажатия (например, Command + R) и устанавливаете таймер на 10 мс, и он работает как шарм.

person rojikada    schedule 02.08.2018

Я нашел решение, позволяющее не нажимать «Разрешить» несколько раз

sudo su
security dump-keychain -d /Users/YourUsername/Library/Keychains/login.keychain
person frytaz    schedule 18.02.2015