Récupération de partitions VI - Un peu plus loin dans la détection des partitions

Supposons maintenant que ce disque qui contient ces 3 partitions :

clip_image002

Se soit transformé en ceci:

clip_image004

Ce sont des choses qui arrivent quand le MBR (secteur 0 du disque) a été vidé.

Rappelons la structure d’un disque contenant 3 partitions et essayons de voir ce qu’on a concrètement sur le disque

clip_image006

Le secteur 0 est vide: Pas de signature, pas de code, pas de table de partitions

clip_image008

Sur des disques MBR Basiques c’est au secteur 2048 que démarre la première partition (sur les anciennes architectures, on aurait cherché au secteur 63 voire 31 mais ça nous ramené à NT4.0)

Le secteur 2048 nous montre ceci :

clip_image010

Et nous pouvons y lire ces informations :

  • OEM ID (offset 30) : NTFS
  • Bytes per Sector (offset 0B) : 00 02 -> 512
  • Sectors per cluster (offset 0D) : 08
  • Cluster per MFT Record (offset 40) : F6 -> 1K
  • Total Sectors (offset 28) : FF 67 C5 09 00 00 00 00 -> 163932159 sectors (~78GB
    • Backup NTFS Boot Sector = 163932159 + 2048 = 163934207
  • Clusters to MFT (offset 30) : 00 00 0C 00 00 00 00 00 -> 78643
    • La partition démarrant en 2048 : on trouvera la MFT en 2048 + 8 * 786432 = 629350
  • Clusters to MFTMirr (offset 38) : 02 00 00 00 00 00 00 00 -> 2
    • 2048 + 8 * 2 = 2064

Pour résumer :

  • Le dernier secteur de la partition devrait se trouver en 163934207
  • La MFT en 786432 (et son "backup" en 2064
  • Le champ $Volume en 6293510 ( = 6293504 + 2*3)

Le NTFS Boot Sector de backup en 163934207

clip_image012

Le secteur 786432 ressemble à un début de MFT

clip_image014

Et visiblement, on retrouve le nom du volume

clip_image016

Nous savons désormais que notre première partition démarre au secteur 2048 et finit au secteur 163934207

Comme tout est aligné, la seconde partition devrait démarrer au secteur 163934207 + 1 = 163934208

Fantastique!

clip_image018

On peut également y lire:

  • OEMID (offset 30) : NTFS
  • Bytes per Sector (offset 0B) : 00 02 -> 512
  • Sectors per cluster (offset 0D) : 08
  • Cluster per MFT Record (offset 40) : F6 -> 1 record MFT = 1K
  • Total Sectors (offset 28) : FF 7F A9 03 00 00 00 00 : 61439999 sectors (~29 GB)
    • Backup NTFS Boot Sector : 61439999 + 163934208 = 225374207
  • Clusters to MFT (offset 30) : 00 00 0C 00 00 00 00 00 : 786432 -> 163934208 + 8 * 786432 = 170225664
  • Clusters to MFTMirr (offset 38) : 02 00 00 00 00 00 00 00 : 2 -> 163934208 + 8 * 2 = 163934224

De même, la 3ième partition sensé démarrer un secteur plus loin y est bien présente :

225374207 + 1 = 225374208

clip_image020

Total sectors: 0270FFFF = 40959999 = 40959999 *512 = 20971519488 Bytes

Backup Boot Sector : 40959999 + 225374208 = 266334207

Il faudra faire un contrôle complet de chaque secteur important (NTFS / Backup NTFS / MFTMirr / MFT / MFT.$Volume) et on peut dresser cette carte du disque :

  • Première Partition :
    • Nom du volume Part1
    • Taille en secteurs: 163932159
    • Démarre au secteur: 2048
    • MFT localisée au secteur: 6293504
    • Termine au secteur: 16393420
  • Deuxième Partition :
    • Nom du volume: Part2
    • Taille en secteurs: 61439999
    • Démarre au secteur: 163934208
    • MFT localisée au secteur: 170225664
    • Termine au secteur: 225374207
  • Troisième Partition :
    • Nom du volume: Part3
    • Taille en secteurs: 40959999
    • Démarre au secteur: 225374208
    • MFT localisée au secteur: 231665664
    • Termine au secteur: 266334207

Il est très important de tout bien verifier: Si vous faites une erreur d’un secteur et que votre partition ne trouve pas sa MFT, notre  vieil ami chkdsk se fera un plaisir d’un générer automatiquement une toute nouvelle MFT, tout vide, juste pour vous. 

Et nous pouvons démarrer notre réparation

Première étape: Initialiser le disque (le code, la signature et une table de partition vide seront écrites)

clip_image022

Maintenant, il nous faut reprendre notre éditeur hexa préféré, le mien s’appelle DskProbe.exe car il permet d’appliquer un masque au données affichés par les secteurs.

(Pour information ce lien https://fr.wikipedia.org/wiki/%C3%89diteur_hexad%C3%A9cimalpropose une liste de produits)

Le secteur 0 que nous venons de réécrire (par initialisation) ressemble désormais à cela :

clip_image024

Avec DskProbe, nous pouvons faire paraitre la table de partition de ce secteur.

Les valeurs de début et fin de Head (=Side), Secteur et Cylindre dépendent de l’architecture, mais sont souvent les mêmes et voici celle qui convient de mettre pour la première partition de notre disque.

(Si vous avez plusieurs disques identiques sur votre ordinateur, ou un autre ordinateur avec le même disque qui n’a pas eu de soucis, vous pouvez récupérer les mêmes données)

clip_image026

Note : Il faut ajouter un secteur au Total Sectors du MBR par rapport au Total Sectors du NTFS Boot Sector puisqu’à cet endroit il faut compter les deux NTFS Boot Sector qui encadrent la partition, alors que dans le NTFS Boot Sector, on ne compte pas le dernier.

En récrivant « 07 » à l’offset du FileSystem de la première entrée de la table de partition.

Un rescan disk dans le Disk Manager nous fait reparaitre la partition comme par miracle:

clip_image028

On peut faire reparaitre les deux autres partitions en remplissant mes Start/End Side/Sector/Cylinder comme suit, et en adaptant les Relative et Total Sectors aux données relevées et en plaçant le type de système à NTFS (07) aux offset 01C2, 01D2, 01E2, 01F2 correspondant aux partitions respectives.

clip_image030

clip_image032

Si une des partitions par en chdksk, pas de chances : Soit vous vous êtes trompés dans vos calculs, soit la MFT avait besoin d’une réparation avant vos opérations.

Comme expliqué au premier article, toutes ces opérations sont des opérations de dernier recours, et ne garantissent aucunement la récupération de vos données.

Dans la prochaine série, nous nous intéressons aux disques GPT.

Serge Gourraud
55 AA