¿Cómo recuperar datos del almacenamiento adaptativo mientras el teléfono rooteado se atasca en el arranque?

Entonces, estoy usando Galaxy Mega (i9152) con una ROM CM13 que flasheé a través de TWRP. Por el bien de ejecutar PoGO, había deshabilitado la raíz a través de la configuración de la aplicación SuperSu en CM13 (el juego aún no se ejecutaba, seguía tropezando con la red de seguridad). El teléfono funcionaba bien hasta hace 2 días, después de lo cual comenzó a entrar en bootloop.

Entonces, busqué en Google cómo resolver el bucle de arranque y vi que corregir los permisos de archivo a través de TWRP podría resolver el problema. Hice eso, PERO también rooteé el teléfono cuando TWRP me pidió que instalara SuperSU, citando que el teléfono no estaba rooteado. Después de eso, el teléfono se atascó en Boot Animation (la cara de Android CM), posiblemente porque rooteé el teléfono a través de TWRP.

Había formateado mi tarjeta SD como interna, lo que significaba que no funcionaría en ningún otro dispositivo. Todas mis fotos y cosas están en esa tarjeta SD ahora. Investigué mucho en Google para encontrar una forma de descifrar la tarjeta SD cifrada y descubrí que puedo descifrarla a través de Linux. También recuperé el archivo .key de la carpeta /data/misc/vold y convertí el código al formato de 16 bytes apropiado a través de comandos de terminal.

Tengo un sistema Linux y he intentado descifrarlo. esto es lo que sucede cuando ejecuto parted -l. (También quería publicar la salida de fdisk -l, pero mi puntaje de reputación no me permite publicar más de 2 enlaces)

cuando corro separado -l

dado que los nombres "android_expand" y "android_meta" aún se muestran, ¡tengo esperanza y buenas razones para creer que mis datos aún están intactos!

pero cuando trato de montarlo...

cuando trato de descifrar la tarjeta SD y montarla

No sé qué hacer ahora, ya que esto es todo lo que sabía, todo lo que tenía:/, no tengo idea de qué sistema de archivos es la tarjeta cifrada. probé ext4 como se describe en la guía. tal vez si hubiera alguna manera de hacer que el archivo fstab pasara por TODOS los sistemas de archivos posibles, seleccionando el correcto y finalmente montando mi tarjeta SD. ¿Tal vez la función de montaje tiene una función 'automática' para detectar automáticamente los sistemas de archivos?

Intenté actualizar la MISMA ROM sin restablecer la configuración de fábrica, pero me dio un error que decía: "error al ejecutar el binario del actualizador" y también "no se puede instalar sobre datos incompatibles"

He borrado la caché y la caché de Dalvik VARIAS veces.

Hice una copia de seguridad de la parte de DATOS, a través de TWRP, usando OTRA tarjeta SD en el teléfono. También hice una copia de seguridad de la parte del SISTEMA en el almacenamiento interno del teléfono. Solo estoy preocupado por mis fotos y cosas en la tarjeta SD. No puedo ver mi tarjeta SD encriptada en TWRP, solo me muestra O MB en la opción de tarjeta SD en TWRP, posiblemente porque la tarjeta SD está encriptada. No tengo idea de cómo acceder a mis archivos en la tarjeta SD encriptada a través del administrador de archivos TWRP. no quiero perder mis datos solo ayúdenme a recuperar datos de esta tarjeta SD que ha sido encriptada por Android Marshmallow. No sé si mi tarjeta SD se detectará en el sistema operativo como antes si puedo volver a flashear EXACTAMENTE LA MISMA ROM que estaba usando antes de este desastre.

Solo para aclarar, estoy usando el lector de tarjetas SD interno de mi computadora portátil para leer la tarjeta con Linux (tengo ubuntu 16.04 LTS), con un adaptador de tarjeta SD suministrado con la tarjeta (es un Kingston 16 GB, SDHC clase 4)

si de alguna manera puedo acceder a mi tarjeta SD y recuperar todos mis datos, mi problema se resolverá. Por favor, ayúdame.

PD: también, al comienzo MUY de esta terrible experiencia, por error, PODRÍA haber creado particiones en la tarjeta SD, mientras usaba el fdisk. Espero que eso no borre los datos de la tarjeta SD o los corrompa. Hice CTRL+C para salir de la utilidad sin guardar los cambios... así que eso podría tener alguna esperanza.

