Académique Documents
Professionnel Documents
Culture Documents
Aspects techniques
Nicolas Paglieri
www.ni69.info
18 juin 2009
Introduction
La perte ou la suppression accidentelle de donnes numriques est un problme courant dans notre socit de
plus en plus rgie par linformatique. Cependant ce problme peut savrer catastrophique suivant
limportance de linformation disparue. Dans un environnement bas sur le systme de fichiers NTFS, quand un
fichier est supprim du disque (mme aprs le vidage de la corbeille sous Windows) il na en ralit pas
totalement disparu. Il existe en effet un moyen de restaurer linformation auparavant contenue dans le fichier,
sous certaines conditions qui seront explicites lors de cette tude.
Nous axerons ce dossier sur la restauration dun fichier effac sur un disque dur NTFS partir dexemples
concrets de donnes. Une tude exhaustive du fonctionnement du systme de fichiers NTFS est ici exclue.
Nous nous limiterons lanalyse des seules notions, caractristiques et seuls aspects techniques essentiels
latteinte de cet objectif.
Ce document sert de documentation un programme ralis en Delphi et disponible sur mon site internet.
1/14
Pr-requis techniques
Bien que les donnes stockes sur le disque le soient en pratique sous forme binaire, nous en adopterons une
reprsentation hexadcimale, bien plus lisible. Chaque octet (1 octet = 8 bits) sera ainsi symbolis par 2
caractres hexadcimaux. Il en sera galement propos une reprsentation dans lencodage ASCII. Un aperu
des donnes sera prsent chaque fois que cela sera jug ncessaire la comprhension des concepts
voqus. Les aperus de donnes se lisent ligne par ligne de gauche droite et de haut en bas. La colonne
Offset gauche reprsente ladresse du premier octet de chaque ligne. Le complment dadresse (octets
suivants) est situ au dessus de chaque colonne. La reprsentation ASCII de chaque ligne est affiche droite.
Offset
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000000
EB 52 90 4E 54 46 53 20 20 20 20 00 02 08 00 00
R.NTFS
000000010
00 00 00 00 00 F8 00 00 3F 00 FF 00 3F 00 00 00
.......?..?...
000000020
00 00 00 00 80 00 80 00 25 B9 DF 01 00 00 00 00
......%.....
000000030
00 00 0C 00 00 00 00 00 92 FB 1D 00 00 00 00 00
..............
ASCII
.....
Nous prendrons comme convention 1Ko = 1KB = 1024 octets. Les diffrents types de donnes employs sont :
Nom
Byte
Word
DWord
Int64
Mmoire occupe
1 octet
2 octets
4 octets
8 octets
Les nombres hexadcimaux, pour les diffrencier des nombres dcimaux, seront prcds du caractre $
lorsquil en sera fait mention en dehors des aperus de donnes, eux toujours reprsents en hexadcimal.
Indications sur la typographie : Les objets informatiques, tels les types de donnes, les noms spcifiques des
champs et paramtres, les noms et attributs de fichiers, les nombres hexadcimaux seront toujours prsents
selon la police dcriture Courier New . Tout le reste, tels les textes explicatifs, remarques, nombres
dcimaux, sera typographi avec la police dcriture courante Calibri.
Remarque importante sur lencodage des donnes little-endian : Loctet de poids le plus faible est stock en
premier. Ainsi par exemple le nombre hexadcimal $F512A83E (DWord) sera reprsent en mmoire par :
3E A8 12 F5
Toutes les dates sont stockes en mmoire sous la forme dun Int64, dnombrant le nombre de centaines de
er
nanosecondes coules depuis le 1 janvier 1601 selon la convention.
2/14
Taille du volume
moins de 512 Mo
entre 512 Mo et 1 Go
entre 1 Go et 2 Go
plus de 2 Go
Taille de cluster
512 octets
1 Ko
2 Ko
4 Ko
de
512
octets).
Nombre de secteurs
1
2
4
8
Secteur de Boot
Le premier secteur de tout disque logique correctement format (que le format de fichiers soit NTFS ou non)
est une zone dite Secteur de Boot, contenant des informations gnrales sur le disque. Cest une squence
damorage de taille fixe, situe au tout dbut du disque. Nous dtaillerons uniquement les informations tant
ncessaires pour la suite. Certaines notions relatives la MFT seront expliques dans la partie suivante.
3/14
Type
_jmpcode
array[1..3] of Byte
Reprage
cOEMID
array[1..8] of Byte
wBytesPerSector
Word
bSectorsPerCluster
Byte
wSectorsReservedAtBegin
Word
Mbz1
Byte
Mbz2
Word
Reserved1
Word
bMediaDescriptor
Byte
Mbz3
Word
wSectorsPerTrack
Word
wSides
Word
dwSpecialHiddenSectors
DWord
Reserved2
DWord
Reserved3
DWord
TotalSectors
Int64
MftStartLcn
Int64
Mft2StartLcn
Int64
ClustersPerFileRecord
DWord
ClustersPerIndexBlock
DWord
VolumeSerialNumber
Int64
_loadercode
array[1..430] of Byte
wSignature
Word
00
EB
00
00
00
F6
00
8E
10
08
0F
B7
16
74
03
00
0F
B4
66
66
1A
01
FF
C3
B4
EB
65
20
65
45
53
61
00
01
52
00
00
00
00
00
D8
E8
CD
B6
C9
24
04
06
66
85
42
58
F7
00
02
06
A0
01
F2
20
6D
73
6E
75
72
00
02
90
00
00
0C
00
00
E8
53
13
D1
66
00
FE
1C
50
0C
8A
66
F1
86
CD
10
F8
8B
C3
64
61
74
74
70
72
00
03
4E
00
00
00
00
00
16
00
73
80
F7
CD
06
00
06
00
16
58
FE
D6
13
00
01
F0
0D
69
6E
20
72
70
65
00
04
54
00
80
00
01
FA
00
68
05
E2
E1
13
14
66
53
E8
24
1F
C2
8A
0F
FF
E8
AC
0A
73
71
63
65
72
72
00
05
46
F8
00
00
00
33
B8
00
B9
3F
66
72
00
3B
66
B3
00
EB
8A
16
82
0E
09
3C
45
71
75
6F
7A
20
0D
00
06
53
00
80
00
00
C0
00
0D
FF
F7
A3
0F
C3
06
68
FF
16
2D
CA
24
19
0E
00
00
72
75
65
6D
20
70
0A
00
07
20
00
00
00
00
8E
0D
68
FF
E2
20
81
66
20
10
80
1F
66
66
00
00
00
A0
74
72
65
00
70
43
6F
00
00
08
20
3F
25
92
37
D0
8E
6A
8A
86
00
FB
60
00
00
3E
8B
33
8B
8A
8C
0F
FB
09
2E
00
0D
72
74
75
0D
83
09
20
00
B9
FB
6E
BC
C0
02
F1
CD
C3
55
1E
0F
01
14
F4
D2
D0
E8
C0
85
01
B4
20
0D
0A
65
72
72
0A
99
4/14
0A
20
FF
DF
1D
52
00
33
CB
66
C0
B4
AA
06
82
00
00
CD
66
66
C0
05
6F
E8
0E
6C
0A
4E
73
6C
20
00
A8
0B
00
00
01
00
48
7C
DB
8A
0F
ED
41
75
66
3A
80
00
13
0F
C1
E4
20
FF
03
BB
65
4E
54
73
2B
72
00
BE
0C
02
3F
00
00
A3
FB
C6
16
B6
06
BB
09
A1
00
3E
0F
66
B7
EA
06
00
07
00
07
63
54
4C
82
41
65
00
00
0D
08
00
00
00
52
B8
06
24
C6
41
AA
F6
10
1E
14
84
58
0E
10
0A
8E
1F
FB
00
74
4C
44
00
6C
64
00
00
0E
00
00
00
00
48
C0
0E
00
40
66
55
C1
00
66
00
61
5B
18
F7
CC
C0
66
EB
CD
75
44
52
0D
74
82
00
55
0F
00
00
00
00
6A
07
00
B4
66
0F
8A
01
66
6A
00
00
07
00
36
B8
66
61
FE
10
72
52
20
0A
2B
6D
00
AA
ASCII
R.NTFS
.....
.......?..?...
......%.....
..............
.......7nRHRHj
....3.|.
....3...
.S.h..hj..$.
..s.f.@f
.?.Af.
ff .AU
.$..r..Uu..
t....f`..f..f
....f;. ..:..fj
.fP.Sfh....>...
...>....a.
B.$....fX[.
fXfX.-f3f....
fff.6
...$...
....... .f
.......o..fa
... ...
.<.t.....
..Err. lectur
e disque...NTLDR
manque...NTLDR
est compress...
Entrez Ctrl+Alt+
Suppr pour redm
arrer...........
..........U
Le champ cOEMID permet de dire quil sagit bien l dun disque NTFS.
Le champ wBytesPerSector donne le nombre doctets par secteur. On retrouve la valeur $200 = 512, attendue.
Le champ bSectorsPerCluster donne le nombre de secteurs par cluster. Il y en a ici 8.
Les champs MftStartLcn et ClustersPerFileRecord seront expliqus dans la partie suivante.
$MFTMIRR
$LOGFILE
$VOLUME
$ATTRDEF
$BITMAP
$BOOT
$BADCLUS
$SECURE
$UPCASE
$EXTEND
Le champ MftStartLcn vu au paragraphe prcdent donne accs au LCN de la MFT. Pour obtenir son adresse
physique, il suffit de multiplier cette valeur par wBytesPerSector puis par bSectorsPerCluster.
On obtient ainsi ici : $C0000 $200 $8 = $C0000000
Le champ ClustersPerFileRecord est plus problmatique : cest une valeur hexadcimale signe. En effet
quand la taille dun cluster est suprieure la taille dun enregistrement (et cest trs souvent le cas), on ne
peut pas exploiter directement sa valeur. Nous poserons une nouvelle variable BytesPerFileRecord qui
contiendra le nombre doctets par enregistrement, plus simple utiliser.
Si ClustersPerFileRecord < $80, BytesPerFileRecord = ClustersPerFileRecord BytesPerCluster
Sinon, si ClustersPerFileRecord $80, BytesPerFileRecord = 1 lsh ($100 - ClustersPerFileRecord)
On a donc dans notre exemple BytesPerFileRecord = 1 lsh ($100 $F6) = $400 = 1024 octets
5/14
Notion dEnregistrement
Tous les enregistrements de la MFT (y compris les 16 premiers malgr leur rle particulier) sont composs
dune structure identique : un entte, suivi dattributs conscutifs, et dun marqueur de fin ($FFFFFFF).
Voici la structure des enttes denregistrements :
Offset
000000000
000000010
000000020
000000030
00
46
01
00
76
Nom
Type
Identifier
array[1..4] of Byte
UsaOffset
Word
UsaCount
Word
LSN
Int64
SequenceNumber
Word
ReferenceCount
Word
AttributesOffset
Word
Flags
Word
BytesInUse
DWord
BytesAllocated
DWord
BaseFileRecord
Int64
NextAttributeID
Word
01
49
00
00
02
Padding
Word
RecordNumber
DWord
UsaNumber
Word
UsaArray
array of Word
02
4C
01
00
72
03
45
00
00
00
04
30
38
00
00
05
00
00
00
00
06
03
01
00
00
07
00
00
00
00
08
89
D8
06
09
2E
01
00
0A
51
00
00
Reprage
0B
25
00
00
0C
00
00
1E
0D
00
04
00
0E
00
00
00
0F
00
00
00
ASCII
FILE0....Q%....
....8..........
................
v.r.....
Le champ Identifier contient toujours FILE quand lenregistrement dcrit un fichier ou un rpertoire (si un
problme a t dtect par chkdsk dans lenregistrement, la valeur devient BAAD. Certains enregistrements
spcifiques au systme dexploitation se voient galement attribuer dautres valeurs comme INDX ).
Le champ Flags caractrise ltat de disponibilit et le genre du fichier dcrit par lenregistrement :
Valeur de Flags
$00
$01
$02
$03
Signification
Fichier supprim
Fichier disponible
Rpertoire supprim
Rpertoire disponible
6/14
Notion dAttribut
Chaque attribut est lui-mme constitu
Voici la structure dentte des attributs :
Offset
000000000
dun
entte
Nom
Type
AttributeType
DWord
Length
DWord
NonResident
Byte
NameLength
Byte
NameOffset
Flags
Word
Word
AttributeNumber
Word
et
dune
squence
de
donnes.
Reprage
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00
ASCII
....`...........
Il existe plusieurs types dattributs, reprs chacun par une valeur diffrente de AttributeType :
AttributeType
Nom
$10
$20
$30
$40
$50
$60
$70
$80
$90
$A0
$B0
$C0
$D0
$E0
$F0
$100
StandardInformation
AttributeList
FileName
ObjectId
SecurityDescriptor
VolumeName
VolumeInformation
Data
IndexRoot
IndexAllocation
Bitmap
ReparsePoint
EAInformation
EA
PropertySet
LoggedUtilityStream
Le champ Length donne la longueur de lattribut en octets, en incluant lentte de lattribut dans le dcompte.
Un attribut peut tre dit rsident (les donnes sont alors contenues directement dans lattribut), ou bien
non-rsident (les donnes sont trop longues pour tre contenues directement dans lattribut qui a une
longueur limite par la taille de lenregistrement, et sont ainsi places ailleurs sur le disque ; on dispose alors
uniquement de leur emplacement sur le disque sous forme dune liste chane nomme DataRuns qui sera
dtaille plus loin). Le champ NonResident renseigne sur ce caractre ($00 = rsident ; $01 = non-rsident).
Un attribut peut tre dit nomm ou non-nomm. Dans ce second cas la valeur du champ NameLength est $00.
7/14
Offset
000000000
000000010
000000020
000000030
000000040
000000050
00
10
48
00
30
00
00
Nom
Type
[Entte Atttibut]
array[1..16] of Byte
ValueLength
DWord
ValueOffset
Word
Flags
Byte
01
00
00
1D
51
00
00
Padding
Byte
Value
array of Byte
02
00
00
8F
7B
00
00
03
00
00
9B
C5
00
00
04
60
18
6D
A9
00
00
05
00
00
68
DC
00
00
06
00
00
C9
C9
00
00
07
00
00
01
01
00
00
08
00
60
00
00
00
00
09
00
33
1D
20
00
00
0A
00
7A
8F
00
00
00
0B
00
56
9B
00
00
00
Reprage
0C
00
68
6D
00
17
00
0D
00
68
68
00
01
00
0E
00
C9
C9
00
00
00
0F
00
01
01
00
00
00
ASCII
....`...........
H.......`3zVhh.
...mh....mh.
0Q{.. ......
................
................
Le champ ValueLength donne la longueur du champ Value, ce dernier contenant lui les donnes en ellesmmes, dont le contenu varie selon le type dattribut considr.
Offset
000000000
000000010
000000020
000000030
000000040
00
80
00
40
42
31
Nom
Type
[Entte Atttibut]
array[1..16] of Byte
LowVCN
Int64
HighVCN
Int64
DataRunsOffset
Word
CompressionUnit
Byte
Padding
array[1..5] of Byte
AllocatedSize
Int64
DataSize
Int64
InitializedSize
Int64
CompressedSize
Int64
Name
array of Byte
DataRuns
array of Byte
01
00
00
00
4D
05
02
00
00
00
00
09
03
00
00
00
00
89
04
48
00
00
00
00
05
00
00
00
00
00
06
00
00
00
00
01
07
00
00
00
00
00
08
01
04
00
42
09
00
00
50
4D
0A
00
00
00
00
Reprage
0B
00
00
00
00
0C
00
00
00
00
0D
00
00
00
00
0E
00
00
00
00
0F
00
00
00
00
ASCII
...H...........
................
@........P......
BM......BM......
1......
CompressedSize nest prsent que si les donnes sont compresses, c'est--dire si le champ CompressionUnit
a une valeur diffrente de $00 (ce nest pas le cas dans lexemple).
Name nest prsent que si lattribut est nomm, tat connu par lentte (ce nest pas le cas dans lexemple).
HighVCN ne nous sera utile que lorsque nous aurons besoin de connatre la taille de la MFT (dtails plus loin).
DataSize donne la longueur totale des donnes constituant le fichier.
Nous analyserons par la suite uniquement les attributs de type StandardInformation (rsident),
FileName (rsident), et Data (rsident ou non rsident) partir dun exemple denregistrement de fichier.
8/14
Exemples dAttributs
Attribut StandardInformation
Cet attribut est toujours rsident quel que soit lenregistrement. Structure du champ Value correspondant :
Offset
000000000
000000010
000000020
000000030
000000040
00
60
00
00
00
00
Nom
Type
CreationTime
Int64
ChangeTime
Int64
LastWriteTime
Int64
LastAccessTime
Int64
FileAttributes
DWord
Alignment
array[1..3] of DWord
QuotaID
DWord
SecurityID
DWord
QuotaCharge
Int64
USN
Int64
01
33
1D
20
00
00
02
7A
8F
00
00
00
03
56
9B
00
00
00
04
68
6D
00
17
00
05
68
68
00
01
00
06
C9
C9
00
00
00
07
01
01
00
00
00
08
00
30
00
00
09
1D
51
00
00
0A
8F
7B
00
00
Reprage
0B
9B
C5
00
00
0C
6D
A9
00
00
0D
68
DC
00
00
0E
C9
C9
00
00
0F
01
01
00
00
ASCII
`3zVhh....mh.
...mh.0Q{.
. ..............
................
........
Le Champ CreationTime renseigne sur la date de cration du fichier, ChangeTime sur celle de dernire
modification, et LastAccessTime sur celle du dernier accs.
Attribut FileName
Cet attribut est toujours rsident quel que soit lenregistrement. Il peut tre prsent plusieurs fois dans un
mme enregistrement (le nom du fichier peut ainsi tre stock dans des espaces de nommage diffrents voir
plus loin). Voici la structure du champ Value correspondant :
Offset
000000000
000000010
000000020
000000030
000000040
000000050
Nom
Type
DirectoryFileReferenceNumber
Int64
CreationTime
Int64
00
C2
00
00
00
0B
2E
Reprage
ChangeTime
Int64
LastWriteTime
Int64
LastAccessTime
Int64
AllocatedSize
Int64
DataSize
Int64
FileAttributes
DWord
AlignmentOrReserved
DWord
NameLength
Byte
NameType
Byte
Name
array of Word
01
16
31
31
00
03
00
02
00
8C
8C
00
55
65
03
00
2C
2C
00
00
00
04
00
96
96
00
6E
78
05
00
DC
DC
00
00
00
06
0D
C9
C9
00
65
65
07
00
01
01
00
00
00
08
00
00
00
20
72
09
31
31
00
20
00
9/14
0A
8C
8C
00
00
61
0B
2C
2C
00
00
00
0C
96
96
00
00
73
0D
DC
DC
00
00
00
0E
C9
C9
00
00
65
0F
01
01
00
00
00
ASCII
........1,.
.1,..1,.
.1,.........
........ ......
..U.n.e.r.a.s.e.
..e.x.e.
Espace de Nommage
POSIX
WIN32
DOS
WIN32 & DOS
Attribut Data
Cet attribut est selon les cas soit rsident, soit non-rsident non-nomm. Tout dpend de la quantit de
donnes constituant le fichier stocker en mmoire. Dans le cas o lattribut est rsident, le contenu du champ
Value est exactement le contenu du fichier. Dans le cas contraire, le champ Value est occup par une liste
chane (DataRuns) dcrivant les emplacements du disque o trouver les donnes.
Notion de DataRuns
Les DataRuns sont des listes chanes dcrivant lemplacement de donnes sur le disque. Les attributs non
rsidents sont stocks dans des Runs (intervalles de clusters). Chaque Run est reprsent par ladresse de son
premier cluster, ainsi que sa longueur totale en clusters. Le premier octet de chaque Run renseigne sur la taille
des deux champs qui le suivent : Longueur et Position. Le champ Position (ici $326A13) donne ladresse du
dbut des donnes (relativement ladresse du Run prcdent, ici relativement au LCN 0 car il sagit du
premier Run), et le champ Longueur (ici $1C7) indique la quantit de clusters lire partir de cet emplacement.
Les DataRuns peuvent ainsi dcrire lemplacement de plusieurs blocs de donnes, mme disjoints, sur le
disque. Loctet nul ($00) indique la fin de la chane. Les blocs de donnes ainsi lus et mis bout bout, puis
tronqus la taille totale du fichier donne par le champ DataSize (car on lit les donnes par clusters et la
taille dun fichier nen reprsente pas toujours un multiple) permettent de reconstituer le contenu du fichier.
Ce systme permet de reprsenter la fois des fichiers normaux, mais aussi des fichiers compresss,
fragments, ou creux.
10/14
Notion de Fixup
Le systme de fichiers NTFS est dot dun procd de dtection derreurs dans les clusters du disque,
permettant une protection de lintgrit des donnes. Lentte de chaque enregistrement contient un lment
de type Word nomm UsaNumber (Update Sequence Number), et une chane dlments Word nomme
UsaArray (Update Sequence Array). La longueur totale des deux champs UsaNumber et UsaArray mis bout
bout (en nombre de Word) est donne par UsaCount. Voir la partie Notion dEnregistrement pour plus de dtails
sur les positions des champs.
Lors de lcriture de donnes dans un enregistrement, les deux derniers octets de chaque secteur composant
lenregistrement sont copis les uns la suite des autres dans la chane UsaArray, puis sont remplacs par la
valeur de UsaNumber. A chaque nouvelle criture, UsaNumber est incrment de un.
Lors de la lecture des enregistrements directement partir du disque, il est donc ncessaire de tenir compte de
cette particularit afin de lire des donnes correctes. Il faut donc, aprs avoir lu lintgralit de
lenregistrement, vrifier que les deux derniers octets de chaque secteur sont bien identiques la valeur de
UsaNumber, puis replacer les lments de UsaArray leur place initiale (dernier Word de chaque secteur).
Lopration sappelle un Fixup, et doit tre ralise avant chaque tude de donnes dun enregistrement, sans
quoi les donnes seraient impropres lanalyse.
Voici un aperu des donnes initialement prsentes sur le disque, puis des donnes une fois le Fixup ralis.
Sont reprsents lentte de lenregistrement ainsi que les deux derniers octets de chaque secteur. On
considre ici que lenregistrement, de 1024 octets, comporte deux secteurs de 512 octets (cas le plus courant).
Le champ UsaNumber est surlign en . Le champ UsaArray est surlign en .
Avant FixUp (donnes protges) :
Offset
000000000
000000010
000000020
000000030
00
46
01
00
76
01
49
00
00
02
02
4C
01
00
72
03
45
00
00
00
04
30
38
00
00
05
00
00
00
00
06
03
01
00
00
07
00
00
00
00
08
89
D8
06
09
2E
01
00
0A
51
00
00
0B
25
00
00
0C
00
00
1E
0D
00
04
00
0E
00
00
00
0F
00
00
00
ASCII
FILE0....Q%....
....8..........
................
v.r.....
[Fin du Secteur n1 :] 76 02
v.r.
0000001F0
0000003F0
[Fin du Secteur n2 :] 76 02
v.r.
00
46
01
00
76
01
49
00
00
02
02
4C
01
00
72
03
45
00
00
00
04
30
38
00
00
05
00
00
00
00
06
03
01
00
00
07
00
00
00
00
08
89
D8
06
09
2E
01
00
0F
00
00
00
ASCII
FILE0....Q%....
....8..........
................
v.r.....
0000001F0
[Fin du Secteur n1 :] 72 00
v.r.
0000003F0
[Fin du Secteur n2 :] 00 00
v.r.
11/14
0A
51
00
00
0B
25
00
00
0C
00
00
1E
0D
00
04
00
0E
00
00
00
Offset
0C09B0800
0C09B0810
0C09B0820
0C09B0830
0C09B0840
0C09B0850
0C09B0860
0C09B0870
0C09B0880
0C09B0890
0C09B08A0
0C09B08B0
0C09B08C0
0C09B08D0
0C09B08E0
0C09B08F0
0C09B0900
0C09B0910
0C09B0920
0C09B0930
0C09B0940
0C09B0950
0C09B0960
0C09B0970
0C09B0980
0C09B0990
0C09B09A0
0C09B09B0
0C09B09C0
0C09B09D0
0C09B09E0
0C09B09F0
0C09B0A00
0C09B0A10
0C09B0A20
0C09B0A30
0C09B0A40
0C09B0A50
0C09B0A60
0C09B0A70
0C09B0A80
0C09B0A90
0C09B0AA0
0C09B0AB0
0C09B0AC0
0C09B0AD0
0C09B0AE0
0C09B0AF0
0C09B0B00
0C09B0B10
0C09B0B20
0C09B0B30
0C09B0B40
0C09B0B50
0C09B0B60
0C09B0B70
0C09B0B80
0C09B0B90
0C09B0BA0
0C09B0BB0
0C09B0BC0
0C09B0BD0
0C09B0BE0
0C09B0BF0
00
46
0C
00
02
00
40
80
20
00
00
00
50
20
C0
25
0C
31
30
7A
C0
20
28
20
6D
46
43
74
00
C1
80
25
20
69
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
01
49
00
00
00
00
E7
5E
20
00
00
00
23
71
A2
00
02
00
00
00
A2
71
00
20
00
00
00
00
00
BB
00
00
63
63
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
02
4C
02
00
20
00
4B
68
00
00
00
00
00
EC
D9
00
45
2E
00
00
D9
EC
00
00
70
69
6F
69
00
74
00
00
6F
68
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
03
45
00
00
66
00
BA
43
00
00
00
00
00
26
3F
00
00
00
00
00
3F
26
00
00
00
00
00
63
00
11
00
00
6E
69
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
04
30
38
00
00
00
FB
FC
00
65
00
00
00
FC
FC
00
58
54
98
18
FC
FC
00
00
6C
63
75
69
00
C4
40
18
74
65
82
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
05
00
00
00
00
00
EC
EC
00
01
00
00
00
EC
EC
00
00
00
00
00
EC
EC
00
00
00
00
00
20
00
4A
00
00
65
72
79
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
06
03
01
00
00
00
C9
C9
00
00
00
05
01
C9
C9
00
45
58
00
01
C9
C9
00
00
65
68
72
6C
06
DE
00
00
6E
20
47
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
07
00
00
00
00
00
01
01
00
00
00
00
00
01
01
00
00
00
00
00
01
01
00
00
00
00
00
65
00
11
00
00
75
74
11
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
08
90
18
07
10
48
20
C0
00
00
30
5A
C0
20
28
20
4D
54
00
50
20
C0
25
1C
20
69
74
40
10
B9
00
56
20
65
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
09
D1
02
00
00
00
71
A2
00
00
00
00
A2
71
00
20
00
00
00
23
71
A2
00
01
00
00
00
00
00
45
00
6F
64
78
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
12/14
0A
6A
00
00
00
00
EC
D9
00
00
00
00
D9
EC
00
00
50
69
00
00
EC
D9
00
45
64
65
2E
00
00
08
18
69
65
74
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0B
25
00
00
00
00
26
3F
00
00
00
00
3F
26
00
00
00
00
00
00
26
3F
00
00
00
00
00
00
00
00
00
63
20
65
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0C
00
00
C2
60
18
FC
FC
00
00
78
18
FC
FC
00
00
4C
63
00
00
FC
FC
00
78
65
72
74
28
18
27
00
69
63
2E
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0D
00
04
26
00
00
EC
EC
00
00
00
00
EC
EC
00
00
00
00
00
00
EC
EC
00
00
00
00
00
00
00
A3
00
20
65
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0E
00
00
00
00
00
C9
C9
00
00
00
01
C9
C9
00
00
7E
68
04
01
C9
C9
00
65
20
20
78
00
00
72
01
6C
02
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
02
0F
00
00
00
00
00
01
01
00
00
00
00
01
01
00
00
00
00
00
00
01
01
00
00
00
00
00
00
00
D6
00
65
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
ASCII
FILE0....j%....
....8...........
............&..
.. f........`...
........H.......
@K. q&.
^hC.?.
..............
....e...........
........0...x...
........Z.......
P#......?.
q&. q&.
?.(.......
%....... ......
..E.X.E.M.P.L.~.
1...T.X.T.i.c.h.
0..............
z.......P#......
?. q&.
q&.?.
(.......%.......
........E.x.e.
m.p.l.e. .d.e. .
F.i.c.h.i.e.r. .
C.o.u.r.t...t.x.
t.ici le@...(...
................
t.J.E..'r
...@...........
%.......Voici le
contenu de ce..
ichier texte....
yG.........
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
Offset
0C0C5E000
0C0C5E010
0C0C5E020
0C0C5E030
0C0C5E040
0C0C5E050
0C0C5E060
0C0C5E070
0C0C5E080
0C0C5E090
0C0C5E0A0
0C0C5E0B0
0C0C5E0C0
0C0C5E0D0
0C0C5E0E0
0C0C5E0F0
0C0C5E100
0C0C5E110
0C0C5E120
0C0C5E130
0C0C5E140
0C0C5E150
0C0C5E160
0C0C5E170
0C0C5E180
0C0C5E190
0C0C5E1A0
0C0C5E1B0
0C0C5E1C0
0C0C5E1D0
0C0C5E1E0
0C0C5E1F0
0C0C5E200
0C0C5E210
0C0C5E220
0C0C5E230
0C0C5E240
0C0C5E250
0C0C5E260
0C0C5E270
0C0C5E280
0C0C5E290
0C0C5E2A0
0C0C5E2B0
0C0C5E2C0
0C0C5E2D0
0C0C5E2E0
0C0C5E2F0
0C0C5E300
0C0C5E310
0C0C5E320
0C0C5E330
0C0C5E340
0C0C5E350
0C0C5E360
0C0C5E370
0C0C5E380
0C0C5E390
0C0C5E3A0
0C0C5E3B0
0C0C5E3C0
0C0C5E3D0
0C0C5E3E0
0C0C5E3F0
00
46
04
00
02
00
60
00
20
00
00
00
98
60
60
00
0C
31
30
78
60
60
00
20
6D
46
4C
80
00
40
93
31
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
01
49
00
00
00
00
9F
7D
20
00
00
00
24
9F
9F
00
02
00
00
00
9F
9F
00
20
00
00
00
00
00
00
05
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
02
4C
02
00
00
00
4D
4C
00
00
00
00
00
4D
4D
00
45
2E
00
00
4D
4D
00
00
70
69
6F
00
00
00
00
2B
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
03
45
00
00
00
00
D5
A8
00
00
00
00
00
D5
D5
00
00
00
00
00
D5
D5
00
00
00
00
00
00
00
00
00
88
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
04
30
38
00
00
00
FF
FF
00
65
00
00
00
FF
FF
00
58
54
90
18
FF
FF
00
00
6C
63
6E
48
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
05
00
00
00
00
00
EC
EC
00
01
00
00
00
EC
EC
00
00
00
00
00
EC
EC
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
06
03
01
00
00
00
C9
C9
00
00
00
03
06
C9
C9
00
45
58
00
01
C9
C9
00
00
65
68
67
00
00
00
00
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
07
00
00
00
00
00
01
01
00
00
00
00
00
01
01
00
00
00
00
00
01
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
08
25
F0
05
10
48
00
90
00
00
30
5A
60
60
00
20
4D
54
00
98
60
60
00
1B
20
69
2E
01
00
00
93
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
09
EA
01
00
00
00
7D
26
00
00
00
00
9F
9F
00
20
00
00
00
24
9F
9F
00
01
00
00
00
00
00
10
05
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
13/14
0A
74
00
00
00
00
4C
4F
00
00
00
00
4D
4D
00
00
50
69
00
00
4D
4D
00
45
64
65
74
00
00
00
00
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0B
25
00
00
00
00
A8
D5
00
00
00
00
D5
D5
00
00
00
00
00
00
D5
D5
00
00
00
00
00
00
00
00
00
FF
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0C
00
00
78
60
18
FF
FF
00
00
78
18
FF
FF
00
00
4C
63
00
00
FF
FF
00
78
65
72
78
00
00
00
00
82
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0D
00
04
31
00
00
EC
EC
00
00
00
00
EC
EC
00
00
00
00
00
00
EC
EC
00
00
00
00
00
00
00
00
00
79
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0E
00
00
00
00
00
C9
C9
00
00
00
01
C9
C9
00
00
7E
68
02
06
C9
C9
00
65
20
20
74
04
00
00
00
47
02
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
02
0F
00
00
00
00
00
01
01
00
00
00
00
01
01
00
00
00
00
00
00
01
01
00
00
00
00
00
00
00
00
00
11
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
ASCII
FILE0...%t%....
....8..........
............x1..
............`...
........H.......
`M..}L.
.}L..&O.
..............
....e...........
........0...x...
........Z.......
$......`M.
`M.`M.
`M.........
........ ......
..E.X.E.M.P.L.~.
1...T.X.T.i.c.h.
0...............
x.......$......
`M.`M.
`M.`M.
................
........E.x.e.
m.p.l.e. .d.e. .
F.i.c.h.i.e.r. .
L.o.n.g...t.x.t.
...H...........
................
@...............
..............
1.+....yG.
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
................
14/14