5 votos

Recuperar un volumen encriptado de OS X Extended

He formateado accidentalmente un disco duro externo de 1TB al sistema de archivos FAT utilizando la Utilidad de Discos en Mac OS. El disco estaba encriptado en HFS+. El cifrado se hizo cuando creé la partición de OS X Extended, no usando File Vault.

¿Hay alguna posibilidad de recuperar algún dato? ¿Puedo recuperar de alguna manera la información de la partición y reconstruir la tabla?

8voto

klanomath Puntos 19587

Bajo ciertas circunstancias, un volumen externo encriptado HFS+ borrado puede ser recuperado después de que el disco haya sido formateado a un volumen FAT32:

  • Todo el disco ha sido encriptado (a un volumen).
  • Todo el disco ha sido formateado en un volumen FAT32. La tabla de partición GUID no ha sido sustituida por un MBR. El disco todavía tiene un MBR (en lugar de un PMBR).

  • Algunas estructuras de datos internas invisibles de CoreStorage no deben ser sobrescritas.
    • la estructura de cabecera del volumen CoreStorage en el bloque de volumen 0 (anterior) (= bloque de disco 409640)
    • un segundo bloque en el (anterior) bloque de volumen 8 (= bloque de disco 409648)
    • un bloque de metadatos encriptado que comienza en el último bloque 577456 y termina en el último bloque 573360 (tamaño 4096 bloques)
    • varios elementos de metadatos de la etiqueta de disco en los últimos 16392 bloques del volumen (anterior)

Si no se ha escrito nada en el volumen FAT32, esas partes no deberían sobrescribirse.


Para recuperar el volumen encriptado hay que usar el Terminal y hacer algunos cálculos.

  1. Desconecte cualquier unidad externa excepto la mal formateada

  2. Abre el Terminal y entra:

    diskutil list

    para obtener una visión general y el identificador del disco externo. A continuación asumo que el identificador del disco es disk1

  3. Haz una copia de seguridad de todo el disco con sudo dd if=/dev/disk1 of=/Volumes/BackupVolume_Name/disk1.bin por si algo va mal o para un futuro con herramientas de recuperación avanzadas.

  4. Ahora obtenga la tabla de particiones del disco con:

    sudo gpt -r show /dev/disk1

    Deberías obtener un resultado similar a este:

          start       size  index  contents
              0          1         MBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640       2008         
         411648  133804032      2  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      134215680       2015         
      134217695         32         Sec GPT table
      134217727          1         Sec GPT header

    La primera partición es el volumen EFI, la segunda el volumen FAT32 del disco externo. Sin embargo, tu partición 2 es mucho más grande que la del ejemplo.

    Incluso si obtienes una salida diferente sin tabla de partición GUID sino sólo un MBR

          start       size index   contents
              0          1         MBR 
              1          1 
              2  134217726     1   MBR part 11

    puedes continuar: encriptar un disco con FileVault requiere una tabla de partición GUID - por lo que tu disco ya tenía una. Sin embargo, la probabilidad de recuperar un volumen FAT en un disco con MBR parece ser mucho menor. Aparentemente, algunas partes (concretamente algunos metadatos y cabeceras de volumen) pueden ser sobrescritas por cosas del sistema de archivos FAT32.

    El mismo disco que contiene un volumen HFS+ externo encriptado debería tener este aspecto:

          start       size  index  contents
              0          1         PMBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  133545904      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
      133955544     262144      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      134217688          7         
      134217695         32         Sec GPT table
      134217727          1         Sec GPT header

    La primera partición es la partición EFI con un tamaño y un bloque de inicio fijos, la tercera es una partición Apple_Boot con un tamaño y un bloque de inicio fijos relativos al último bloque del disco y el espacio de disco restante asignado al grupo lógico de almacenamiento del núcleo cifrado. Todas las particiones están alineadas con el tamaño de bloque físico del disco (4096 Bytes).

  5. Para restaurar la tabla de particiones antigua hay que desmontar el disco, borrar la tabla de particiones actual y hacer algunos cálculos para crear una nueva:

    diskutil umountDisk /dev/disk1
    sudo gpt destroy /dev/disk1
    diskutil umountDisk /dev/disk1
    sudo gpt create -f /dev/disk1
    gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk1
  6. Ahora obtenga el último número de bloque de su disco (en mi ejemplo es 134217727) y reste 262183: LastBlockNumber-262183 es el bloque inicial de la tercera partición (Apple_Boot). Añade esta partición con:

    gpt add -b LastBlockNumber-262183 -i 3 -s 262144 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk1
  7. Compruebe el tamaño del espacio de disco no asignado entre la partición 1 y la partición 3 con:

    sudo gpt -r show /dev/disk1
  8. El tamaño del espacio de disco no asignado (UnAlloc) entre el índice 1 y el índice 3 es probablemente el tamaño del antiguo volumen cifrado. El tamaño tiene sea divisible por 8 - ¡compruébelo! Añade esto como una partición con:

    gpt add -b 409640 -i 2 -s UnAlloc -t 53746F72-6167-11AA-AA11-00306543ECAC disk1 #with UnAlloc= size of unallocated disk space found above
  9. Después de introducir el último comando, se le pedirá la contraseña del disco encriptado:

    diskutil cs list

    para obtener una lista de elementos de CoreStorage. Intente montar el volumen encriptado con:

    diskutil cs unlockVolume LVUUID

    con LVUUID: el UUID del Volumen Lógico encriptado (normalmente el último de la lista). Si tu volumen principal también está encriptado, ¡elige el LVUUID adecuado!

    Si el volumen se monta con éxito, guarde los archivos y carpetas más importantes en un volumen externo, porque montar el volumen cifrado no significa necesariamente que el volumen no esté dañado.

    Desmonte el volumen y ejecute diskutil verifyDisk /dev/disk1 y diskutil repairDisk /dev/disk1 . ¡El último comando puede corromper completamente el disco!


