Есть ли быстрый и простой способ выгрузить содержимое цепочки для ключей MacOS X? - PullRequest
34 голосов
/ 04 апреля 2009

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

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

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

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

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

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

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

Я бы очень заинтересовался твоими идеями!

Ответы [ 5 ]

33 голосов
/ 04 апреля 2009

Хорошо, я тупой. Есть инструмент командной строки под названием 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>"
14 голосов
/ 06 января 2012

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

Игнорирование: -----

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

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

sudo security dump-keychain -d login.keychain

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

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

0 голосов
/ 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 мс, и он работает как шарм.

0 голосов
/ 02 октября 2015

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

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

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

0 голосов
/ 18 февраля 2015

Я нашел решение не нажимать «Разрешить» несколько раз

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