Hacking

fatcat

FAT: réparez vos fichiers!

0

Chose qui nous est tous déjà arrivée, un disque dur qui crash et qui devient plus ou moins inutilisable. Dans ces cas là, il peut être intéressant d’aller jeter un œil au système de fichier lui-même, éventuellement endommagé et corrompu, qui peut nous permettre d’en apprendre d’avantage sur les données perdues.

C’est pourquoi, il y a peu de temps, je me suis intéressé au FAT32, ayant sous la main un disque de 250Go abîmé sur lequel faire mes tests. J’ai été amené à développer un outil, fatcat, outil qui permet de manipuler des systèmes de fichiers FAT.

Que faire en cas de disque FAT32 endommagé? C’est la question à laquelle je vais essayer de répondre.

1) Sauvez tout!

Première étape, et pas des moindres, il est très important de sauver le disque ailleurs. Certains secteurs étant physiquement inutilisable, le disque ne sera pas réparable sans une copie au préalable. Vous pouvez effectuer cette copie soit vers un disque dur neuf, soit vers un fichier de la machine de rescue.

Pour cela, je vous propose d’utiliser l’utilitaire ddrescue:

$ ddrescue /dev/sdb disk.img rescue.log

Cet outil fera une copie des données de votre disque. Lorsqu’il rencontre des erreurs, en tombant par exemple sur un secteur défectueux, il écrira des 0 dans le fichier cible.

Cette opération peut prendre du temps, surtout lorsque le nombre de secteurs inaccessibles est grand. Dans mon cas, j’ai laissé tourner une bonne nuit avant d’avoir une image complète.

Si vous voulez juste tester, ou vous entraîner, n’hésitez pas à tester l’image de démo « repair.img » que j’ai construite exprès pour le proof-of-concept.

Dans un premier temps, vous pouvez commencer par examiner les données de votre disque en le montant:

mkdir disk
mount disk.img disk/
cd disk
ls -lAh

Et essayer de voir ce qui est sauvé, ce qui manque etc.

Dans les étapes qui suivent, nous allons modifier les tables d’allocation, vous pouvez sauvegarder la table actuelle à l’aide de fatcat:

# Sauvegarde les tables FATs dans un fichier (save.fat)
$ fatcat disk.img -b save.fat
# Restaure les tables FATs depuis un fichier (save.fat)
$ fatcat disk.img -p save.fat

2) Comparez les FATs

FAT signifie « File Allocation Table ». En quelque mots, ce système de fichiers comporte une table d’allocation qui décrit comment les données sont stockées et agencées sur le reste du disque. Dans le cas d’un disque de 250Go, la table FAT pèse environ 60Mo. Si votre disque est physiquement endommagé, il est fortement probable que cette table FAT le soit également. Pour des raisons de sécurité, elle est écrite deux fois sur le disque, vous avez à l’aide de fatcat la possibilité de les comparer:

# Affiche une comparaison des tables FATs
$ fatcat disk.img -2

Cette commande vous montrera la différence entre les deux tables FATs. Sur le disque d’exemple repair.img, vous devriez voir le secteur 0x20 (32) qui est à 0 sur la première table et pas sur l’autre, cela correspond en fait au cluster du dossier fat1_broken à la racine de l’image.

Par la suite, il peut être intéressant de fusionner ces deux tables. Pour cela, fatcat effectue une différence entre les deux puis choisira à chaque fois celle qui fournit le plus d’informations:

# Fusionne les tables FAT en gardant les données allouées
$ fatcat disk.img -m

N’hésitez pas à lire le tutoriel de réparation des tables FATs pour plus d’informations.

3) Réparez les dossiers non alloués

Désormais, nos deux tables sont égales, cependant, il arrive que des dossiers ne soient pas épargnés et soient effacés des deux tables simultanément. Cependant, fatcat arrivera encore à les lire. Si par exemple, le dossier racine (/) dit qu’il existe un dossier sur le cluster 22 et que ce dernier n’est pas marqué comme alloué dans la table d’allocation, fatcat tentera de lire les entrées et de déterminer sa taille, si il y parvient, il essaiera alors de réallouer le dossier dans la table. C’est le cas du dossier unallocated dans l’image d’exemple.

Pour faire cela, vous pouvez utiliser:

# Répare automatiquement les dossiers et fichiers non alloués que
# fatcat arrive à lire
$ fatcat disk.img -f

4) A la recherche des orphelins

