Как я могу получить доступ к зашифрованному значению пароля учетной записи локального пользователя в osx? Можно ли проверить это или даже скопировать в другой аккаунт?
2 ответа
Хеши были в /var/db/shadow/hash/
в 10.6 и более ранних версиях , но они хранятся в /var/db/dslocal/nodes/Default/users/username.plist
в 10.7 и 10.8.
Вы можете распечатать данные хеша с помощью DaveGrohl (sudo dave -s $USER
) или что-то вроде этого:
sudo defaults read /var/db/dslocal/nodes/Default/users/$USER.plist ShadowHashData | tr -dc '0-9a-f ' | xxd -p -r | plutil -convert xml1 - -o -
Если автоматический вход включен, пароль цепочки ключей входа также сохраняется в /etc/kcpassword
зашифрованном с помощью шифра XOR.
sudo ruby -e 'key = [125, 137, 82, 35, 210, 188, 221, 234, 163, 185, 31]; IO.read("/etc/kcpassword").bytes.each_with_index { |b, i| break if key.include?(b); print [b ^ key[i % key.size]].pack("U*") }'
Я не так много знаю об этом, но из того, что я мог бы получить, используя opensnoop
:
login
обращается к локальной службе каталогов (возможно, связанной с некоторыми вещами Kerberos - возможно, это базовая реализация для локального каталога, он читает /Library/Preferences/edu.mit.Kerberos
, /etc/krb5.conf
, /usr/etc/krb5.conf
и т.д.).
dscl
, утилита командной строки службы каталогов, затем cd Local/Default/Users/yourusername
, read
показывает обычные вещи, связанные с учетными записями unixy, плюс: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx
(не знаю последствий, поэтому я немного подверг цензуре) - вы также можете прочитать этот UUID через Accounts.prefPane
в System Preferences.app
.
Это соответствует имени файла в /private/var/db/shadow/hash/
также доступ к которому осуществляется через login
!
Я думаю, что вам лучше всего переименовать / скопировать файлы с именем GeneratedUID
или изменить ссылку в службе каталогов.
Включены все мои "исследования", чтобы вы могли проследить мои шаги и учесть возможность опровержения.
У меня нет времени, чтобы очистить и восстановить мои учетные записи пользователей, так что теперь вы по своему усмотрению. Удачи.
TLDR: откройте Accounts.prefPane
, проверьте свой UUID
(щелкните правой кнопкой мыши своего пользователя в списке) и найдите файл с таким именем в /private/var/db/shadow/hash/
. Не знаю, работает ли это вообще . Удачи.