Acabo de encontrarme con una situación en la que un usuario con una Mac que se había roto por una actualización interrumpida necesitaba una copia de seguridad de Time Machine fuera del proceso de recuperación normal. Desafortunadamente, habían olvidado la contraseña para hacer esto.
Tengo acceso al sistema de archivos en la Mac rota y necesitaba recuperar su contraseña de Time Machine, así como cualquier otra cosa en el llavero del sistema.
Dificultad: El llavero del sistema no usa una contraseña normal, usa bytes aleatorios .
¿Cómo se descifra un llavero del sistema?
Necesitas las siguientes cosas:
Una nueva máquina Mac o Linux (llamada la máquina Target de ahora en adelante)
El System.keychain
archivo de la máquina de origen.
/System/Library/Keychains
o/Library/Keychains
SystemKey
archivo de la máquina de origen. Esto contiene la contraseña real.
/var/db/SystemKey
No podemos usarlo SystemKey
tal como está: contiene bytes aleatorios que no se pueden ingresar en un cuadro de diálogo de contraseña o línea de comando. Aún mejor, necesitamos 24 bytes de la mitad del archivo, después del número mágico que indica un archivo clave, pero antes de los bytes de suma de comprobación.
El comando adecuado para obtener la clave hexadecimal correcta es:
hexdump -s 8 -n 24 -e '1/1 "%.2x"' /path/to/SystemKey && echo
Explicación: omita los primeros 8 bytes desde el principio del archivo, continúe 24 bytes después de eso y use la cadena de formato para volcar los datos en una línea (es una cadena de estilo C, si tiene curiosidad) printf
.
La && echo
razón es que obtenemos una sola línea nueva después para que la salida no se ejecute al comienzo de su indicador de shell después de que finalice el comando.
Copie esta cadena a un lado. Esta es la clave de descifrado para el llavero.
Necesitamos una herramienta de terceros para esto. Suponemos que la Mac muerta no se puede iniciar de tal manera que podamos usar su aplicación Acceso a Llaveros normalmente.
Esa herramienta será Chainbreaker , un script de Python. Deberá instalar la hexdump
biblioteca 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 acabas de encontrar y el archivo:
python chainbreaker.py -f /path/to/system.keychain -k (the byte string from step 1)
Verá la contraseña de texto sin formato de todo 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
archivo Time Machine
. La contraseña de texto sin formato estará debajo.
Ahora podemos simplemente usar el Finder para abrir Time Machine .sparsebundle, proporcionar la contraseña que extrajimos del archivo de claves y continuar como de costumbre.
manú
mattpr
mikey conocimientos tradicionales
mikey conocimientos tradicionales