Si votre disque est corrompu, il est parfaitement possible que certains dossiers soient devenus orphelins. Cela signifie qu’ils ne sont plus accessible parce que leurs parents ont par exemple été détruits. Si la référence vers un dossier est brisée, ce dernier restera alloué dans la table FAT mais ne sera plus atteignable à partir de l’arborescence du disque. fatcat dispose d’une option permettant d’explorer les zones allouées mais plus atteignable de votre disque et tentera d’en dégager les dossiers et fichiers:

# Lance la recherche des fichiers et dossiers orphelins
$ fatcat disk.img -o
(...)

There is 1 orphaned elements:
* Directory clusters 33 to 33: 2 elements, 30B

Estimation of orphan files total sizes: 30 (30B)

Listing of found elements with known entry:
In directory with cluster 33:
f 27/10/2013 16:32:54  orphan_file.txt                c=51 s=30 (30B)

Dans cet exemple, fatcat a trouvé un dossier contenant un fichier orphelins. Ce dossier est inatteignable à partir de l’arborescence, il n’a donc pas de nom. Cependant, la liste de ses entrées est accessible, vous pouvez y acceder à l’aide de -L, qui sert à lister les entrées d’un répertoire à partir de son numéro de cluster:

# Liste les entrées du répertoire du cluster 33
$ fatcat disk.img -L 33
Listing cluster 33
Directory cluster: 33
d 27/10/2013 16:32:26  ./                             c=33
d 27/10/2013 16:32:26  ../                            c=0
f 27/10/2013 16:32:54  orphan_file.txt                c=51 s=30 (30B)

Il est également possible de lire le fichier, à l’aide de -R et -s qui permettent de lire un fichier à partir de son numéro de cluster et de sa taille:

# Lis le fichier du cluster 51 et de 30 octets
$ fatcat disk.img -R 51 -s 30
This file is a poor orphaned!

Il est aussi possible d’extraire les fichiers du dossier ainsi retrouvé à l’aide de -x et -c:

# Extrait le dossier du cluster 33 dans le répertoire output/
$ mkdir output/
$ fatcat disk.img -x output/ -c 33
Extracting /orphan_file.txt to output//orphan_file.txt

Pour plus d’informations, consultez le tutoriel des fichiers et dossiers orphelins.

Liens:

devant

Debian sur la tablette ICOO D50 lite (A13, 50€)

1

Suite à mon précédent article, ou j’expliquais les péripéties pour installer Debian sur une tablette tactile, un des visiteurs, Ludo, m’a contacté afin que l’on s’entre-aide pour réussir à le faire fonctionner sur un autre modèle, la ICOO D50 lite.

Cette tablette coûte une cinquantaine d’euro et peut être trouvée sur DealExtreme :

On peut également observer à l’intérieur (merci à Ludo pour les photos) :

Elle intègre également le AllWinner A13, comme sur mon modèle, et comporte également un écran de 7″ (800×480), mais la carte WiFi est différente (RTL8188CUS) ainsi que le contrôle du tactile (GT811).

Après de nombreux tests nous avons fini par faire fonctionner un noyau Linux correct, avec le support du wifi et du tactile en natif ! Ce résultat ouvre donc plus de portes pour un prix plus bas.

Je n’ai pas (encore) pu tester l’image mais j’éspère le faire un jour

Téléchargements & liens

Merci à Ludo pour les échanges de mail et l’image !

tablet-a13

Debian sur une tablette tactile à 60€

20

Il y a peu de temps, je me suis rendu compte que les prix des tablettes low-cost avaient réellement atteint des niveaux très intéressants, frôlant parfois une cinquantaine d’euros.

Il existe aujourd’hui beaucoup de matériel peu coûteux permettant d’exécuter un système d’exploitation, de disposer de réseau ethernet ou wifi, voire de brancher un écran. Je citerai notamment la Raspberry Pi, les sticks Androïd tels que le MK802, mais aussi les BeagleBoards par exemple.

Mais en comparaison, même si ces solutions deviennent de plus en plus accessibles (et coûteront sans doute une bouchée de pain d’ici quelques années), une tablette tactile comporte plus de choses, à commencer par un écran tactile capacitif et une batterie.

C’est pourquoi j’ai décidé de m’acheter un de ces jouets low-cost afin d’en étudier les possibilités, et je n’ai pas été déçu ! Voici une vidéo du résultat, ci-dessous je vous explique comment j’y suis parvenu et comment vous pouvez faire la même chose

(more…)

Haut de page