Necesitas las siguientes cosas:
-
Un Mac muerto con un sistema de archivos legible (llamado Fuente máquina de aquí en adelante)
-
Una nueva máquina Mac o Linux (llamada Objetivo máquina de aquí en adelante)
-
El System.keychain
de la máquina de origen.
- Este archivo se encuentra en
/System/Library/Keychains
o /Library/Keychains
-
El SystemKey
de la máquina de origen. Contiene la contraseña real.
- Situado en
/var/db/SystemKey
-
Acceso a Internet en la máquina de destino.
Paso 1: Recuperar la clave de cifrado del llavero de origen
No podemos usar SystemKey
tal cual - contiene bytes aleatorios que no pueden ser introducidos en un diálogo de contraseña o línea de comandos. Incluso mejor, necesitamos 24 bytes fuera de la mitad del archivo - después del número mágico que indica un archivo de claves, pero antes de los bytes de suma de comprobación.
El comando adecuado para obtener la llave hexagonal correcta es:
hexdump -s 8 -n 24 -e '1/1 "%.2x"' /path/to/SystemKey && echo
Explicado: Omitir los primeros 8 bytes del principio del archivo, continuar 24 bytes después de eso, y usar la cadena de formato para volcar los datos en una línea (es un estilo C printf
cadena, si tienes curiosidad).
El && echo
es para que obtengamos una sola línea nueva después para que la salida no se ejecute en el comienzo de su símbolo del sistema después de que el comando termine.
Copia esta cadena a un lado. Esta es la clave de descifrado para el llavero.
Paso 2: Volcar el llavero con la contraseña
Necesitamos una herramienta de terceros para esto. Vamos a suponer que el Mac muerto no puede ser arrancado de tal manera que podamos utilizar su aplicación Keychain Access normalmente.
Esa herramienta será Rompecadenas - un script de Python. Tendrá que instalar el hexdump
para Python. Ejecute los siguientes comandos en la máquina de destino:
sudo pip install hexdump
git clone https://github.com/n0fate/chainbreaker
cd chainbreaker
Ahora simplemente le damos a chainbreaker la clave que acaba de encontrar y el archivo:
python chainbreaker.py -f /path/to/system.keychain -k (the byte string from step 1)
Verás la contraseña en texto plano de todo lo que hay en el llavero del sistema. Para mi caso de uso, quería la contraseña de Time Machine, y esto se representará en la salida como un Generic password record
llamado Time Machine
. La contraseña en texto plano será la siguiente.
Ahora podemos simplemente usar el Finder para abrir el archivo .sparsebundle de Time Machine, dar la contraseña que sacamos del archivo de claves, y continuar como siempre.