IMPORTANT: Si vos données sont réellement importantes ou précieuses, ne tentez rien vous-même! Eteignez l'ordinateur et surtout ne le rallumez plus, puis contactez des professionnels du genre d'Ibas: vous pouvez en trouver en cherchant "récupération de données" ou "data recovery" dans Google.

Dans le cas contraire, le recours à de tels professionnels étant très coûteux (compter environ 150 ¤ de l'heure) pour un particulier, nous pouvons essayer de nous débrouiller sans eux... Cette page a pour but de donner quelques conseils et pistes pour récupérer vous-même des données, mais ne donne pas une solution miracle prête à appliquer (Attention: les manipulations décrites doivent être adaptées au cas par cas et peuvent être dangereuses pour vos données. L'auteur ne pourra en aucun cas être tenu pour responsable des nuisances pouvant résulter des dites manipulations).

Bien entendu, les susdits professionnels, de même que les services secrets par exemple, disposent d'un matériel autrement plus sophistiqué que l'utilisateur lambda et ainsi, en utilisant par exemple un microscope à effet tunnel, il serait possible de récupérer des données même si d'autres données ont été réécrites par dessus (jusqu'à sept couches de données!). Pour plus d'information sur le sujet, vous pouvez consulter l'article désormais classique de Peter Gutmann intitulé "Secure Deletion of Data from Magnetic and Solid-State Memory" disponible sur sa page web.
De même l'utilisation de salles blanches, d'une propreté à faire pâlir un chirurgien, leur permet d'ouvrir un disque dur pour récupérer ses données, ce qui est fort utile lorque celui-ci a un problème mécanique.

Néanmoins, avec les "moyens du bord", il est généralement possible d'obtenir des résultats intéressants pour peu que l'on sache ce que l'on cherche. Nous avons ainsi pu récupérer des fichiers intacts sur un disque qui avait pourtant été repartitionné, reformaté, et partiellement recouvert avec de nouvelles données...

Hardware & Software requis

Il vous faut une machine Linux (différente de celle où se trouvent les données) sur laquelle vous pourrez monter (au sens physique) le disque dur à analyser, possédant beaucoup d'espace disque (typiquement plusieurs fois la taille du disque contenant les données).

Sur le plan logiciel, outre Linux que nous supposerons installé avec des outils de développement (C et Perl notamment), voici quelques programmes qui pourront vous être utiles:

Le domaine étant très vaste, nous n'étudierons pas, bien sûr, tous les cas ici, mais uniquement l'un des plus épineux, celui où le système ne peut plus reconnaitre les partitions du disque (MBR endommagé), étant donné que les autres cas sont généralement moins problématiques (les utilisateurs de Windows peuvent utiliser des outils comme les Norton Utilities. Sur un système Unix, Autopsy permet de faire des miracles facilement).

Création d'une image de travail du disque (copie physique)

Comme avec les outils utilisés il est tout à fait possible qu'une faute de frappe provoque une catatrophe, IL NE FAUT JAMAIS TRAVAILLER DIRECTEMENT SUR LE DISQUE QUI CONTIENT LES DONNEES mais sur une copie (à moins de ne pas avoir le choix...). Comme la catastrophe en question peut également affecter les autres disques, vous ne devriez pas non plus utiliser une machine contenant des données non sauvegardées.
Il est également prudent de toujours garder une trace de ce que vous faites. Pour ce faire, nous rappelons l'existence de l'utilitaire 'script' qui permet d'enregistrer un terminal dans un fichier.

La copie physique du disque se fait avec l'utilitaire dd:
# dd if=disque of=image
où 'disque' est le périphérique désignant le disque sur lequel vous voulez récupérer des données, par exemple /dev/hdd, et 'image' le nom du fichier qui contiendra cette copie.

