9 votes

Existe-t-il un moyen d'obtenir une image disque de l'espace de stockage utilisateur sur les appareils Android modernes ?

Je veux savoir s'il est possible d'obtenir une "image disque" de l'espace de stockage sur les appareils Android lorsqu'ils n'utilisent pas de stockage externe comme les cartes SD.

Je suis surtout intéressé parce que mes enfants ont réinitialisé mon Kindle Fire HDX et j'espérais pouvoir obtenir une image disque (en utilisant quelque chose comme dd sous Linux) et ensuite essayer de récupérer certaines des données utilisateur comme les photos et les vidéos (en utilisant quelque chose comme PhotoRec, http://www.cgsecurity.org/wiki/PhotoRec ). J'ai fait cela de nombreuses fois avec des cartes SD et des disques durs en montant simplement le périphérique de stockage dans un bureau fonctionnant sous Debian, et en exécutant quelque chose comme :

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

Ensuite, vous pouvez utiliser PhotoRec et/ou TestDisk, selon ce que vous voulez, pour obtenir des éléments utiles du fichier image.

Même certains de mes très vieux appareils Android semblent permettre de monter un périphérique de stockage de cette manière (sans retirer la carte SD du téléphone) et de suivre ce processus. Malheureusement, il semble que beaucoup de nouveaux appareils qui n'ont pas de stockage amovible (comme mon Kindle Fire HDX et mon Nexus 5) ne permettent de s'interfacer avec un ordinateur qu'en utilisant le Media Transfer Protocol (MTP) et le Picture Transfer Protocol (PTP).

Puis-je utiliser ces protocoles pour obtenir une copie bit à bit du stockage dans l'appareil ? Existe-t-il un moyen d'ajouter les capacités des anciens dispositifs de stockage aux nouveaux téléphones ?

7voto

Joshua Points 161

Après avoir fait quelques recherches supplémentaires, je pense avoir trouvé une solution partielle :

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

  • Tout d'abord, vous devez configurer ADB sur votre ordinateur. Sous Linux, c'est assez facile. Il suffit de lancer # apt-get install android-tools-adb ou le téléchargement et l'extraction d'un répertoire.

  • Trouvez vos partitions. Exécutez quelque chose comme : adb shell cat /proc/partitions Il y a d'autres options dans le lien pour savoir comment trouver et identifier toutes les partitions.

  • Copier les données L'outil dd devrait être disponible. Vous pouvez exécuter quelque chose comme dd if=/dev/block/mmcblk0p9 of=/sdcard/image.img

Malheureusement, cela me pose deux problèmes. Le premier est que les autorisations sur les périphériques de partition peuvent nécessiter un accès Root. Le second est que le Kindle Fire HDX et beaucoup d'autres appareils modernes qui n'ont pas de "stockage de masse USB" n'utilisent pas non plus de cartes SD. Il n'y a donc pas d'emplacement facile pour écrire l'image que vous voulez qui ne soit pas déjà utilisé pour autre chose sur l'appareil.

J'essaie de trouver un moyen de monter des périphériques réseau ou de transférer des données par USB entre le périphérique et l'ordinateur (adb push et adb pull ne font pas ce qui est nécessaire pour autant que je puisse dire). Je mettrai à jour cette page si je trouve une bonne solution. Sinon, je vais poser d'autres questions à ce sujet.

Edit : Cette page contient une excellente description qui va dans le sens de ce que je viens de dire : http://www.df.lth.se/~jokke/androidfilerecovery/

Comme indiqué ci-dessous, la racine est nécessaire, mais il existe généralement de nombreux moyens de l'obtenir facilement. Malheureusement, je travaillais avec le Fire HDX 8.9. À mi-chemin de la copie des données dans un fichier image, l'appareil télécharge automatiquement une mise à jour vers 4.1.1. Ensuite, l'accès Root disparaît et je ne pense pas qu'il y ait encore un exploit pour cela. J'ai probablement perdu toutes les données récupérables après que la mise à jour ait été écrite sur le stockage interne de toute façon. Je suis tellement frustré avec Amazon ces derniers temps...

5voto

Quan Do Points 51

Joshua a bien répondu à la question. Cependant, Izzy a donné un aperçu supplémentaire pour s'attaquer à ces variations rares/étranges du même problème.

J'aimerais apporter ma contribution (ma première contribution depuis plus de 10 ans) pour ceux qui se retrouveraient dans le même scénario que moi. Quoi qu'il en soit, 24 heures plus tard, avec de la persévérance et de la détermination, la commande suivante vous éclairera (en supposant que vous avez déjà des compétences intermédiaires/avancées).

En fait, je ne l'expliquerai pas, car la commande elle-même est assez évidente.

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

Ce sont les outils que j'ai utilisés pour faire le travail.

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 transmettra les statistiques à stdout après l'achèvement (lié à BusyBox)
  2. trouver un outil pour couper les décalages non désirés au niveau de l'EOF (ce n'est pas une obligation)
  3. Montez l'image en utilisant le logiciel de récupération de données préféré ou autre.
  4. /dev/pts/0 devrait fonctionner directement, mais si vous exécutez plusieurs commandes shell adb à partir de plusieurs consoles/terminaux, faites attention au numéro de référence du pointeur de développement car il sera différent. En utilisant la commande suivante, vous pouvez simplement déterminer lequel : pts:0, pts:1, ...

    adb shell "ps -l"

-1voto

Photo Larry Points 1

Cette ligne : adb pull /Dev/block/device-by-name/userdata data.img devrait fonctionner. Je ne l'ai pas testé mais ça devrait être proche. Cela permet d'extraire l'image complète que vous pouvez flasher ou peut-être pousser plus tard dans le processus de restauration. Ça ne fonctionne que si tu es enraciné. Ça ne marchera pas si vous ne l'êtes pas. Erreur de permissions. Je suppose que si vous avez fait fastboot avec TWRP et que vous n'êtes pas rooté, si vous arrivez à décrypter, vous pouvez copier l'image de cette façon. J'évite l'enracinement pour le moment. Il semble être plus stable avec Android 10

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X