Onde as senhas das contas de usuários do Mac são armazenadas?

Onde as senhas das contas de usuários do Mac são armazenadas?

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

Responder1

Os hashes estavam /var/db/shadow/hash/na versão 10.6 e anteriores, mas estão armazenados /var/db/dslocal/nodes/Default/users/username.plistna versão 10.7 e 10.8.

Você pode imprimir os dados hash comDave Grohl( sudo dave -s $USER) ou algo parecido com isto:

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 habilitado, a senha das chaves de login também será armazenada /etc/kcpasswordcriptografada com cifra 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[i % key.size]==(b); print [b ^ key[i % key.size]].pack("U*") }'

Responder2

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

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

dscl, o utilitário de linha de comando do serviço de diretório, então cd Local/Default/Users/yourusername, readrevela o material usual relacionado à conta unixy, mais: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx(não sei as implicações, então censurei um pouco) - você também pode ler este UUID via Accounts.prefPanein 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 aposta é renomear/copiar os arquivos com o GeneratedUIDnome ou alterar a referência no serviço de diretório.

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

Não tenho tempo para jogar fora 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 no usuário na lista) e procure um arquivo com esse nome em /private/var/db/shadow/hash/. Não sei se funcionade forma alguma. Boa sorte.

informação relacionada