¿Cómo puedo acceder al valor cifrado de una contraseña de cuenta de usuario local en osx? ¿Sería posible verificarlo o incluso copiarlo en otra cuenta?
¿Cómo puedo acceder al valor cifrado de una contraseña de cuenta de usuario local en osx? ¿Sería posible verificarlo o incluso copiarlo en otra cuenta?
Respuestas:
Los hashes estaban en /var/db/shadow/hash/
10.6 y anteriores, pero se almacenan /var/db/dslocal/nodes/Default/users/username.plist
en 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/kcpassword
encriptada 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*") }'
No sé mucho al respecto, pero por lo que pude reunir usando opensnoop
:
login
accede 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.conf
etc.).
dscl
, la utilidad de línea de comando del servicio de directorio, luego cd Local/Default/Users/yourusername
, read
revela 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.prefPane
de 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 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 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.
/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í .