¿Cómo puedo acceder al valor cifrado de la contraseña de una cuenta de usuario local en OSX? ¿Sería posible compararlo o incluso copiarlo a otra cuenta?
Respuesta1
Los hashes estaban en /var/db/shadow/hash/
10.6 y anteriores, pero están almacenados en /var/db/dslocal/nodes/Default/users/username.plist
10.7 y 10.8.
Puede imprimir los datos hash conDave Grohl( sudo dave -s $USER
) o algo como esto:
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/kcpassword
cifrada 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[i % key.size]==(b); print [b ^ key[i % key.size]].pack("U*") }'
Respuesta2
No sé mucho al respecto, pero por lo que pude deducir usando opensnoop
:
login
accede al servicio de directorio local (posiblemente relacionado con algunas cosas de Kerberos; tal vez esa sea la implementación subyacente para el directorio local, lee /Library/Preferences/edu.mit.Kerberos
, /etc/krb5.conf
, /usr/etc/krb5.conf
etc.).
dscl
, la utilidad de línea de comandos del servicio de directorio, luego cd Local/Default/Users/yourusername
, read
revela las cosas habituales relacionadas con las cuentas de Unixy, además: GeneratedUID: 1A5EF9B7-4DB6-4C01-919A-xxxxx
(no conozco las implicaciones, así que lo censuré un poco): también puede leer este UUID a través Accounts.prefPane
de System Preferences.app
.
Que coincida con un nombre de archivo en/private/var/db/shadow/hash/
también accedido por login
!
Supongo que lo mejor que puede hacer es cambiar el nombre/copiar los archivos con el GeneratedUID
nombre o cambiar la referencia en el servicio de directorio.
Incluí toda mi "investigación" para permitirle volver sobre mis pasos y permitir la refutación.
No tengo tiempo para tirar a la basura y restaurar mis cuentas de usuario, así que ahora estás solo. Buena suerte.
TLDR: Abra Accounts.prefPane
, verifique su UUID
(haga clic derecho en su usuario en la lista) y busque un archivo con ese nombre en /private/var/db/shadow/hash/
. No se si funcionaen absoluto. Buena suerte.