¿Dónde se almacenan las contraseñas de las cuentas de usuario de Mac?


Respuestas:


6

Los hashes estaban en /var/db/shadow/hash/10.6 y anteriores, pero se almacenan /var/db/dslocal/nodes/Default/users/username.plisten 10.7 y 10.8.

Puede imprimir los datos hash con DaveGrohl ( sudo dave -s $USER) o algo así:

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

Si el inicio de sesión automático está habilitado, la contraseña del llavero de inicio de sesión también se almacena /etc/kcpasswordencriptada con cifrado 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*") }'


Brillant, ¿cómo aprendes un conocimiento tan íntimo de OS X?
Edgar Aroutiounian

Esto no está del todo bien. La "interrupción" solo debería ocurrir cuando (b == clave [i% key.size]), pero su código me pareció esclarecedor. ¡Gracias!
Kayvan Sylvan

4

No sé mucho al respecto, pero por lo que pude reunir usando opensnoop:

loginaccede al servicio de directorio local (posiblemente relacionada con un poco de materia Kerberos - tal vez esa es la implementación subyacente para el directorio local, se lee /Library/Preferences/edu.mit.Kerberos, /etc/krb5.conf, /usr/etc/krb5.confetc.).

dscl, la utilidad de línea de comando del servicio de directorio, luego cd Local/Default/Users/yourusername, readrevela las cosas habituales relacionadas con la cuenta de unixy, además de: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx(no sé las implicaciones, así que censuré un poco): también puede leer este UUID a través Accounts.prefPanede System Preferences.app.

¡Eso coincide con un nombre de archivo en el que/private/var/db/shadow/hash/ también se accede por login!

Supongo que su mejor opción es renombrar / copiar los archivos con el GeneratedUIDnombre, o cambiar la referencia en el servicio de directorio.

Incluí toda mi "investigación" para permitirle volver sobre mis pasos y permitir la refutabilidad.

No tengo tiempo para tirar basura y restaurar mis cuentas de usuario, así que ahora estás solo. Buena suerte.

TLDR : Abra Accounts.prefPane, verifique su UUID(haga clic con el botón derecho en su usuario en la lista) y busque un archivo con ese nombre /private/var/db/shadow/hash/. No sé si funciona en absoluto . Buena suerte.


Para ampliar mi respuesta, /private/var/db/shadow/hash/realmente contiene los hashes de contraseña (no como las contraseñas cifradas, no hay forma de restaurarlas directamente). También vea aquí y aquí .
Daniel Beck

1
Me encanta buscar directorios de sistemas oscuros para averiguar para qué sirven :-)
Daniel Beck
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.