Я только что столкнулся с ситуацией, когда пользователь с Mac, который был сильно поврежден из-за прерванного обновления, нуждался в резервной копии Time Machine вне обычного процесса восстановления. К сожалению, они забыли пароль для этого.
У меня есть доступ к файловой системе на сломанном Mac, и мне нужно восстановить их пароль Time Machine, а также все остальное в цепочке ключей System.
Сложность: системная цепочка ключей не использует обычный пароль, она использует случайные байты .
Как расшифровать системную связку ключей?
Вам понадобятся следующие вещи:
Одна новая машина Mac или Linux ( далее именуемая целевой машиной)
Файл System.keychain
с исходной машины.
/System/Library/Keychains
в/Library/Keychains
SystemKey
с исходной машины. Он содержит фактический пароль.
/var/db/SystemKey
Мы не можем использовать SystemKey
как есть — он содержит случайные байты, которые нельзя ввести в диалоговое окно пароля или командную строку. Еще лучше, нам нужно 24 байта из середины файла — после магического числа, указывающего на ключевой файл, но до байтов контрольной суммы.
Правильная команда для получения правильного шестнадцатеричного ключа:
hexdump -s 8 -n 24 -e '1/1 "%.2x"' /path/to/SystemKey && echo
Объяснение: пропустите первые 8 байтов от начала файла, продолжайте 24 байта после этого и используйте строку формата для вывода данных в одну строку (это строка в стиле C, если вам интересно) printf
.
Это && echo
значит, что после завершения команды мы получаем одну новую строку, поэтому вывод не попадает в начало приглашения вашей оболочки после завершения команды.
Скопируйте эту строку в сторону. Это ключ расшифровки цепочки для ключей.
Для этого нам нужен сторонний инструмент. Мы исходим из того, что мертвый Mac не может быть загружен таким образом, чтобы мы могли нормально использовать его приложение Keychain Access.
Этим инструментом будет Chainbreaker — скрипт на Python. Вам нужно будет установить hexdump
библиотеку для Python. Выполните следующие команды на целевой машине:
sudo pip install hexdump
git clone https://github.com/n0fate/chainbreaker
cd chainbreaker
Теперь мы просто даем chainbreaker ключ, который вы только что нашли, и файл:
python chainbreaker.py -f /path/to/system.keychain -k (the byte string from step 1)
Вы увидите незашифрованный пароль всего в системной связке ключей. Для моего варианта использования мне нужен пароль Time Machine, и он будет представлен в выводе как Generic password record
именованный файл Time Machine
. Открытый текстовый пароль будет ниже.
Теперь мы можем просто использовать Finder, чтобы открыть Time Machine .sparsebundle, указать пароль, который мы выкопали из ключевого файла, и продолжить как обычно.
Ману
матпр
Майки ТК
Майки ТК