« e2fsprogs (1.41~WIP-2008-06-17-1) | Home | eth0 eth1 »

ext3grep et récupération de fichiers effacés

posté par cep le 17 juillet 2008

ext3grep est un utilitaire permettant de récupérer des fichiers effacés sur des systèmes ext3.

Il existe un paquet debian avec la version 0.6.0 de cet utilitaire, mais avec cette version il n’est pas encore possible de travailler sur un système de fichiers ext3 dont la taille des inodes est réglée à 256 bytes, ce qui est le cas de tous les fs créés avec une version e2fsprogs 1.40.5-1 ou supérieure.

ext3grep ne travaille pas sur le système de fichiers monté, mais sur une image du fs. Les fichiers récupérés sont placés dans un sous-répertoire du répertoire courant.

Exemple de récupération d’un fichier :

On va restaurer le fichier findfs.txt précédement supprimé sur le point de montage de /dev/hda10.

Pour rappel, le système de fichiers avait été créé avec la commande mkfs.ext3  -I 128 /dev/hda10 pour avoir des inodes de 128 bytes.

On démonte /dev/hda10 et on crée une image du fs :

# umount /dev/hda10
# dd if=/dev/hda10 of=hda10_image

Dans le répertoire courant où a été créée l’image on lance la récupération du fichier findfs.txt

$ ext3grep hda10_image –restore-file findfs.txt
Running ext3grep version 0.6.0
WARNING: I don’t know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 8
Minimum / maximum journal block: 322 / 4424
Loading journal descriptors… sorting… done
Number of descriptors in journal: 22; min / max sequence numbers: 4 / 12
Writing output to directory RESTORED_FILES/
Finding all blocks that might be directories.
D: block containing directory start, d: block containing more directory entries.
Each plus represents a directory start that references the same inode as a directory
start that we found previously.

Searching group 0: DD++
Searching group 1:
Searching group 2:
Searching group 3:
Searching group 4:
Searching group 5:
Searching group 6:
Searching group 7:
Writing analysis so far to ‘hda10_image.ext3grep.stage1′. Delete that file if you want
to do this stage again.
Result of stage one:
2 inodes are referenced by one or more directory blocks, 2 of those inodes are still allocated.
1 inodes are referenced by more than one directory block, 1 of those inodes is still allocated.
0 blocks contain an extended directory.
Result of stage two:
2 of those inodes could be resolved because they are still allocated.
All directory inodes are accounted for!

Writing analysis so far to ‘hda10_image.ext3grep.stage2′. Delete that file if you want to do
this stage again.
Restoring findfs.txt

findfs.txt a en effet été récupéré dans RESTORED_FILES/ et est tout à fait éditable dans sa totalité.

Récupération de fichiers supprimés depuis une certaine date :

Si je supprime certains fichiers le jeudi 17 juillet 2008, 08:54:14 (UTC+0200), il est aussi possible de les récupérer en passant cette date comme point de départ de la recherche.

On transforme la date jeudi 17 juillet 2008, 08:54:14 en “date” machine :

$ date -d  ‘07/16/2008 18:29:49′ +%s
1216225789

et on passe le paramètre à ext3grep :

$ ext3grep hda10_image –restore-all –after=1216225789
Running ext3grep version 0.6.0
Only show/process deleted entries if they are deleted on or after Wed Jul 16 18:29:49 2008.

WARNING: I don’t know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 8
Minimum / maximum journal block: 322 / 4424
Loading journal descriptors… sorting… done
Number of descriptors in journal: 22; min / max sequence numbers: 4 / 12
Writing output to directory RESTORED_FILES/
Loading hda10_image.ext3grep.stage2… done
Restoring Numériser0001.jpg
Restoring cep.jpg
Restoring cep1.jpg
Restoring cep1.png
Restoring cep3.jpg
Restoring cep4.jpg
Restoring chemin.jpg
Restoring chemin1.jpg
Restoring findfs.txt
Restoring imgp0945.jpg
Restoring imgp0946.jpg
Restoring imgp0948.jpg
Restoring imgp0949.jpg
Restoring imgp0950.jpg
Restoring imgp0951.jpg
Restoring imgp0954.jpg
Restoring pisc_pier.jpg
Restoring portail.JPG
Restoring portrait.jpg
Restoring portrait1.jpg
Restoring portrait2.jpg
Restoring portrait3.gif
Restoring portrait3.jpg
Restoring roxy.jpg
Restoring zugrib1.png
Restoring zugrib2.png
Restoring zugrib_thumb.png

On vérifie la récupération :

$ ls -lh RESTORED_FILES/*
-rw-r–r– 1 sidcep sidcep 3,7K jui 17 08:48 RESTORED_FILES/cep1.jpg
-rw-r–r– 1 sidcep sidcep 9,9K jui 17 08:48 RESTORED_FILES/cep1.png
-rw-r–r– 1 sidcep sidcep  16K jui 17 08:48 RESTORED_FILES/cep3.jpg
-rw-r–r– 1 sidcep sidcep 6,1K jui 17 08:48 RESTORED_FILES/cep4.jpg
-rwxr-xr-x 1 sidcep sidcep 864K jui 17 08:48 RESTORED_FILES/cep.jpg
-rw-r–r– 1 sidcep sidcep 569K jui 17 08:48 RESTORED_FILES/chemin1.jpg
-rwxr-xr-x 1 sidcep sidcep 3,4M jui 17 08:48 RESTORED_FILES/chemin.jpg
-rw-r–r– 1 sidcep sidcep  780 jui 17 08:48 RESTORED_FILES/findfs.txt
-rwxr-xr-x 1 sidcep sidcep 2,4M jui 17 08:48 RESTORED_FILES/imgp0945.jpg
-rwxr-xr-x 1 sidcep sidcep 2,0M jui 17 08:48 RESTORED_FILES/imgp0946.jpg
-rwxr-xr-x 1 sidcep sidcep 2,4M jui 17 08:48 RESTORED_FILES/imgp0948.jpg
-rwxr-xr-x 1 sidcep sidcep 2,4M jui 17 08:48 RESTORED_FILES/imgp0949.jpg
-rwxr-xr-x 1 sidcep sidcep 2,4M jui 17 08:48 RESTORED_FILES/imgp0950.jpg
-rwxr-xr-x 1 sidcep sidcep 3,7M jui 17 08:48 RESTORED_FILES/imgp0951.jpg
-rwxr-xr-x 1 sidcep sidcep 3,5M jui 17 08:48 RESTORED_FILES/imgp0954.jpg
-rwxr-xr-x 1 sidcep sidcep 475K jui 17 08:48 RESTORED_FILES/Numériser0001.jpg
-rwxr-xr-x 1 sidcep sidcep 1,3M jui 17 08:48 RESTORED_FILES/pisc_pier.jpg
-rw-r–r– 1 sidcep sidcep 865K jui 17 08:48 RESTORED_FILES/portail.JPG
-rw-r–r– 1 sidcep sidcep 306K jui 17 08:48 RESTORED_FILES/portrait1.jpg
-rw-r–r– 1 sidcep sidcep  15K jui 17 08:48 RESTORED_FILES/portrait2.jpg
-rw-r–r– 1 sidcep sidcep 5,7K jui 17 08:48 RESTORED_FILES/portrait3.gif
-rw-r–r– 1 sidcep sidcep 6,8K jui 17 08:48 RESTORED_FILES/portrait3.jpg
-rw-r–r– 1 sidcep sidcep 338K jui 17 08:48 RESTORED_FILES/portrait.jpg
-rw-r–r– 1 sidcep sidcep 106K jui 17 08:48 RESTORED_FILES/roxy.jpg
-rw-r–r– 1 sidcep sidcep 2,1M jui 17 08:48 RESTORED_FILES/zugrib1.png
-rw-r–r– 1 sidcep sidcep 2,1M jui 17 08:48 RESTORED_FILES/zugrib2.png
-rw——- 1 sidcep sidcep 188K jui 17 08:48 RESTORED_FILES/zugrib_thumb.png

Et l’image jpg de 2,4Mo s’affiche sans problème. À noter donc que ext3grep fonctionne aussi sur les fichiers de plus de 48 ko et conserve les noms de fichiers originaux.

Ext3grep est bien plus puissant que ces deux exemples ne peuvent le laisser penser. Pour une vue plus détaillée de ses possibilités de récupération, voir ce howto de référence :
http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html

cep

p.s. ne pas croire pour autant que la récupération de fichiers soit réalisable à 100%. Parfois on a aussi en retour des :

Cannot find an undeleted inode for file xxx

Topics: Général, debian, linux |

Comments

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image