Dans le cas où il y a des partitions qui ont encore une structure logique sur votre [image] disque et dont vous connaissez l'emplacement, vous pouvez à partir de cette image créer une image de la partition, qui pourra alors être, si nécessaire, montée via le "loopback device" (pour plus de détails, en particulier si à l'évocation de 'loopback device' vous vous demandez ce qu'une pseudo-interface réseau vient faire dans cette histoire, faites un 'man losetup'). Si votre disque a encore une table des partitions ou si vous avez réussi à restaurer celle-ci, vous pouvez utiliser 'fdisk' ou 'sfdisk' pour connaître les emplacements en question; il faut alors copier l'image du disque entre ce qui correspond au secteur de début de la partition et son secteur de fin. Voici un exemple où l'on crée une copie de la première partition d'un disque:
# sfdisk -l -V -uS -i disque.img
Disque disque.img : impossible d'obtenir la taille
Disque disque.img : impossible d'obtenir la géométrie

Disque disque.img : 0 cylindres, 0 têtes, 0 secteurs/piste
Avertissement : La première partition semble avoir été créée
pour C/T/S=*/255/63 (au lieu de 0/0/0).
Cette liste est basée sur cette géométrie.
Unités = secteurs de 512 octets, à partir de 1

Périphérique Amorce Début Fin Nb secteurs Id Système
disque.img1 * 64 20482875 20482812 c Win95 FAT32 (LBA)
disque.img2 20482876 36869175 16386300 1c Win95 FAT32 caché (LBA)
début : (c,t,s) (1023,254,63) attendus (1023,0,1) trouvés
disque.img3 36869176 80405325 43536150 f Win95 Etdue (LBA)
début : (c,t,s) (1023,254,63) attendus (1023,0,1) trouvés
disque.img4 1 - 0 0 Vide
disque.img5 36869239 80405325 43536087 b Win95 FAT32
début : (c,t,s) (1023,254,63) attendus (1023,1,1) trouvés
Avertissement : la partition 1 va au delà de la fin du disque.
# dd if=disque.img of=part1.img bs=512 skip=63 count=20482812
20482812+0 enregistrements lus.
20482812+0 enregistrements écrits.
Consultez les pages man de dd et sfdisk pour plus de détails sur les paramètres utilisés.

Tentatives de restauration du MBR et des secteurs de boot des partitions

Lorsque le MBR (Master Boot Record), c'est à dire le premier secteur d'un disque dur, celui qui contient la table des partitions, est détruit il est impossible d'accéder aux partitions, ce qui signifie que, dans le cas d'un disque où est installé le système d'exploitation, l'ordinateur ne peut plus démarrer et, pour la plupart des gens, que toutes les données sont perdues. C'est pourquoi un certain nombre de virus prennent ce secteur pour cible. Néanmoins, si vous connaissez le positionnement exact de celles-ci (par exemple si vous aviez noté les secteurs de début et de fin de chacune lors du partitionnement du disque), vous pouvez alors, comme indiqué précédemment, faire des fichiers images que vous pourrez monter via le loopback device et vous pourrez alors récupérer vos données.

Pour empêcher cela, il arrive fréquemment que des virus écrasent également les secteurs de boot des partitions (le premier secteur de chaque partition). Dans ce cas, il faut savoir qu'il est fréquent de trouver éparpillées sur un disque des sauvegardes des dits secteurs de boot ainsi que du MBR, ces sauvegardes pouvant être faites par le système de fichiers, par le système d'exploitation ou par des utilitaires systèmes. Si vous parvenez à identifier les endroits où se trouvent ces copies vous pourrez alors restaurer les secteurs de boot des partitions et le MBR, qui sont souvent, dans le cas d'attaque virale, les seuls endommagés (Note: lorsque nous parlons d'attaque virale, nous faisons implicitement référence aux systèmes d'exploitation de Microsoft, les autres y étant peu sensibles. Autrement dit, cette technique a peu de chance de marcher si le disque endommagé n'est pas celui d'une machine Windows (TM)...).
"Comment retrouver ces sauvegardes?" me demanderez-vous. Eh bien pour cela il faut une certaine connaissance du type de partition que vous recherchez. Par exemple, le secteur de boot d'une partition FAT32 de Windows 98, après 3 octets qui ne nous intéressent pas ici (ils sont importants, mais ne sont guère utiles pour la recherche des sauvegardes) contient la chaine "MSWIN4.1". Vous pouvez donc rechercher cette chaîne avec, par exemple LDE, sachant qu'un tel secteur de boot se termine par les deux octets AA55h, ce qui est d'ailleurs aussi le cas du MBR. Une sauvegarde du MBR, si elle existe, a un certain nombre de chances de se trouver près de celle des secteurs de boot des partitions... Regardez donc à côté si vous trouvez une telle sauvegarde! Pour l'identifier, il est en général possible de reconnaître les 128 octets isolés près de la fin qui constituent la fameuse table des partitions. Je vous conseille, avant de vous lancer dans cette recherche, de voir ce que vous pourrez trouver sur le type de partition qui vous intéresse et sur les MBR dans votre moteur de recherche favori.
Une méthode alternative est d'utiliser gpart pour essayer de retrouver l'emplacement des partitions.

