Nous étions en 2019 lorsqu'un disque dur QUANTUM FIREBALL Plus KA de 9,1 Go est arrivé dans notre laboratoire. Selon les dires de son propriétaire, la panne a eu lieu en 2004 à cause d'une alimentation défectueuse qui a également endommagé le disque dur et d'autres composants du PC. Le disque a ensuite été envoyé dans divers centres de service dans une tentative de réparation et de récupération des données, mais sans succÚs. Certains promettaient des prix bas sans résoudre le problÚme, d'autres étaient trop chers et le client a refusé de récupérer les données. En fin de compte, le disque a été manoeuvré à travers de nombreux centres de service. Il s'est perdu plusieurs fois, mais grùce à l'initiative du propriétaire, qui avait pris soin de noter les informations provenant des différentes étiquettes sur le disque, il a réussi à récupérer son disque dur de certains centres de service. Ces déplacements n'ont pas été sans conséquences ; la carte contrÎleur d'origine montre de multiples signes de soudure, et il y a également un manque d'éléments SMD (je dirai, pour anticiper, que c'est le moindre des soucis de ce disque).

Fig. 1 HDD Quantum Fireball Plus KA 9,1 Go
Tout d'abord, il a fallu chercher un jumeau ancien de ce disque dans une archive de donneurs avec une carte contrĂŽleur fonctionnelle. Une fois cette quĂȘte accomplie, il Ă©tait possible de procĂ©der Ă des diagnostics approfondis. AprĂšs avoir vĂ©rifiĂ© les bobinages du moteur pour dĂ©celer un court-circuit et en ayant confirmĂ© son absence, nous avons installĂ© la carte du disque donneur sur le disque patient. Nous alimentons, et entendons le bruit normal de rotation, ainsi que la rĂ©ussite du test de calibration avec le chargement du microprogramme, puis, aprĂšs quelques secondes, le disque fait Ă©tat de sa disponibilitĂ© Ă rĂ©pondre aux commandes de l'interface.
Fig. 2 Les indicateurs DRD DSC signalent la disponibilité pour recevoir des commandes.
Nous réservons toutes les copies des modules de microprogramme. Nous exécutons une vérification de l'intégrité des modules de microprogramme. Aucun problÚme n'est rencontré lors de la lecture des modules, mais l'analyse des rapports montre quelques anomalies.

Fig. 3. Tableau des zones.
Nous prĂȘtons attention au tableau de rĂ©partition des zones et remarquons que le nombre de cylindres est de 13845.

Fig. 4 P-list (liste principale â liste des dĂ©fauts enregistrĂ©s au cours du cycle de production).
Nous attirons votre attention sur le nombre trĂšs limitĂ© de dĂ©fauts et leur localisation. Nous examinons le module de journalisation des dĂ©fauts d'usine (60h) et dĂ©couvrons qu'il est vide et ne contient aucun enregistrement. Sur cette base, nous pouvons supposer que dans l'un des centres de service prĂ©cĂ©dents, des manipulations ont peut-ĂȘtre Ă©tĂ© effectuĂ©es dans la zone de service du disque, et par inadvertance ou intentionnellement, un module Ă©tranger a Ă©tĂ© enregistrĂ©, ou la liste des dĂ©fauts a Ă©tĂ© nettoyĂ©e dans l'original. Pour vĂ©rifier cette hypothĂšse, nous crĂ©ons une tĂąche dans Data Extractor avec les options « crĂ©ation d'une copie par secteur » et « crĂ©ation d'un traducteur virtuel » activĂ©es.

Fig. 5 ParamĂštres de la tĂąche.
AprÚs avoir créé la tùche, nous consultons les enregistrements dans le tableau des partitions au secteur zéro (LBA 0)

Fig. 6 Premier enregistrement de démarrage et tableau des partitions.
à l'offset 0x1BE se trouve un seul enregistrement (16 octets). Le type de systÚme de fichiers sur la partition est NTFS, l'offset au début est 0x3F (63) secteurs, la taille de la partition est 0x011309A3 (18 024 867) secteurs.
Dans l'éditeur de secteurs, nous ouvrons le LBA 63.

Fig. 7 Secteur de démarrage NTFS
D'aprÚs les informations contenues dans le secteur de démarrage NTFS de la partition, on peut dire ceci : la taille du secteur, acceptée dans le volume, est de 512 octets (à l'offset 0x0B est enregistré le mot 0x0200 (512)), le nombre de secteurs par cluster est de 8 (à l'offset 0x0D est enregistré l'octet 0x08), la taille du cluster est donc 512x8=4096 octets, le premier enregistrement MFT est situé à l'offset 6 291 519 secteurs depuis le début du disque (à l'offset 0x30, le mot quadruple 0x00 00 00 00 00 0C 00 00 (786 432) indique le numéro du premier cluster MFT. Le numéro de secteur est calculé selon la formule : Numéro de cluster * nombre de secteurs dans le cluster + offset au début de la partition 786 432* 8+63= 6 291 519).
Nous passons au secteur 6 291 519.