Esto aún podría fallar. Sin embargo, el volumen encriptado puede seguir siendo recuperable. Pero entonces necesito más información, porque los elementos especiales (invisibles) del sistema que no son archivos tienen que ser leídos directamente del disco con un HexEditor y luego restaurados/reemplazados.

3voto

user184978 Puntos 1

He seguido la respuesta de Klanomath más arriba para recuperar con éxito el disco duro de mi Macintosh. Había intentado redimensionarlo desde ubuntu (Bootcamp) y dejé de ver completamente mi partición del HD de Macintosh. Había probado varios posts y herramientas para escribir y reescribir tablas de partición sin éxito y estaba a punto de rendirme. Seguí los pasos #5 a #8 del post.

Hice el # 5 y asumí que mi EFI habría empezado en 40 y tenía el mismo tamaño 409600. La siguiente captura de pantalla de la recuperación estelar mostró el volumen avanzado comenzando en 40 por lo que me dio alguna esperanza de que mi EFI al menos comenzó en el mismo sector. enter image description here Resultado de mi máquina:

 diskutil umountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
 sudo gpt destroy /dev/disk4
 diskutil umountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
 sudo gpt create -f /dev/disk4
 gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk4
disk4s1 added

Para el #6, aquí está la salida de mi máquina:

$ sudo gpt -r show /dev/disk4
Password:
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  976695387
  977105027         32         Sec GPT table
  977105059          1         Sec GPT header

Tenía el último bloque de mi disco duro (977105059), ahora ¿cuál debe ser mi tercera (última) partición cuyo tamaño debo restar al final? (Recordé que antes tenía un disco de recuperación, un disco de ubuntu además del HD de Macintosh. Además, testdisk me había mostrado docenas de particiones de recuperación perdidas, que adiviné basándome en sus tamaños, pero no pude elegir entre ellas). Así que me referí a la captura de pantalla anterior de nuevo (recuperación estelar). En este punto he visto y sé que un mac Recovery HD es de alrededor de 600ish MB así que tengo algunos candidatos de la captura de pantalla anterior. De acuerdo con este post, el sector de partida tiene que ser capaz de dividir completamente por 8, que sólo funcionó para 'Volumen perdido 6' de la captura de pantalla.