EDITAR (1 de diciembre de 2019): Esto NO es un duplicado, como se puede ver en la solución que proporcioné a continuación. Esta pregunta representa un caso mucho más serio con el almacenamiento adoptado, donde su teléfono tiene problemas para arrancar o su sistema operativo está dañado. Deje que esta pregunta permanezca como está, ya que resultará útil para los usuarios avanzados y otros que tienen sus archivos atascados en el almacenamiento adoptado mientras enfrentan dificultades para acceder al sistema operativo de su teléfono.

¿Está seguro de que /dev/mmcblk0p2 existe en su dispositivo Linux? Ejecute dmesg para ver cuál es el mensaje de error exacto. Puede intentar ejecutar 'blockdev --getsize /dev/...' como un comando independiente para obtener el tamaño y ver los errores.
También intente ejecutar dmeset con el indicador -v para obtener detalles adicionales sobre lo que está sucediendo.
@NikolayElenkov, ¡gracias por responder! Resolví el problema, gracias en parte a su guía y gracias a un poco de mi propia intuición. Soy un estudiante del último año de CIS (Ingeniería informática) y me gustaría estar en contacto. ¿Dónde se le puede localizar fácilmente?
@NikolayElenkov, hice una copia de seguridad de los datos en mi PC. ahora el problema al que me enfrento es que quiero que mi teléfono móvil reconozca la tarjeta SD tal como es. He intentado esto borrando datos, sistema, caché, dalvik y LUEGO volviendo a flashear la nueva rom. y luego coloque el archivo .key en la carpeta vold, luego reinicie el teléfono. Y, el teléfono reconoce la tarjeta (NO solicita reformatear la tarjeta) pero no reconoce los datos, no ve ningún archivo, ninguna imagen dentro de los datos, aunque muestra que 1.63 GB de 14.55 GB en la tarjeta SD está ocupada. ¿Puedo obtener ayuda con respecto a esto?
@Irfan Latif no, esto ciertamente no es un duplicado. Puede ser similar, pero esta pregunta (y la respuesta posterior) representa un caso mucho más serio, en el que no tiene una forma trivial de acceder a sus archivos o incluso iniciar su teléfono más allá de la animación de inicio. Considere la diferencia en los casos antes de etiquetarlos como duplicados.
@MuhammadYasir marcar como duplicado no significa que su pregunta o respuesta no sea una buena contribución a la comunidad. Marcar duplicados o fusionar es para asegurarse de que más visitantes puedan llegar y beneficiarse de las cosas útiles que pones aquí después de investigar. En mi opinión, esta pregunta debe fusionarse con la otra. Esencialmente, la pregunta es la misma, con buenos detalles. Y la respuesta es mucho más detallada, pero no está llamando tanto la atención como debería. Pero obviamente mi opinión por sí sola no es suficiente, requiere más votos y/o la intervención de un moderador.
@NikolayElenkov (fuera de tema) recientemente descubrimos cómo restablecer el contador de descifrado fallido en el pie de página criptográfico fde. Te invitamos a unirte a nuestra conversación en xda (enlace en los comentarios) android.stackexchange.com/q/230892

Respuestas (1)

Antes de comenzar, recomendaría hacer una copia de seguridad COMPLETA de su tarjeta SD, a través de una imagen sin procesar (googlee el comando 'dd' en Linux)

seguí la guía aquí; Tarjeta SD corrupta formateada como almacenamiento interno

¡PERO con algunas MODIFICACIONES IMPORTANTES mías!

  1. El teléfono se atascó en BOOTLOOP y luego se atascó en BOOT Animation, sin acceso a ninguna utilidad habitual de administrador de archivos. Eso sí, esta es una situación MUY grave, ya que no existe un método trivial para obtener acceso a su tarjeta SD (se muestra como 0mb en el administrador de archivos TWRP) para hacer una copia de seguridad de sus valiosos datos, fotos y recuerdos. Además, esta es la única parte que es un poco inestable ya que no estoy completamente seguro de si mi teléfono estaba rooteado o no (ya que mi problema cambió de bootloop a animación de arranque cuando intenté instalar SuperSu a través de TWRP) y recuperar la clave de cifrado es fundamental para resolver esto. Tuve que obtener el archivo .key, ya que era fundamental para romper el cifrado de la tarjeta SD. Entonces, en medio de todo el pánico, pude navegar, a través del administrador de archivos TWRP, a la carpeta /data/misc/vold y encontré el archivo .key. ¡Este fue un gran avance!

  2. A continuación, para extraer el archivo. Usé otra tarjeta SD NO CIFRADA y transfirí el archivo .key a esa tarjeta, a través del administrador de archivos TWRP, leí esa tarjeta SD en la computadora portátil y obtuve el archivo .key en Ubuntu (16.04). Decodificó el archivo .key y obtuvo la clave de 16 bytes. hay 2 formas de hacer esto... abra el archivo a través de un editor hexadecimal (usé BLESS) y copie los 16 pares de dígitos hexadecimales que ve O use este comando;

