Ce post poursuit une série d’articles sur les mécanismes internes des outils de récupération de données actuels.
Dans l’article « Comment fonctionne la récupération de données », nous avons examiné comment les outils de récupération de fichiers peuvent récupérer des fichiers supprimés en utilisant le système de fichiers. Mais que se passe-t-il si le fichier a été supprimé il y a longtemps et que son enregistrement dans le système de fichiers n’existe plus ? Ou si le disque a été formaté ou repartitionné et que le système de fichiers est vide ou manquant ? Enfin, que se passe-t-il si le système de fichiers est écrasé par un autre système de fichiers (comme celui utilisé par Linux ou Ubuntu si vous avez expérimenté un système d’exploitation alternatif) ? Dans ce cas, les outils de récupération de fichiers traditionnels échoueront à récupérer quoi que ce soit.
Pour récupérer des informations dans de telles situations, les fabricants d’outils de récupération de données ont inventé un ensemble d’algorithmes dits de « carving » basés sur la recherche de signatures. Contrairement aux méthodes traditionnelles de récupération de fichiers qui s’appuient sur le système de fichiers, le data carving fonctionne en lisant la surface complète du disque dur (ou en scannant l’intégralité du contenu des supports basés sur la mémoire flash). Lors du balayage du disque, les algorithmes de data carving recherchent des signatures caractéristiques (d’où le nom « recherche de signatures ») identifiant des formats de fichiers connus. Cela est très similaire à la façon dont fonctionnent les outils antivirus, qui scannent les fichiers et recherchent des motifs de code pour identifier les virus.
Par exemple, les fichiers ZIP commencent normalement par « PK » suivi de données binaires dans un format prédéfini. En analysant ces données binaires, un algorithme de carving peut déterminer si ce « PK » signifie le début d’un fichier ZIP (si tous les chiffres correspondent), ou s’il s’agit simplement d’un « PK » tapé dans un document tel que celui-ci.
Si la signature est confirmée comme appartenant au fichier réel, l’algorithme commencera à analyser l’en-tête du fichier. En analysant l’en-tête du fichier, le programme de récupération de données peut calculer la longueur originale du fichier. En connaissant l’adresse initiale du fichier sur le disque et en connaissant la longueur de ce fichier, l’outil peut déterminer exactement quels secteurs sont utilisés par les données de ce fichier, les lire et réassembler le fichier original.
File carving : problèmes et défis
Ne voyez-vous pas un problème dans cette approche ? Il y en a en fait au moins deux. Premièrement, sans le système de fichiers, il n’y a aucun moyen de découvrir le nom original du fichier. Les fichiers récupérés sont enregistrés sous des noms tels que « image0001.jpg » ou « document012.jpg » au lieu d’avoir un nom approprié. L’autre problème concerne la fragmentation du disque. Si un fichier n’est pas stocké dans un bloc contigu (ce qui est typique pour les fichiers plus volumineux), le file carving sera incapable de récupérer le fichier complet.
Pour résoudre ce problème, les développeurs combinent les informations obtenues à partir du système de fichiers avec les données découvertes grâce à l’utilisation des algorithmes de file carving. Cette approche offre le meilleur des deux mondes : une récupération fiable avec les noms de fichiers et indépendamment du niveau de fragmentation du disque.