Recupération de partitions IV : Identification d’une partition NTFS

Pour pouvoir récupérer une partition NTFS, il faut savoir l'identifier. Une partition NTFS contient essentiellement:

  • Un secteur d'amorçage NTFS (NTFS BootSector) en début de partition
  • Une MFT (la database de NTFS)
  • Une copie alternative des 3 premiers enregistrements de cette MFT
  • Un secteur de backup du NTFS Boot Sector en fin de partition

clip_image001

Pour une description complète de chacun des champs : https://technet.microsoft.com/fr-fr/library/cc781134(WS.10).aspx

Pour rappel, la table de partition 0 nous montrait une partition démarrant au secteur 2048 et occupant 122972160 :

clip_image002

Examinons en détails le NTFS Boot Sector

clip_image003

Si on dresse un tableau de ces données on obtient ça:

 

Byte Offset

Field Length

Sample Value

Field Name

0x00

3 bytes

EB 52 90

Jump Instruction

0x03

8 bytes

NTFS

OEM ID

0x0B

2 bytes

00 02 (512)

Bytes per sector

0x0D

1 byte

08

Sectors per Cluster

0x0E

2 bytes

00 00

Reserved Sectors

0x10

3 bytes

00 00 00

Must be 0

0x13

2 bytes

00 00

Must be 0

0x15

1 byte

F8

Media Descriptor

0x16

2 bytes

00 00

Must be 0

0x18

2 bytes

3F 00

Not used

0x1A

2 bytes

FF 00

Not used

0x1C

4 bytes

00 08 00 00 (0x800 = 2048)

Not used

0x20

4 bytes

00 00 00 00

Must be 0

0x24

4 bytes

80 00 80 00

Not used

0x28

8 bytes

FF 67 54 07 00 00 00 00 (122972159) *

Total Sectors

0x30

8 bytes

00 00 0C 00 00 00 00 00 (786432)

Clusters to $MFT

0x38

8 bytes

02 00 00 00 00 00 00 00 (2)

Clusters to $MFTMirr

0x40

1 byte

F6 (246) **

Clusters Per MFT Record

0x41

3 bytes

00 00 00

Not used

0x44

1 byte

01

Clusters Per Index Buffer

0x45

3 bytes

00 00 00

Not used

0x48

8 bytes

31 DD 45 AE 2B 46 AE FE

Volume Serial Number

0x50

4 bytes

00 00 00 00

Not used

* La table de partition présente au secteur 0 nous avait indiqué une partition occupant 122972160 secteurs. Ca fait un secteur de plus, car dans cette table, on compte le 1er secteur de la partition ainsi que le dernier. Dans le secteur d’amorçage NTFS on compte un secteur de moins. Il faudra s’en rappeler quand nous ferons des réparations.

** La taille de chaque enregistrement. NTFS fera un enregistrement pour chaque fichier et répertoire de son volume. Ceux dont la taille est inférieur à la taille d’un enregistrement sont résident dans la MFT. Si ce nombre est positif (entre 00 et 7F) alors il represente le nombre de cluster par enregistrement. Si le nombre est négatif (de 80 à FF), alors la taille d’un enregistrement est 2 à la puissance la valeur absolue de la valeur de ce champ.

  • Dans notre exemple, nous pouvons lire la valeur 0xF6. C’est une valeur négative, et sa valeur absolue est 0x0A (10 en décimal). Donc la taille d’un enregistrement sera de 2^10 = 1024 Bytes (1K)
  • Si nous avions formaté la partition avec le paramètre /L, nous aurions lu la valeur 0x01 dans le champ clusters per MFT Record. Dans ces condition, la taille d’un record aurait été 1 cluster. Comme 1 cluster occupe 8 secteurs, ça nous aurait donné 4K par enregistrement (ce qui est bien le but du paramètre /L)

Clusters to MFT est de 786432, et nous avons 8 secteurs par cluster. Donc, la MFT est localisée au secteur 6293504 ( = 2048 + 786432 * 8 )

Nous pouvons voir à cet emplacement, le premier fichier de la MFT : $MFT

clip_image004

Sachant que chaque enregistrement occupe 1K, il est possible de parcourir tous les enregistrements de la MFT jusqu’à, par exemple, l’enregistrement $Volume qui fournit le nom du volume. Puisqu’il s’agit du 4ième, nous le trouverons au secteur 6293510.

clip_image005

Si nous ne trouvons rien de ce genre à cet emplacement, c’est que soit la donnée a été écrasée, soit qu’on n’est pas au bon endroit : Le secteur d’amorçage n’est peut-être pas le bon, ou contient de mauvaises informations

Dans l’article suivant nous récupérons une partition.

Serge Gourraud

55 AA