hexdump -e '1/1 "%.2x"' expand_8838e738a18746b6e435bb0d04c15ccd.clave

asegúrese de estar en el MISMO directorio que el archivo .key al ejecutar este comando (los usuarios avanzados de Linux solucionarán esto, pero quiero que sea lo más fácil posible para principiantes)

Entonces, obtuve la clave de 32 dígitos / 16 bytes.

  1. SIGUIENTE, descifrar la tarjeta SD Y hacer que Linux la reconozca. cuando lo leí, a través del lector de tarjetas, no aparecía en Nautilus (el administrador de archivos de Ubuntu), pero al ejecutar fdisk-l y parted -l, vi

"partid -l salida"

http://pasteboard.co/5klviklR8.jpg

"fdisk -l salida"

http://pasteboard.co/POGvyBOxO.png

observe android_meta y android_expand, esos nombres me dieron esperanza, que mis datos aún estaban intactos. ESPECIALMENTE, ya que al comienzo del problema, había creado particiones y tablas de partición en la tarjeta SD a través de la utilidad fdisk (pero ctrl + c'ed out, por lo que es posible que los cambios no se hayan escrito, ¡UFH!)

el sistema de archivos desconocido fue el mayor dolor en todo este fiasco... ya que de acuerdo con las pocas guías y discusiones sobre este tema, se suponía que las tarjetas SD formateadas como internas por marshmallow eran un sistema de archivos ext4. pero ese no fue el caso, al menos no aquí.

  1. Entonces, para descifrar la tarjeta, usé
dmsetup create crypt1 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 "insert your 16-byte key here w/out double quotes" 0 /dev/mmcblk0p2 0"

si obtiene algún error relacionado con ioctl, use este formato en su lugar (este es el formato EXACTO que usé hoy, con mi clave y todo)

dmsetup create crypt7 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 07147CFFB77F249A5DBD2AD204610E7D  0 /dev/mmcblk0p2 0"

tenga en cuenta que la utilidad dmsetup debe instalarse en Linux. (buscalo en Google ) . también, tenga en cuenta que opté por la parición 'mmcblk0p2', ya que era la más grande en tamaño y tenía la inferencia obvia de contener todos los datos.

esto salió bien, se completó sin errores. Sin embargo, el siguiente bit, ABSOLUTAMENTE me volvió loco y tomó alrededor de 20 horas (incluido mi tiempo de sueño) para resolverlo correctamente.

  1. el sistema de archivos GADDAMN! estaba escrito EN TODAS PARTES que el almacenamiento adoptivo está formateado como ext4, así que cuando ejecuté el comando

# montar -t ext4 /dev/mapper/crypt1 /mnt/1/

(Tenga en cuenta que mnt/1/ debe existir como directorio en su carpeta raíz, si no, use mkdir para crearlo)

dio el maldito error

mal fs o mala opción.

y esto me hizo pensar... si la tarjeta SD NO es del tipo ext4, entonces ¡CÓMO DEBO saber qué sistema de archivos es de todos los posibles!

Busqué y busqué un comando que pudiera forzar el ciclo a través de TODAS las posibilidades en un método de fuerza bruta o cualquier entrada que pudiera hacer en el archivo /etc/fstab que pudiera detectar AUTOMÁTICAMENTE el sistema de archivos de alguna manera, pero fue en vano...

5 . Al final, recordé... que tal vez, solo TAL VEZ el sistema de archivos era f2fs (sistema de archivos compatible con flash). Y eso resultó ser un recuerdo revelador...

para este código;

montar -t f2fs /dev/mapper/crypt1 /mnt/1

resultó ser el OBJETIVO GANADOR!

Luego pude hacer un cd en /mnt/1 y vi algunos archivos muy familiares al estilo de Android y, a partir de ahí, ¡fue Eternal BLISS!

tanto ext4 como f2fs tienen un superbloque, que identifica el sistema de archivos. si observa los primeros bytes de la partición, puede identificar fácilmente el sistema de archivos utilizado.
@NikolayElenkov ah... ¡gracias! ¡eso se suma a mi conocimiento y lo tendré en cuenta la próxima vez que trate con sistemas de archivos! mientras tanto, ¿puede echar un vistazo aquí? android.stackexchange.com/questions/172347/… también, hice una publicación detallada sobre esto, aquí: forum.xda-developers.com/… <-- aquí, describí el problema en detalle y paso a paso. ¡Le agradecería que le echara un vistazo y me sacara del apuro!