¿Cómo descifrar la tarjeta SD corrupta formateada como almacenamiento interno?

Así que estoy en Marshmallow y he formateado mi tarjeta SD como almacenamiento interno. Su sistema de archivos se corrompió dos semanas después por alguna razón.

Al conectarlo a GParted, veo 16 MB de FAT32 y el resto es un sistema de archivos no reconocido. No está sin formato, simplemente no reconocido.

GParted está dando el mensaje "No se puede leer el contenido del sistema de archivos". error para ambas particiones, aunque se puede acceder a la partición FAT32 desde el Explorador de archivos sin problemas.

Es un Samsung i9505 que se ejecuta en Cyanogenmod 13 de construcción nocturna.

EDITAR: descubrí que las particiones no reconocidas son un ext4 cifrado AES-128 bit estático. Ahora intentaré descifrarlo y recuperar lo que sea.

EDIT2: Cambié de opinión y no me molestaré. Formateando como almacenamiento externo esta vez.

¿Qué tan común es esto?

Respuestas (1)

Incluso si no responde completamente la pregunta, aquí hay una guía para descifrar el almacenamiento externo formateado como interno. Sin embargo, debe ser root en su teléfono.

La esencia es que buscamos cadenas que incluyan la palabra clave expandy que terminen .keydentro voldusando:

$ strings vold|grep -i expand
--change-name=0:android_expand
%s/expand_%s.key
/mnt/expand/%s

Devuelve una clave de 16 bytes.

expand_8838e738a18746b6e435bb0d04c15ccd.key

Luego le pasas la llave a este chico malo:

# dmsetup create crypt1 --table "0 `blockdev --getsize /dev/sdb2` crypt \
aes-cbc-essiv:sha256 00010203040506070809010a0b0c0d0e0f 0 /dev/sdb2 0"

Y monta eso en:

# mount -t ext4 /dev/mapper/crypt1 /mnt/1/
# cd /mnt/1
# find ./ -type d

Ahora puede hacer cptodo en otro lugar y, con suerte, guardar algunos datos. Recuerde excluir cualquier dato relacionado con la clave ( grep) al hacerlo, en caso de que desee volver a formatear como interno y volver a colocar sus cosas.

Puede usar hexdump -e '1/1 "%.2x"' expand_8838e738a18746b6e435bb0d04c15ccd.keypara convertir binario a hexadecimal.
¿Dónde exactamente ejecutas esos comandos?
@Royi Conectas tu tarjeta SD a una computadora con Linux.
Para ser exactos, la clave de almacenamiento expandido de named expand_8838e738a18746b6e435bb0d04c15ccd.key(el número hexadecimal real depende de su dispositivo de almacenamiento expandido) debe obtenerse o leerse desde el teléfono. El archivo generalmente se encuentra en el directorio /data/misc/voldy el directorio puede contener varias claves si se han utilizado varias tarjetas SD. Tenga en cuenta que debe tener rootacceso a su teléfono para ver el contenido de los archivos clave y extraer la clave de cifrado requerida.