Dans l'article précédent, nous avons vu comment sont structurés les partitions et volumes sur les disques. Nous allons voir cela da façon concrète sur un disque MBR Basique.
Pour cela, j'utilise un éditeur hexadécimal et ouvre le disque aux secteurs qui m'interressent. L'éditeur que j'utilise s'apelle dskprobe.exe (un outil Microsoft assez basique qui affiche les secteurs par pages de 512 Bytes) mais vous pouvez utiliser celui qui vous convient le mieux. Une liste est disponible sur http://fr.wikipedia.org/wiki/%C3%89diteur_hexad%C3%A9cimal
Ouvrons le secteur 0 d'un disque MBR Basique.
En rouge:
En surligné : La table de partition, contenant 4 entrée.
La partie au dessus est du code.
Focalisons-nous sur la première entrée de la table de partition, et essayons de lui faire correspondre la description disponible sur http://technet.microsoft.com/en-us/library/cc739412(v=ws.10).aspx
Offset
Taille du champ
Valeur
Nom du champ
01BE
1 byte
00
Indicateur de boot:
01BF
20
Starting Head : 0x20 = 32 en décimal
01C0
6 bits
21
Starting Sector : 0x21 = 00100001 -> 00 100001 = 33
01C1
10 bits
Starting Cylinder : 0x00 = 00000000 -> 00 00000000 = 0
01C2
07
Type de partition. 07 signifie NTFS
http://technet.microsoft.com/en-us/library/cc739412(v=ws.10).aspx
01C3
FE
Ending Head : 0xFE = 254
01C4
FF
Ending Sector : 0xFF = 11111111 -> 11111111
= 111111 = 63
01C5
Ending Cylinder : 0xFF = 11111111 -> 11 11111111 = 1111111111 = 1023
01C6
4 bytes
00 08 00 00
Relative Sector : 1er secteur de la partition (en GPT on appelera ça Starting LBA)
En little endian, lire : 00 00 08 00 = 0x800 = 2048
01CA
00 E8 DF 0F
Total Sectors : Le nombre de secteurs de la partition
0x0FDFE800 = 266332160
Ca veut dire que ce disque contient une partition NTFS qui démarre au secteur 2048 et occupe 266332160 secteurs.
Nous ne savons pas encore exactement quelle taille cela fait en Bytes, mais la plupart du temps, 1 secteur occupe 512 bytes. Ce qui nous fait (si on a des secteurs de 512 bytes)
Considérons maintenant quelque chose d'un peu plus fréquent: Un disque contenant plusieurs partitions.
Notre table de partition au secteur 0 pourrait bien ressembler à cela:
Ce qui nous donne ce petit tableau récapitulatif:
Partition
Partition 1
Partition 2
Partition 3
Partition 4
Indicateur de boot
0
Starting Head
20 = 32
254
Starting Sector
21 * = 33
63
Starting Cylinder
0 *
1023
System ID
07 (NTFS)
Ending Head
FE = 254
Ending Sector
63 *
Ending Cylinder
1023 *
Relative Sector
00000800 * = 2048
07547000 = 122974208
0A61B000 = 174174208
Total Sectors
07546800 * = 122972160
030D4000 = 51200000
03A98000 = 61440000
* *Toujours en suivant la petite moulinette de ne garder que 6 bits sur le 1er champ, et d'ajouter les 2 restants aux 8 d champs suivant
*A lire en little endian
Dans l’article suivant, nous détaillerons un disque contenant des partitions étendues.
Serge Gourraud
55 AA