Onde as senhas da conta de usuário do Mac são armazenadas?

6

Como posso acessar o valor criptografado de uma senha de conta de usuário local no osx? Seria possível verificar isso ou até mesmo copiá-lo para outra conta?

    
por user51799 08.10.2010 / 22:36

2 respostas

6

Os hashes estavam em /var/db/shadow/hash/ em 10.6 e anteriores, mas eles são armazenados em /var/db/dslocal/nodes/Default/users/username.plist em 10.7 e 10.8.

Você pode imprimir os dados do hash com DaveGrohl ( sudo dave -s $USER ) ou algo assim:

sudo defaults read /var/db/dslocal/nodes/Default/users/$USER.plist ShadowHashData | tr -dc '0-9a-f ' | xxd -p -r | plutil -convert xml1 - -o -

Se o login automático estiver ativado, a senha do conjunto de chaves de login também será armazenada em /etc/kcpassword criptografado com a codificação 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*") }'

    
por 07.05.2012 / 20:51
4

Eu não sei muito sobre isso, mas pelo que pude reunir usando opensnoop :

login acessa o serviço de diretório local (possivelmente relacionado a algumas coisas do Kerberos - talvez essa seja a implementação subjacente para o diretório local, ele lê /Library/Preferences/edu.mit.Kerberos , /etc/krb5.conf , /usr/etc/krb5.conf etc.).

dscl , o utilitário de linha de comando do serviço de diretório, então cd Local/Default/Users/yourusername , read revela as coisas comuns relacionadas à conta unixy, mais: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx (não sabe as implicações, então eu censurei um pouco) - você também pode ler este UUID via Accounts.prefPane in System Preferences.app .

Isso corresponde a um nome de arquivo em /private/var/db/shadow/hash/ também acessado por login !

Acho que sua melhor opção é renomear / copiar os arquivos com o GeneratedUID name ou alterar a referência no serviço de diretório.

Incluímos toda a minha "pesquisa" para permitir que você refaça meus passos e permita refutabilidade.

Eu não tenho tempo para descartar e restaurar minhas contas de usuário, então você está sozinho agora. Boa sorte.

TLDR : abra Accounts.prefPane , verifique seu UUID (clique com o botão direito do usuário na lista) e procure um arquivo com esse nome em /private/var/db/shadow/hash/ . Não sei se funciona em tudo . Boa sorte.

    
por 08.10.2010 / 23:21