Récupération de disques VII : Structures des disques GPT Basic
Maintenant que les disques basiques MBR (partitions primaires et étendues) n’ont plus de secrets pour nous, nous allons nous intéresser au disques basiques GPT.
Reprenons le schéma qui décrit la structure d’un disque basique GPT et essayons de voir à quoi cela ressemble concrètement.
Commençons par le secteur 0:
Remarques:
- Il n’y a plus de signature. Nous n’en avons plus besoin car nous identifions désormais le disque par GUID, et cette information sera stockée ailleurs.
- Il n’y a qu’une seule entrée dans la table de partition, et ses propriétés sont telles que tout le disque est occupé.
Partition table entry |
|
Start head : 0 |
End head : FF (255) |
Start sector : 2 |
End Sector : 3F (63) |
Start Cylinder : 0 |
End Cylinder : 3FF (1023) |
Relative Sector : 1 |
Total Sectors : FFFFFFFF (4294967295) |
Partition Type : EE (GPT) |
Le MBR est dit “protecteur” car il contient une partition qui couvre tout le disque (Relative Sector 1 / Total Sectors FFFFFFFF), et aussi car nous avons des secteurs importants
Voici ce à quoi ressemble le secteur 1 :
Ce secteur est le GPT Header et contient ces informations :
Partition |
Offset |
Size |
Sample value |
Meaning |
Sector Signature |
0 |
8 bytes |
"EFI PART" |
|
Version |
8 |
4 bytes |
00 00 01 00 |
0.1 |
Header size |
C |
4 bytes |
5C 00 00 00 |
5C |
CRC32 of the header |
10 |
4 bytes |
0D 2C 34 EA |
3929287693 |
Reserved |
14 |
4 bytes |
0 |
0 |
Current GPT Header Address |
18 |
8 bytes |
01 00 00 00 00 00 00 00 |
1 |
Backup GPT Header Address |
20 |
8 bytes |
FF FF DF 0F 00 00 00 00 |
266338303 |
First usable LBA |
28 |
8 bytes |
22 00 00 00 00 00 00 00 |
34 |
Last usable LBA |
30 |
8 bytes |
DE FF DF 0F 00 00 00 00 |
266338270 |
Disk GUID |
38 |
16 bytes |
85 A1 7E 9C 2D 05 3B 4A AC DD D1 FF 8F 7B 22 4A |
9C7EA185-052D-4A3B-ACDD-D1FF8F7B224A |
Partition Table Address |
48 |
8 bytes |
02 00 00 00 00 00 00 00 |
2 |
Partition Count |
50 |
4 bytes |
80 00 00 00 |
128 |
Partition Table Entry Size |
54 |
4 bytes |
80 00 00 00 |
128 |
CRC32 of partition table |
58 |
4 bytes |
3E C0 26 26 |
640073790 |
Toutes les données sont importantes, mais celles qui nous intéressent pour faire des réparations sont :
- La signature ("EFI PART") : Pour reconnaitre le secteur (nous n’avons plus de 55 AA)
- Les CRC32 : Ceux-ci sont importants car ils permettent au système de vérifier que quelqu’un n’a pas modifié des entrées dans ses tables à la main, en by-passant le système.
- L’adresse courante du header (1) et l’adresse du GPT Header alternatif (266338303)
- Le début de la table de partition (2) et le nombre de partition qu’elle peut contenir (128)
- Les 1ers et derniers secteurs utilisables (en général le dernier +1 contient le début de la table de partitions
- Un GUID qui représente le disque (sa signature)
Cette structure est décrite sur https://msdn.microsoft.com/en-us/library/windows/desktop/aa365449(v=vs.85).aspx
Regardons le secteur 2 : Début de la table de partition.
Il faut y voir 4 régions de 128 bytes chacune : Une entrée dans la table de partition fait 128 bytes
Dans le cas présent, les 2 premières entrées sont occupées et les autres sont vides
Première entrée
Partition Table Entry |
Offset |
Size |
Sample value |
Meaning |
Partition Type |
0 |
16 bytes |
16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE |
E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
Partition GUID |
10 |
16 bytes |
7C C6 D3 BB F9 D2 5F 42 9F 2C 7D CF 1F 1D 8B E5 |
BBD3C67C-D2F9-425F-9F2C-7DCF1F1D8BE5 |
Starting LBA |
20 |
8 bytes |
22 00 00 00 00 00 00 00 |
34 |
Ending LBA |
28 |
8 bytes |
21 00 04 00 00 00 00 00 |
262177 |
Attribute flags |
30 |
8 bytes |
00 00 00 00 00 00 00 00 |
0 |
Partition Name |
38 |
72 bytes |
… too long… |
Microsoft Reserved Partition |
Seconde entrée
Partition Table Entry |
Offset |
Size |
Sample value |
Meaning |
Partition Type |
80+0 |
16 bytes |
A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7 |
EBD0A0A2-B9E5-4433-47C0-68B6B72699C7 |
Partition GUID |
80+10 |
16 bytes |
BE 9C FD 21 F3 E8 40 49 8C C2 57 30 0A A8 1E B6 |
21FD9CBE-E8F3-4940-8CC2-57300AA81EB6 |
Starting LBA |
80+20 |
8 bytes |
00 08 04 00 00 00 00 00 |
264192 |
Ending LBA |
80+28 |
8 bytes |
FF F7 DF 0F 00 00 00 00 |
266336255 |
Attribute flags |
80+30 |
8 bytes |
00 00 00 00 00 00 00 00 |
0 |
Partition Name |
80+38 |
72 bytes |
… too long… |
Basic data partition |
Vous pourrez trouver des informations complémentaires sur ces structures dans l’article https://msdn.microsoft.com/en-us/library/windows/desktop/aa365449(v=vs.85).aspx
Plus d’informations sur la Microsoft Data Partition (MSR) dans la FAQ GPT:
https://msdn.microsoft.com/en-us/library/windows/hardware/dn640535(v=vs.85).aspx#gpt_faq_what_is_msr
Donc, la première entrée est pour la MSR et la seconde pour la partition de données de type « Basic Data Partition ».
Puisqu’il s’agit d’une partition NTFS, nous pouvons trouver les NTFS Boot Sectors aux LBA 264192 et 266336255
Et voilà:
On peut y lire:
Déjà on retrouve notre signature 55 AA (qui commençait à manquer un des mes amis blogueurs)
- Le Relative Sector : 00 08 04 00 --> 00 04 08 00 = 40800 = 264192 LBA
- Total Sectors: FF EF DB 0F 00 00 00 00 --> FDBEFFF = 266072063 Secteurs
Le NTFS Boot sector de backup montrera la même information.
Le GPT Header nous avait parlé du Last Usable LBA (266338270)
Le LBA juste après montre bien une copie de la table de partition (266338270 + 1 = 266338271 )
Un espace de 128 entrées (si on en prend 4 par secteur de 512 ça fait 32 secteurs) est reservé pour y stocker toute la table de partitions
Les angoissés qui aiment que tout soit bien aligné éprouveront sans doute un plaisir non caché en constatant que 26638271 + 32 = 266338303 : C’est exactement l’emplacement du GPT Header alternatif.
C’est vrai que c’est rassurant quand même … quelque part … moi, je trouve ça rassurant.
Comme on adore les schémas qui montre la beauté de l’alignement des secteurs, en voici un qui reprend les valeurs que nous avons trouvées.
Voilà, vous savez désormais tout sur la façon dont les partitions sont référencées dans des disques GPT. Dans le prochain article, nous allons voir où peuvent se glisser des corruptions et comment les réparer (ou pas).
Serge Gourraud
55 AA
Comments
- Anonymous
January 13, 2015
Il arrive que les structures qui décrivent les partitions sur les disques soient perdues ou corrompues