9 votos

¿Hay alguna forma de obtener una imagen de disco del espacio de almacenamiento del usuario en los dispositivos Android modernos?

Quiero saber si es posible obtener una "imagen de disco" del espacio de almacenamiento en los dispositivos Android cuando no utilizan almacenamiento externo como las tarjetas SD.

Me interesa sobre todo porque mis hijos resetearon de fábrica mi Kindle Fire HDX y esperaba poder obtener una imagen de disco (usando algo como dd en Linux) y luego intentar recuperar algunos de los datos del usuario como fotos y vídeos (usando algo como PhotoRec, http://www.cgsecurity.org/wiki/PhotoRec ). He hecho esto muchas veces con tarjetas SD y discos duros simplemente montando el dispositivo de almacenamiento en un escritorio con Debian, y ejecutando algo como

# dd if=/dev/sdb1 of=image.iso

Luego puedes usar PhotoRec y/o TestDisk, dependiendo de lo que quieras, para sacar cosas útiles del archivo de imagen.

Incluso algunos de mis dispositivos Android muy antiguos parecen permitir montar un dispositivo de almacenamiento de esta manera (sin quitar la tarjeta SD del teléfono) y seguir este proceso. Por desgracia, parece que muchos de los nuevos dispositivos que no tienen almacenamiento extraíble (como mi Kindle Fire HDX y mi Nexus 5) sólo permiten interactuar con un ordenador mediante el Protocolo de Transferencia de Medios (MTP) y el Protocolo de Transferencia de Imágenes (PTP).

¿Puedo utilizar estos protocolos para obtener una copia bit a bit del almacenamiento en el dispositivo? ¿Hay alguna forma de añadir las capacidades de los dispositivos de almacenamiento más antiguos a los nuevos teléfonos?

0 votos

7voto

Joshua Puntos 6

Después de investigar un poco más, creo que he encontrado una solución parcial:

http://forum.xda-developers.com/showthread.php?t=2450045

  • En primer lugar, tienes que configurar ADB en tu ordenador. En Linux es bastante fácil. Algo así como ejecutar # apt-get install android-tools-adb o descargando y extrayendo un directorio.

  • Encuentra tus particiones. Ejecuta algo como: adb shell cat /proc/partitions En el enlace hay otras opciones para encontrar e identificar todas las particiones.

  • Copiar los datos La herramienta dd debería estar disponible. Puedes ejecutar algo como dd if=/dev/block/mmcblk0p9 of=/sdcard/image.img

Por desgracia, tengo dos problemas con esto. El primero es que los permisos en los dispositivos de partición pueden requerir acceso Root. El segundo es que el Kindle Fire HDX y muchos otros dispositivos modernos que no tienen "almacenamiento masivo USB" tampoco utilizan tarjetas SD. Así que no hay una ubicación fácil para escribir la imagen que desea que no se utiliza ya para otra cosa en el dispositivo.

Estoy tratando de encontrar una manera de montar los dispositivos de red o la transferencia de datos a través de USB entre el dispositivo y el ordenador (adb push y adb pull no va a hacer lo que se necesita por lo que puedo decir). Actualizaré esto si encuentro una buena solución. Si no, haré otras preguntas al respecto.

Edición: Esta página tiene una gran descripción en la línea de lo que tengo arriba: http://www.df.lth.se/~jokke/androidfilerecovery/

Como se indica a continuación, es necesario Root, pero por lo general hay un montón de maneras de conseguir que fácilmente. Por desgracia, yo estaba trabajando con el Fire HDX 8.9. A mitad de camino de mi copia de datos a un archivo de imagen, la cosa auto descarga una actualización a 4.1.1. Lo siguiente que sé, el acceso Root desaparece y no creo que haya un exploit para ello todavía. Probablemente perdí cualquier dato recuperable después de la actualización se escribió en el almacenamiento interno de todos modos. Estoy tan frustrado con Amazon últimamente...

1 votos

Tienes razón: no hay forma de conseguir un dd volcado sin acceso a root. En cuanto a la copia, AFAIK hay maneras de "puente" a través de USB al otro extremo: He visto un artículo que lo describe en algún sitio, pero no recuerdo dónde era :( Básicamente: redirigir la salida de dd como adb shell "dd ..." > /localdir/file.dump , donde localdir reside en su ordenador.

3 votos

Gracias. Parece la solución ideal. He actualizado mi respuesta. Hay una gran página sobre este proceso en: df.lth.se/~jokke/androidfilerecovery (Todavía no puedo creer lo que tardé en encontrarlo).

0 votos

Sí. Exactamente eso era lo que tenía en mente. Me alegro de que al menos pueda proporcionar el puntero correcto :) // Por cierto: como es preferible incluir lo esencial con su respuesta (el enlace podría morir algún día), ¿te importa hacerlo con tu respuesta? ¿O prefieres que ponga una respuesta separada haciendo eso?

5voto

Quan Do Puntos 51

Joshua ha respondido más o menos a la pregunta. Sin embargo, Izzy dio una visión adicional para abordar las variaciones impares/raras del mismo problema.

Me gustaría contribuir (mi primer post de contribución en más de 10 años) para aquellos que tropezaran con el mismo escenario que yo. De todos modos, 24 horas después, con perseverancia y determinación, el siguiente comando arrojará algo de luz (asumiendo que ya tienes habilidades intermedias/avanzadas).

Por cierto, no voy a explicarlo, ya que el comando en sí es bastante obvio.

adb shell "dd if=/dev/block/mmcblk0p37 of=/dev/pts/0" > part37-img-dump.dd

Estas son las herramientas que utilicé para hacer el trabajo.

C:\HTCOneRoot\
 |--\adb.exe (version 1.0.31 21/05/2013, latest was buggy)
 |--\fastboot.exe (version fc2a139a55f5-android 24/04/2016)
 |--\AdbWinApi.dll
 |--\AdbWinUSBApi.dll
 |--\part37-img-dump.dd (output from the 'adb' command)

Nota:

  1. dd dará salida a las estadísticas en stdout tras la finalización (relacionado con BusyBox)
  2. encontrar una herramienta para recortar los desplazamientos no deseados en el EOF (no es imprescindible hacerlo)
  3. montar la imagen utilizando el software de recuperación de datos preferido o lo que sea
  4. /dev/pts/0 debería funcionar directamente, pero si resulta que estás ejecutando varios comandos adb shell desde varias consolas/terminales, entonces ten cuidado con el número de referencia del puntero dev, ya que será diferente. Usando el siguiente comando, puedes simplemente averiguar cuál es: pts:0, pts:1, ...

    adb shell "ps -l"

-1voto

Photo Larry Puntos 1

Esta línea: adb pull /Dev/block/device-by-name/userdata data.img debería funcionar. No lo he probado pero debería estar cerca. Esto tiraría de la imagen completa que podría flashear o tal vez empujar más tarde en el proceso de restauración. Sólo funciona si usted tiene root. No funcionará si no lo estás. Error de permisos. Supongo que si hiciste fastboot con TWRP y no estás rooteado, si consigues que funcione el descifrado, puedes copiar la imagen de esa manera. Yo estoy evitando el rooteo ahora mismo. Parece ser más estable con Android 10

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android 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