Si les tentatives de restauration de l'intégrité des systèmes de fichiers ont échoué...

Si les tentatives de restauration des secteurs de boot ont échoué, la plupart des outils existants ne fonctionneront pas. Toutefois, tout n'est pas perdu, loin de là. Les choses se compliquent juste un peu. Il est néanmoins possible de récupérer des fichiers avec l'outil Lazarus des TCTs. Vous pouvez également écrire vos propres programmes qui rechercheront sur le disque des fichiers en se basant sur des critères propres au type de données qui vous intéresse. On remarquera au passage l'avantage des formats dont les spécifications sont publiques... Il est de loin plus difficile de chercher quelque chose si vous ne savez pas à quoi il ressemble. Pour reconnaître un type de fichier donné, il n'est généralement pas nécessaire de faire des tests très poussés. Lancé sur une image disque, le script Perl searchjpg-0.1.tar.bz2, s'il est loin d'être un modèle de belle programmation (ce serait plutôt du code spaghetti écrit à la manière 'Quick and Dirty'), nous a permis de retrouver un grand nombre d'images au format JPEG. Ce script ne fait pourtant de tests que sur les quelques octets qui doivent délimiter une image. Notez au passage, si vous désirez l'utiliser, qu'il peut être nécessaire de recompiler Perl avec la prise en charge des fichiers volumineux (cela peut également être nécessaire avec les autres outils sus-mentionnés). Si vous devez écrire vos propres programmes, pour un format de données spécifique, outre une recherche sur le web sur le format en question, il peut être intéressant de voir comment l'outil 'file' arrive à reconnaître le type d'un fichier; vous pouvez donc consulter les pages man file(1) et magic(5).

Conclusion: le problème inverse

Si vous avez de la patience et du temps à y consacrer, vous avez de bonnes chances de finalement récupérer, au moins partiellement, vos données. Précisons néanmoins qu'il y a toujours un facteur 'aléatoire' qui influe. On peut également "aider la chance" en observant, avant de perdre ses données, une certaine "hygiène", par exemple, pour un utilisateur de partition FAT, en défragmentant régulièrement son disque. Comme d'habitude, les partitions Unix ne sont pas touchées par ce problème ;-) Je ne sais pas s'il se pose encore avec les partitions NTFS. Il est en effet beaucoup plus difficile de récupérer des fichiers s'ils sont éparpillés en petit morceaux sur tout le disque!

J'espère que ces quelques pistes vous auront été utiles. Pour finir je voudrais faire remarquer la difficulté qu'il y a à faire disparaître réellement des données. La plupart des gens pensent que quand ils cliquent sur "supprimer" ou sur "vider la corbeille", les données ont totalement disparu. L'apparition de logiciels commerciaux et grand public de récupération de données commence à faire reculer cette idée fausse. Plus de gens encore croient que le formatage d'un disque le réinitialise totalement, empêchant la récupération de toute donnée. Là encore, c'est généralement faux. Si vous voulez empêcher quelqu'un de lire vos données, la seule solution est sans doute de réécrire par dessus. Plusieurs fois. Avec des octets aléatoires.
Et encore! Etes-vous bien certain d'avoir recouvert de la sorte tous les endroits où se sont trouvées vos données? Avez-vous pensé aux fichiers temporaires créés par la plupart des logiciels? Le problème inverse de la récupération de données, celui de l'effacement sécurisé, est sans doute tout aussi complexe. Si vous avez des données dont vous voulez réellement vous débarrasser, le livre de Tolkien, Le seigneur des anneaux vous donne la solution... Jetez donc votre disque dur dans le cratère empli de lave d'un volcan en éruption! ;-)