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 :
Se soit transformé en ceci:
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
Le secteur 0 est vide: Pas de signature, pas de code, pas de table de partitions
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 :
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
Le secteur 786432 ressemble à un début de MFT
Et visiblement, on retrouve le nom du volume
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!
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
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)
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 :
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)
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:
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.
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
Comments
- Anonymous
January 09, 2015
Il arrive que les structures qui décrivent les partitions sur les disques soient perdues ou corrompues