Eso me ha dado el sector inicial (975835488), pero ¿qué pasa con el tamaño? Bueno, a partir de unas capturas de pantalla de hace un par de días de los resultados del escaneo de testdisk (que me mostraron docenas de particiones de disco de recuperación perdidas) me había dado cuenta de que, aunque todos sus sectores iniciales eran diferentes, sus tamaños eran los mismos, es decir, 1269536 (ver captura de pantalla a continuación). Esto me dio la seguridad de que este era el tamaño correcto (en sectores) para un disco duro de recuperación de mac. enter image description here Así que ejecuté el siguiente comando (utilizando Starting sector:975835488, Size in sectors:1269536)

gpt add -b 975835488 -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk4
disk4s3 added

Para el #7, para mostrar el estado más reciente de 'gpt -r show':

$ sudo gpt -r show /dev/disk4
Password:
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  975425848
  975835488    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  977105024          3
  977105027         32         Sec GPT table
  977105059          1         Sec GPT header

En ese momento me dije: "Oh, vale, mi tabla de particiones se parece ligeramente a la del tipo del post, pero obviamente eso no va a servir de nada".

Eran cerca de las 2 de la mañana en ese momento y sólo quiero recorrer todos los pasos para descartar otro puesto porque 'yo también lo intenté'. Así que estoy un poco de prisa a través de él todavía tratando de conseguir los números correctos.

Así que ahora para el #8, de mi última captura de pantalla, 975425848 es el tamaño, y 409640 es el sector de inicio para mi partición que se supone que está en el medio (aka. Macintosh HD). Así que sigo adelante, aún sin muchas esperanzas, y ejecuto el siguiente comando:

gpt add -b 409640 -i 2 -s UnAlloc -t 53746F72-6167-11AA-AA11-00306543ECAC disk4
usage: gpt add [-b lba] [-i index] [-s lba] [-t uuid] device ...

oops, en realidad tengo que escribir el tamaño en lugar de 'UnAlloc'. Se me escapó esto de los comentarios del tipo con UnAlloc= tamaño del espacio de disco no asignado encontrado arriba

segundo intento:

gpt add -b 409640 -i 2 -s 975425848 -t 53746F72-6167-11AA-AA11-00306543ECAC disk4
disk4s2 added

Esta vez el comando tardó un par de segundos en producir una salida que me aceleró el corazón. ¡¡¡Tan pronto como produjo el resultado (disk4s2 added) me pidió una contraseña para mi "Macintosh HD" y estoy saltando en mi asiento mientras introduzco la contraseña que puedo recordar y voila, el disco aparece y también todos mis datos!!!

Después de 4 días completos de esfuerzo y de flipar con que había perdido todo mi trabajo y mi biblioteca de fotos, no podía creer que funcionara. Gracias, klanomath. Gracias, Dios.

p.d. Todo esto lo hice en otro mac con el mac original conectado a él vía thunderbolt en modo disco de destino. El software Stellar Recovery se ejecutó en el mac también mientras que los resultados del disco de prueba fueron de un live cd de ubuntu en el mac original (aunque estoy seguro de que podría haber ejecutado testdisk en el segundo mac también aunque más lento)

-1voto

Manolis Puntos 109

Para romper la encriptación del disco duro hay que formatear el disco o romper el algoritmo de encriptación utilizando el Terminal. Ambos casos darán lugar a la creación de una nueva estructura de archivos en el disco duro del Mac y resultarán en pérdidas de datos.

¿Hay alguna posibilidad de recuperar algún dato?

Supongo que la única posibilidad que me queda es un software de recuperación de datos. He encontrado este post ¿Cómo cifrar, descifrar y recuperar el disco duro del Mac? . Puede que te ayude.

¿Puedo recuperar de alguna manera la información de la partición y reconstruir la tabla?

¿Está dañada la tabla de su disco duro después de formatear el disco? Vuelva a formatearlo a HFS para que se genere una nueva tabla de particiones.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X