6

Как я могу получить доступ к зашифрованному значению пароля учетной записи локального пользователя в osx? Можно ли проверить это или даже скопировать в другой аккаунт?

2 ответа2

6

Хеши были в /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*") }'

4

Я не так много знаю об этом, но из того, что я мог бы получить, используя 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/ . Не знаю, работает ли это вообще . Удачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .