
Outil d'exploration, d'extraction, de réparation et de forensique des systèmes de fichiers FAT

Cet outil est conçu pour manipuler les systèmes de fichiers FAT, afin de les explorer, extraire, réparer, récupérer et en faire des analyses forensiques. Il prend actuellement en charge FAT12, FAT16 et FAT32.
Vous pouvez construire fatcat de cette manière :
mkdir build
cd build
cmake ..
make
Et ensuite l'installer :
make install
Fatcat prend une image en argument :
fatcat disk.img [options]
REMARQUE : selon votre compilation, vous devrez peut-être spécifier les options avant disk.img, soit
fatcat [options] disk.img
Vous pouvez spécifier un décalage dans le fichier avec -O, cela peut être utile s'il y a plusieurs partitions sur un périphérique bloc, par exemple :
fatcat disk.img -O 1048576 [options]
Cela indique à fatcat de commencer au 1048576e octet. Jetez un œil au tutoriel sur les partitions.
Vous pouvez explorer la partition FAT avec l'option -l comme ceci :
$ fatcat disk.img -l /
Listing path /
Cluster: 2
d 24/10/2013 12:06:00 some_directory/ c=4661
d 24/10/2013 12:06:02 other_directory/ c=4662
f 24/10/2013 12:06:40 picture.jpg c=4672 s=532480 (520K)
f 24/10/2013 12:06:06 hello.txt c=4671 s=13 (13B)
Vous pouvez aussi fournir un chemin comme -l /some/directory.
Avec -L, vous pouvez fournir un numéro de cluster au lieu d'un chemin, cela peut être utile parfois.
Si vous ajoutez -d, vous verrez aussi les fichiers supprimés.
Dans la liste, le préfixe est f ou d pour indiquer si la ligne concerne un fichier ou un répertoire.
Le c= indique le numéro du cluster, s= indique la taille en octets (qui devrait être la même que la taille lisible juste après).
La lettre h à la fin indique que le fichier est censé être caché.
La lettre d à la fin indique que le fichier a été supprimé.
Vous pouvez lire un fichier avec -r, le fichier sera écrit sur la sortie standard :
$ fatcat disk.img -r /hello.txt
Hello world!
$ fatcat disk.img -r /picture.jpg > save.jpg
Avec -R, vous pouvez fournir un numéro de cluster au lieu d'un chemin, mais l'information de taille du fichier sera perdue et le fichier sera arrondi au nombre de clusters qu'il occupe, sauf si vous fournissez l'option -s pour spécifier la taille du fichier à lire.
Vous pouvez utiliser -x pour extraire les répertoires du système de fichiers FAT dans un répertoire :
fatcat disk.img -x output/
Si vous voulez extraire à partir d'un certain cluster, fournissez-le avec -c.
Si vous fournissez -d pour l'extraction, les fichiers supprimés seront aussi extraits.
Comme expliqué ci-dessus, les fichiers supprimés peuvent être trouvés dans la liste en fournissant -d :
$ fatcat disk.img -l / -d
f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
Vous pouvez explorer et repérer un fichier ou un répertoire supprimé intéressant.
Pour récupérer un fichier supprimé, utilisez simplement -r pour le lire. Notez que le fichier produit sera lu de manière contiguë à partir du système FAT original et peut être corrompu.
Pour récupérer un répertoire supprimé, notez son numéro de cluster et extrayez-le comme ci-dessus :
# Si votre répertoire supprimé a le cluster 71829
fatcat disk.img -x output/ -c 71829
Voir aussi : tutoriel de restauration
En supposant que votre disque a des secteurs défectueux, vous voudrez peut-être effectuer une récupération dessus.
Le premier conseil est de faire une copie de vos données en utilisant ddrescue, et de sauvegarder votre disque sur un autre ou dans un fichier sain.
Lorsque des secteurs sont défectueux, leurs octets seront remplacés par des 0 dans l'image ddrescue.
Une première approche est d'essayer d'explorer votre image avec -l comme ci-dessus et d'utiliser -i pour savoir si fatcat reconnaît le disque comme un système FAT.
Ensuite, vous pouvez essayer de regarder -2 pour vérifier si les tables d'allocation de fichiers diffèrent, et si elles semblent fusionnables. Il est très probable qu'elles le soient, dans ce cas, vous pouvez essayer -m pour fusionner les tables FAT, n'oubliez pas de les sauvegarder avant (voir ci-dessous).
Lorsque votre système de fichiers est cassé, il y a des fichiers et des répertoires perdus que nous appelons « orphelins », car vous ne pouvez pas y accéder depuis le système normal.
fatcat vous offre une option pour trouver ces nœuds, il effectuera une analyse automatisée de votre système et explorera les secteurs alloués de votre système de fichiers, cela se fait avec -o.
Vous obtiendrez une liste de répertoires et de fichiers, comme ceci :
There is 2 orphaned elements:
Directory clusters 4592 to 4592: 2 elements, 49B
File clusters 4611 to 4611: ~512B
Vous pouvez ensuite utiliser directement -L et -R pour jeter un coup d'œil à ces fichiers et répertoires :
$ fatcat disk.img -L 4592
Listing cluster 4592
Cluster: 4592
d 23/10/2013 17:45:06 ./ c=4592
d 23/10/2013 17:45:06 ../ c=0
f 23/10/2013 17:45:22 poor_orphan.txt c=4601 s=49 (49B)
Notez que les fichiers orphelins ont une taille inconnue, ce qui signifie que si vous les lisez, vous obtiendrez un fichier d'une taille multiple de celle des clusters.
Voir aussi : tutoriel sur les fichiers orphelins
Vous pouvez utiliser fatcat pour pirater votre système de fichiers FAT
Le drapeau -i vous fournira beaucoup d'informations sur le système de fichiers :
fatcat disk.img -i
Cela vous donnera les données d'en-tête comme les tailles de secteurs, les emplacements des FAT, l'étiquette du disque, etc. Il lira également la table FAT pour estimer l'utilisation du disque.
Vous pouvez aussi obtenir des informations sur un cluster spécifique en utilisant -@ :
fatcat disk.img -@ 1384
Cela vous donnera l'adresse du cluster (décalage du cluster dans le système de fichiers) et la valeur du cluster suivant dans les deux tables FAT.
Vous pouvez utiliser -b pour sauvegarder vos tables FAT :
fatcat disk.img -b backup.fats
Et utiliser -p pour les réécrire :
fatcat disk.img -p backup.fats
Vous pouvez écrire dans les tables FAT avec -w et -v :
fatcat disk.img -w 123 -v 124
Cela écrira 124 comme valeur du cluster suivant de 123.
Vous pouvez aussi choisir la table avec -t, 0 correspond aux deux tables, 1 à la première et 2 à la seconde.
Vous pouvez consulter la différence entre les deux FAT en utilisant -2 :
# Observation de la différence
$ fatcat disk.img -2
Comparing the FATs
FATs are exactly equals
# Écriture de 123 dans le 500e cluster uniquement dans FAT1
$ fatcat disk.img -w 500 -v 123 -t 1
Writing next cluster of 500 from 0 to 123
Writing on FAT1
# Observation de la différence
$ fatcat disk.img -2
Comparing the FATs
[000001f4] 1:0000007b 2:00000000
FATs differs
It seems mergeable
Vous pouvez fusionner deux FAT en utilisant -m. Pour chaque entrée différente dans la table, si l'une est zéro et l'autre non, la valeur non nulle sera choisie :
$ fatcat disk.img -m
Begining the merge...
Merging cluster 500
Merge complete, 1 clusters merged
Voir aussi : tutoriel de réparation des FAT
Fatcat peut réparer les répertoires ayant un chaînage FAT cassé.
Pour ce faire, utilisez -f. Tout l'arbre du système de fichiers sera parcouru et les répertoires qui ne sont pas alloués dans la FAT mais que fatcat peut lire seront corrigés dans la FAT.
Vous pouvez obtenir des informations sur une entrée avec -e :
fatcat disk.img -e /hello.txt
Cela affichera l'adresse de l'entrée (pas le fichier lui-même), la référence du cluster et la taille du fichier (s'il ne s'agit pas d'un répertoire).
Vous pouvez ajouter le drapeau -c [cluster] pour changer le cluster de l'entrée et le drapeau -s [taille] pour changer la taille de l'entrée.
Voir aussi : tutoriel amusant avec FAT
Vous pouvez utiliser -k pour rechercher une référence de cluster.
Vous pouvez effacer les données des secteurs non alloués, avec des zéros en utilisant -z, ou en utilisant des données aléatoires avec -S.
Par exemple, les fichiers supprimés deviendront alors illisibles.
Ceci est sous licence MIT.