Tout d'abord, pour clarifier root
y data
:
- Répertoire racine
/
des appareils Android est un pseudo système de fichiers (temporaire) en lecture seule ( rootfs
) qui vit dans la RAM et disparaît lorsque l'appareil est éteint. Lorsque l'appareil est mis sous tension, il est à nouveau extrait de la mémoire vive. initramfs
qui vit dans boot
partition avec le noyau.
Sur les appareils plus récents avec système-as-Root , system
est montée à la racine /
.
-
/data
est un point de montage, où la plus grande partition, généralement nommée userdata
est monté. Cette partition contient toutes les applications de l'utilisateur, leurs données (paramètres, bases de données, caches, fichiers temporaires, etc.), les données des applications du système et toutes les autres configurations que nous effectuons par l'intermédiaire de Settings
. /data/media/0
est le répertoire que nous voyons comme /sdcard
o /storage/emulated/0
par le biais de émulation .
... il y avait un fichier dans le répertoire /data dont j'ai besoin. Est-il possible de créer une image (.img ou quelque chose de similaire) du répertoire racine ...
Si un fichier est supprimé de /data
vous devez créer un fichier de data
et non celle du répertoire Root.
Vous pouvez le faire de plusieurs façons décrites ci-dessous. Toutes nécessitent Accès à la racine .
Mais tout d'abord, voyez cette réponse pour s'assurer que vos données sont récupérables.
En bref, la récupération n'est plus ou moins possible que si ( 1 ) :
- Vos données supprimées n'ont pas été
TRIM
med ou discard
ed.
- Et vous n'avez pas fait de réinitialisation d'usine sur les données cryptées.
/data
partition.
Ce que vous devez faire immédiatement :
- Éteignez le téléphone pour vous assurer que les données supprimées ne sont pas écrasées.
- N'installez pas d'applications de récupération de données sur l'appareil, elles peuvent faire plus de mal que de bien.
- Monter le système de fichiers (si nécessaire) en mode de récupération (ou sur le PC) uniquement avec
ro,nodiscard
options.
TROUVER UN DISPOSITIF DE BLOCAGE :
Afin d'accéder au userdata
vous devez trouver son périphérique de bloc. Si vous avez un accès Root, vous pouvez le faire à partir des partitions montées :
~# mount | grep 'on /data'
/dev/block/mmcblk0p... on /data type f2fs (rw,nosuid,nodev,...)
Sur les appareils Qualcomm, il se trouve à l'adresse suivante /dev/block/bootdevice/by-name/userdata
(lien symbolique). Pour MediaTek ( MTK
) et d'autres SoCs, le chemin est légèrement différent. Vous pouvez trouver tous les dispositifs de bloc ou by-name
répertoire en utilisant find
commandement :
~# find /dev -type b
~# find /dev -type d -name 'by-name'
Ou par des coups et des procès :
~# ls -d /dev/*/by-name
~# ls -d /dev/*/*/by-name
~# ls -d /dev/*/*/*/by-name
注
- Si votre
/data
la partition a Cryptage complet du disque (FDE) vous devez le décrypter avant de l'exposer à l'UMS, car le décryptage du FDE d'Android sur un PC est presque impossible dans la plupart des cas en raison du cryptage renforcé par le matériel. Voir quelques explications pertinentes dans ma réponse à Cryptage de la carte SD compatible multi-plateforme pour Android . dm-crypt
décrypte le dispositif de bloc pour /dev/block/dm-[N]
. Utilisez ceci à la place de userdata
.
- Pour éviter toute perte de données, il est recommandé de créer un dump lorsque la partition n'est pas montée, c'est-à-dire en mode récupération.
CRÉATION D'UN DUMP DE PARTITION :
DISK DUMP ( dd
)
Une fois que le périphérique de bloc est connu, vous pouvez utiliser la fonction dd
commande de :
- shell ADB (OS ou récupération personnalisée)
- Un émulateur de terminal comme Termux
Depuis le userdata
est la plus grande partition (toutes les autres partitions utilisent à peine 5 Go du stockage total), vous ne pouvez pas la vider sur votre mémoire interne. Une carte SD externe de plus grande capacité est nécessaire.
Pour créer la décharge :
~# dd if=/dev/block/bootdevice/by-name/userdata of=/path/to/ext_sdcard/data.img
ADB
Si vous ne voulez pas utiliser une carte SD externe, vous pouvez aussi vider la partition directement sur le PC. Vous avez d'abord besoin d'un adb
installation, fonctionnant comme Root. Ensuite, il peut être utilisé de plusieurs façons :
~$ adb exec-out dd if=/dev/block/bootdevice/by-name/userdata > data.img
* Assurez-vous que votre adb
binaire (sous Windows ou Linux) prend en charge exec-out .
Mais vous pouvez vous retrouver avec des données corrompues lorsque vous écrivez une partition entière de grande taille sur le disque dur. STDOUT
de terminal car il y a des problèmes avec les types de saut de ligne ( CR
y LF
). Voir aussi STDOUT
o STDERR
des programmes concernés pourraient éventuellement être ajoutées au dossier si elles ne sont pas adressées à /dev/null
. Même un seul octet erroné peut rendre les systèmes de fichiers non montables. Voir cette question pour référence.
Pour éviter les caractères indésirables, utilisez stty raw
y/o dos2unix
:
~$ adb shell 'stty raw && dd if=/dev/block/bootdevice/by-name/userdata' > data.img
Mais le moyen le plus direct est :
~$ adb pull /dev/block/bootdevice/by-name/userdata data.img
Voir cette réponse pour plus de détails.
FLUX SUR TCP
Pour éviter les complications liées au terminal décrites ci-dessus ou si pour une raison quelconque adbd
ne peut pas être exécuté en tant que Root Il est également possible de créer un serveur TCP minimal pour le transfert de données. Faites suivre le port du téléphone vers le PC et exécutez une commande netcat
Serveur TCP en mode écoute :
~$ adb reverse tcp:1024 tcp:1024
~$ nc -v -l -p 1024 </dev/null | pv -ab >data.img
Au téléphone :
~# cat /dev/block/bootdevice/by-name/userdata | busybox nc 127.0.0.1 1024
CONNEXION USB (RNDIS)
Pour éviter d'utiliser ADB, on peut utiliser le tethering USB pour assurer la connectivité réseau :
~# cd /sys/class/android_usb/android0
~# echo -n 0 >enable
~# echo -n rndis,adb >functions
~# echo -n 1 >enable
* Vous pouvez également modifier d'autres fichiers comme {iSerial,iProduct,iManufacturer}
y f_rndis/{ethaddr,manufacturer,wceis,rndis_transports,max_pkt_per_xfer}
dans le répertoire ci-dessus si nécessaire. * Sur les nouveaux appareils, vous devrez peut-être utiliser /config
au lieu de /sys
. Quelques conseils pertinents aquí .
Ajouter une adresse IP :
~# busybox ip rule add lookup main
~# busybox ip address add 192.168.1.1/30 dev rndis0
~# busybox ip link set rndis0 up
Sur le PC, ajoutez l'IP manuellement (il n'y a pas de serveur DHCP) :
~$ sudo ip address add 192.168.1.2/30 dev usb0
~$ nc -v -l -p 1024 </dev/null | pv -ab >data.img
Au téléphone :
~# busybox nc 192.168.1.2 1024 </dev/block/bootdevice/by-name/userdata
De la même manière, il est également possible d'utiliser la fonction rclone rcat
pour transférer le dump via WebDAV ou FTP ou SFTP. Voir Comment diffuser une sauvegarde cryptée de l'ensemble du dispositif vers un hôte distant ?
STOCKAGE DE MASSE USB (UMS)
Cette méthode est utile si vous ne voulez pas créer un dump de la partition, mais plutôt accéder à la partition directement sur le PC. Voir ma réponse à Pourquoi ne puis-je pas voir le stockage Android comme une partition sur le PC ? pour connaître les méthodes permettant d'activer l'UMS de manière approfondie /sys
o /config
interfaces.
Une fois fait, userdata
apparaîtra comme une partition sur le PC Linux, tout comme nous connectons une clé USB. Si /dev/sda
est le disque dur, généralement /dev/sdb
sera le userdata
partition. Vous pouvez trouver cela en utilisant blkid
commandement :
~# blkid | grep userdata
/dev/sdb: PARTLABEL="userdata" PARTUUID="..."
Vous pouvez exécuter des programmes de récupération directement sur le périphérique bloc ou monter le système de fichiers (si nécessaire) ou encore créer un dump.
COMMENT RÉCUPÉRER LES DONNÉES ?
Il existe essentiellement deux façons de récupérer des données supprimées, comme indiqué dans le document suivant cette réponse : méthode de découpage et par le biais du système de fichiers.
Les outils de récupération n'ont généralement pas besoin de monter les systèmes de fichiers, mais si c'est nécessaire, il faut le faire sur un PC Linux, car Windows ne prend pas en charge le montage des fichiers. ext4
o f2fs
nativement, donc les outils ne sont pas facilement disponibles AFAIK.
Si quelqu'un a réussi à accéder au niveau bloc/journal au système de fichiers Linux/Androïde pour récupérer des données sous Windows par le biais de Ext3Fsd ou tout autre pilote, faites-le moi savoir afin que je puisse mettre à jour la réponse.
Sous Linux, vous pouvez utiliser des outils comme supprimé pour récupérer des données en utilisant le journal du système de fichiers :
~# extundelete --restore-all data.img
Ou pour récupérer des données directement avec UMS :
~# extundelete --restore-all /dev/sdb
Puisque vous avez effectué une réinitialisation d'usine qui efface le système de fichiers, envisagez la méthode de sculpture en utilisant des outils tels que TestDisk o scalpel
:
~# testdisk data.img
De la même manière, vous pouvez utiliser n'importe quel autre outil de récupération de données. Voir l'ArchWiki sur Récupération de fichiers pour plus de détails.
RELATED :
1 votes
Duplicata : Comment récupérer un fichier supprimé sur Android ?
0 votes
Duplicata : Récupérer le contenu supprimé de la partition userdata ?