Recuperación de datos de una tarjeta SD dañada formateada como almacenamiento interno (Marshmallow)

Tengo una tarjeta SD en un Moto G (2015) con malvavisco, no rooteado. Fue formateado como almacenamiento interno y contiene fotos y videos del nacimiento de nuestra hija, pero se corrompió.

Dado que fue formateado como almacenamiento interno, es un sistema de archivos ESDFS y presumiblemente encriptado. No puedo descifrarlo sin acceder a la clave de cifrado, lo cual no puedo hacer porque no estoy rooteado. Presumiblemente, el enraizamiento eliminará esa clave de cifrado.

Supongo que está corrupto porque cualquier intento de mirar la tarjeta SD desde Android desmonta la tarjeta y el teléfono no puede ver ninguna de las imágenes/videos allí. Cuando se inserta la tarjeta, el menú de "almacenamiento" reconocerá inicialmente la tarjeta y me dirá qué tan llena está, pero cualquier intento de mirar dentro de la tarjeta resultará en que se desmonte.

Intenté ejecutar fsck: dentro del sistema/bin hay fsck_msdos y fsck.f2fs, pero ambos aparecen como 'permiso denegado' cuando los busco, y 'no existe tal archivo' cuando intento ejecutarlos.

Puedo acceder a /data desde un shell adb, pero intentar ingresar a /data/data/media da como resultado 'permiso denegado'

¿Alguien puede ayudar? Por ejemplo: 1) ¿El enrutamiento eliminará la clave de cifrado para que no se pueda acceder a la tarjeta? 2) ¿hay alguna manera de hacer que fsck funcione? 3) ¿alguna otra idea para sacar a los medios de comunicación de esta tarjeta?

Muchas gracias de antemano. Soy un poco novato, ¡así que se agradecen las instrucciones claras!

Si tuvieras Google Fotos, es posible que tus fotos hayan sido respaldadas en la nube... Visita photos.google.com para verificar... ¡Buena suerte!
Lo mismo aquí, mismo modelo de teléfono. Mi tarjeta SD se frió esta tarde. :(
android.stackexchange.com/questions/135803/… Esto puede ser de ayuda. Tengo el mismo problema, pero creo que no tengo las habilidades. hermano
Esta solución funcionó perfectamente para mí: android.stackexchange.com/questions/174799/…

Respuestas (2)

1) ¿El enrutamiento eliminará la clave de cifrado para que no se pueda acceder a la tarjeta?

No, en realidad "rootear" no eliminará nada. Rootear es solo agregar una aplicación para superusuario o acceso a nivel de raíz. Dicho esto, para rootear su dispositivo debe tener un gestor de arranque desbloqueado. Desbloquear el gestor de arranque borrará todo el dispositivo, incluida la clave de cifrado y todos los demás datos del dispositivo. En el Moto G 2015 no hay forma de evitar esto. Ah, y quitar la tarjeta y realizar la operación no funcionará, una vez que esté rooteada, el sistema será diferente y la clave de cifrado cambiará.

2) ¿hay alguna manera de hacer que fsck funcione?

No sin acceso de root. Para ser honesto, incluso si lo hizo funcionar, las posibilidades de que corrija este tipo de problema son muy bajas.

3) ¿alguna otra idea para sacar a los medios de comunicación de esta tarjeta?

Desafortunadamente, no... una vez que el sistema ha adoptado los medios, se cifran con una clave única para ese sistema. Si puede acceder a la clave, es posible acceder a los datos a través de Linux suponiendo que los datos no estén dañados. Si los datos están dañados, las posibilidades de recuperar datos cifrados y corruptos son extremadamente pequeñas.

Por mucho que me gustaría poder darle una respuesta para recuperar sus preciadas fotos y videos, no creo que haya una. Todo lo que puedo decir es que, en el futuro, sugiero NO usar el almacenamiento adoptado si es posible (si esta tarjeta fuera un almacenamiento externo / portátil simple, las posibilidades de recuperar medios aumentarían exponencialmente) y usar una solución de copia de seguridad en la nube como Google Photo que tiene la capacidad de mantener una copia de seguridad de sus fotos y videos automáticamente.

Esto posiblemente sugiere una forma de extraer la clave de cifrado
No necesita desbloquear el gestor de arranque para rootear un dispositivo. Solo se necesita para instalar un sistema operativo personalizado, recuperación, etc. Si uno quiere instalar un sistema operativo previamente rooteado (que se incluye en la instalación de un sistema operativo personalizado), entonces es necesario desbloquear el gestor de arranque. Pero NO ES NECESARIO si uno está rooteando el sistema operativo existente en el dispositivo usando un exploit.
Rootear el sistema operativo existente requiere tener una vulnerabilidad raíz local y un código de shell que funcione. Si su firmware actual no incluye problemas de seguridad conocidos, no hay forma de rootear el sistema sin desbloquear el gestor de arranque (lo que obligará a borrar todo el dispositivo en el caso de Moto G).

Habiendo visto el mismo problema más de una vez y después de dejar de intentar rootear mi teléfono (raíz en tiempo de ejecución), opté por un método que esperaba que funcionara y realmente funcionó.

El método que elegí requerirá una tarjeta SD y un lector de tarjetas idénticos, sin embargo, creo que también debería funcionar con cualquier tarjeta SD siempre que sea más grande; sin embargo, no la he probado.

Retire la tarjeta SD supuestamente dañada del teléfono y conéctela a una máquina Linux. Después de encontrar qué dispositivo lo representaba (comúnmente /dev/mmcblk*), use ddpara extraer su contenido:

$ sudo dd if=/dev/mmcblk0 of=/tmp/sdcard.dump bs=4M

sdcard.dumpserá absolutamente inútil ya que está encriptado y no tienes la clave de encriptación, pero no importa. Expulse esa tarjeta SD e inserte la nueva, pruebe el dispositivo de la tarjeta SD (digamos /dev/mmcblk1) y luego ejecute:

$ sudo dd if=/tmp/sdcard.dump of=/dev/mmcblk1 bs=4M
$ sync; sync

Expulsa la nueva tarjeta SD y conéctala a tu teléfono. En mi caso, se engañó al teléfono para que usara esa nueva tarjeta como su almacenamiento existente, lo montó y me permitió acceder a su contenido.

Si obtiene errores al leer la tarjeta SD dañada, intente usar ddrescueen lugar de ddal crear la imagen inicial. Lo más probable es que, a pesar de los errores, aún tenga acceso a una gran parte de los datos de la tarjeta.

Supongo que querrá reemplazar sdcard.sumpcon sdcard.dumpen el primer comando.
Esta respuesta tiene una idea similar detrás, solo que en lugar de reemplazar la tarjeta, reemplazaron el lector SD interno del teléfono con un lector USB externo.