Fig. 8
Mais les données contenues dans ce secteur ne ressemblent en rien à un enregistrement MFT. Bien que cela indique une possible mauvaise traduction en raison d'une liste des défauts incorrecte, cela ne prouve pas ce fait. Pour une vérification plus approfondie, nous procéderons à la lecture du disque par tranches de 10 000 secteurs dans les deux sens par rapport au secteur 6 291 519. Ensuite, nous effectuerons une recherche par expressions réguliÚres dans les données lues.

Fig. 9 Premier enregistrement MFT
Dans le secteur 6 291 551, la premiÚre entrée MFT est détectée. Sa position par rapport à celle calculée diffÚre de 32 secteurs, suivie ensuite d'un groupe continu de 16 entrées (de 0 à 15). Nous allons inscrire dans le tableau des décalages la position du secteur 6 291 519 en la décalant de 32 secteurs vers l'avant.

Fig. 10
La position de l'enregistrement n° 16 devrait ĂȘtre au dĂ©calage 12 551 431, mais nous y trouvons des zĂ©ros au lieu de l'enregistrement MFT. Nous procĂ©derons Ă une recherche similaire dans les environs.

Fig. 11 Enregistrement MFT 0x00000011 (17)
Un large fragment MFT est détecté, commençant par l'enregistrement n° 17 d'une longueur de 53 646 enregistrements) avec un décalage de 17 secteurs. Pour la position 12 155 431, nous allons inscrire le décalage de +17 secteurs dans le tableau des décalages.
En dĂ©terminant la position des fragments MFT dans l'espace, nous pouvons conclure qu'il ne s'agit pas d'une panne alĂ©atoire et que l'enregistrement des fragments MFT par des dĂ©calages incorrects a eu lieu. L'hypothĂšse selon laquelle il y a un traducteur dĂ©fectueux peut ĂȘtre considĂ©rĂ©e comme confirmĂ©e.
Pour une localisation ultérieure des points de décalage, nous allons établir le décalage maximal possible. Pour ce faire, établissons combien le marqueur final de la partition NTFS est décalé (copie de secteur de démarrage). Dans la figure 7, au décalage 0x28, le mot quadruple est la valeur de la taille de la partition 0x00 00 00 00 01 13 09 A2 (18 024 866) secteurs. Ajoutons le décalage de la partition depuis le début du disque à sa longueur, nous obtenons le décalage du marqueur final NTFS 18 024 866 + 63= 18 024 929. Comme prévu, la copie du secteur de démarrage nécessaire n'était pas présente. Lors de la recherche dans les environs, elle a été trouvée avec un décalage croissant de +12 secteurs par rapport au dernier fragment MFT.

Fig. 12 Copie du secteur de démarrage NTFS
Nous ignorons une autre copie du secteur de démarrage au décalage 18 041 006, car elle n'a pas de rapport avec notre partition. Sur la base des événements précédents, il a été établi qu'à l'intérieur de la partition, il existe des inclusions de 61 secteurs « émergés » dans la traduction, qui ont écarté les données.
Nous effectuons une lecture complÚte du stockage, dont le résultat reste 34 secteurs non lus. Malheureusement, il est impossible de garantir de maniÚre fiable que tous sont des défauts supprimés de la P-list, mais lors d'une analyse ultérieure, il est conseillé de prendre en compte leur position, car dans certains cas, il sera possible de déterminer avec précision les points de décalage au niveau du secteur, et non du fichier.

Fig. 13 Statistiques de lecture du disque.
Notre prochaine tùche sera de déterminer les emplacements approximatifs des décalages (avec précision jusqu'au fichier dans lequel ils se sont produits). Pour cela, nous allons scanner toutes les entrées MFT et établir des chaßnes de localisation des fichiers (fragments de fichiers).

Fig. 14 ChaĂźnes de localisation des fichiers ou de leurs fragments.
Ensuite, en passant d'un fichier à l'autre, nous cherchons à quel moment, au lieu du titre de fichier attendu, d'autres données apparaßtront, et que le titre requis sera découvert avec un certain décalage positif. Au fur et à mesure que nous précisons les points de décalage, nous remplissons le tableau. Le résultat de ce remplissage sera plus de 99% de fichiers sans dommages.

Fig. 15 Liste des fichiers utilisateurs (publication de cette capture d'écran obtenue avec l'accord du client)
Pour Ă©tablir des dĂ©calages ponctuels dans des fichiers individuels, des travaux supplĂ©mentaires peuvent ĂȘtre rĂ©alisĂ©s et, connaissant la structure du fichier, on peut trouver des incrustations de donnĂ©es qui ne lui appartiennent pas. Mais dans cette tĂąche, cela n'Ă©tait pas Ă©conomiquement viable.
P.S. Je voudrais également m'adresser à mes collÚgues qui ont eu ce disque entre leurs mains auparavant. S'il vous plaßt, soyez attentifs lorsque vous travaillez avec le firmware des appareils et sauvegardez les données systÚme avant de modifier quoi que ce soit, et n'aggravez pas délibérément le problÚme si vous n'avez pas réussi à vous mettre d'accord avec le client pour effectuer des travaux.
Source : habr.com
