Au cœur de la compression MAM
Un fichier .pf Windows XP est simple à lire : on l'ouvre, on lit l'en-tête
SCCA à l'offset zéro et on descend dans le fichier. Confiez en revanche un
fichier .pf Windows 10 à ce même parseur et vous obtiendrez du charabia.
La raison tient en trois lettres : MAM.
Le framing MAM
À partir de Windows 8, le système d'exploitation compresse chaque fichier Prefetch avant de l'écrire sur le disque. Le fichier compressé débute par un en-tête de framing de huit octets :
offset taille champ
0 3 signature ASCII "MAM"
3 1 algorithme de compression (0x04 = Xpress Huffman)
4 4 taille de la charge non compressée (u32 little-endian)
8 … charge utile compressée
L'octet de signature qui suit MAM identifie l'algorithme de compression
utilisé pour le reste du fichier. Microsoft définit cinq algorithmes dans
la famille COMPRESSION_FORMAT_* ; Prefetch utilise exclusivement
Xpress Huffman (0x04). Le champ de taille non compressée indique
au décompresseur la taille que doit faire le buffer de sortie.
Xpress Huffman en un paragraphe
Xpress Huffman est une variante de LZ77 orientée blocs. Chaque bloc débute
par une table d'alphabet Huffman de 256 entrées — un nibble par symbole —
qui définit les codes des octets littéraux pour 0..255 ainsi que les
codes de longueur de correspondance. Le flux encodé se lit comme une suite
de codes Huffman ; chaque symbole produit soit un octet littéral, soit une
référence arrière vers la sortie déjà décompressée. Le format est
documenté sous la référence [MS-XCA] dans le corpus des spécifications
ouvertes de Microsoft.
Le parseur utilisé sur ce site (frnsc-prefetch) embarque une
implémentation pure-Rust du décodage Xpress Huffman, ce qui permet
d'exécuter l'ensemble de la chaîne dans un module WebAssembly — sans
appel à un binaire natif, sans dépendre d'une API spécifique à Windows.
Pourquoi cela compte
Les outils qui ne connaissent que le format SCCA de l'ère XP vont lire les
trois premiers octets d'un fichier Prefetch issu de Windows 8+ (MAM) et
soit planter, soit produire silencieusement une analyse erronée. Le nombre
de retours d'expérience forensiques qui affichent encore la mention
« testé sur Windows 7 » n'est pas négligeable. Si vous collectez des
artefacts Prefetch sur un poste moderne et que votre chaîne d'outils
cesse de fonctionner, la première chose à vérifier est si elle intègre
bien un décodeur Xpress Huffman.
La bonne nouvelle, c'est que le format n'a pas évolué depuis Windows 8. Dès que votre outillage décompresse correctement, le même chemin de code fonctionne jusqu'à Windows 11 — ce sont les charges utiles SCCA internes qui diffèrent d'une version à l'autre, pas l'enveloppe MAM extérieure.