Outils de parsing de Windows Prefetch comparés
Quatre parsers comptent en 2026. Aucun n'est la bonne réponse pour tous les workflows. Les compromis sont réels, et le mode d'échec consistant à mal choisir — sorties silencieusement fausses sur fichiers MAM-compressés — est assez grave pour valoir la peine d'y réfléchir à l'avance.
PECmd (Eric Zimmerman)
PECmd est le standard CLI de facto. .NET, tourne sous Windows (et Linux/macOS via les runtimes .NET récents), livré à la fois en CLI et en bibliothèque Prefetch.dll. Supporte proprement chaque version SCCA de v17 à v31.
Forces : couverture complète des champs, y compris drapeaux de métriques de fichiers, chaînes de trace et listes de chaînes de répertoires par fichier. Sortie CSV/JSON. S'intègre directement dans KAPE, où la plupart des pipelines DFIR de production le font tourner. Maintenance active.
Faiblesses : le coût de démarrage de .NET rend le traitement fichier par fichier lent en itération ; traitez un dossier complet à la fois. La sortie CSV est dense ; utile pour outillage en aval, moins utile pour un coup d'œil.
Meilleur pour : pipelines scriptées, modules KAPE, tout ce qui produit un jeu de données structuré qu'un autre outil consommera.
WinPrefetchView (NirSoft)
Le WinPrefetchView de NirSoft est la GUI Windows classique pour naviguer dans un répertoire Prefetch\ local. Existe quasi inchangé depuis plus d'une décennie.
Forces : courbe d'apprentissage nulle, triage visuel instantané, menu contextuel clic droit pour les propriétés, export HTML. Utile pour montrer à un collègue non-DFIR ce qu'il regarde.
Faiblesses : Windows uniquement. Pas de sortie structurée au-delà du HTML simple ou de la copie tabulée. Vieillissant ; l'interface et l'ensemble des fonctionnalités ont à peine bougé en plusieurs années. Pas idéal pour le traitement par lots ou pour les environnements où exécuter des utilitaires tiers non signés est restreint par politique.
Meilleur pour : triage visuel rapide sur une station d'analyste Windows quand vous avez déjà sorti le répertoire Prefetch\.
libscca / pyscca (libyal)
libscca est la bibliothèque C multiplateforme qui sous-tend Plaso/log2timeline. Elle publie aussi la documentation publique la plus complète du format SCCA — si vous avez besoin de connaître la disposition exacte des champs pour v31, c'est ici qu'il faut regarder.
Forces : multiplateforme, bien documentée, code de qualité bibliothèque. Bindings Python via pyscca. La CLI sccainfo livrée donne un dump texte propre par fichier. Utilisée comme parser sous Plaso, ce qui signifie qu'elle a été validée sur un large corpus de vrai Prefetch.
Faiblesses : pas de GUI, pas de reporting par lots intégré. La sortie est lisible par humain plutôt qu'amicale pour la machine par défaut. Compiler sous Windows n'est pas toujours agréable ; la plupart la consomment via pyscca ou Plaso plutôt que directement.
Meilleur pour : bâtir des outils sur mesure sur des hôtes d'analyse non-Windows. Intégration chronologique via Plaso.
python-prefetch-parser et compagnie
Les divers dérivés prefetchparser.py — windowsprefetch, l'outil Python original d'Adam Witt, plusieurs forks — sont encore cités dans d'anciens écrits. La plupart ne sont plus maintenus. La plupart ne gèrent pas du tout la compression MAM, ou gèrent v26/v30 mais cassent en v31. Ils émettent silencieusement des champs faux plutôt que de signaler une erreur.
Si vous héritez d'une pipeline qui utilise l'un d'eux, remplacez-le. Le coût de trouver un compteur d'exécutions faux dans un rapport destiné au tribunal est supérieur à celui de basculer vers PECmd ou pyscca.
Parsers en navigateur
Les parsers en navigateur, dont celui de ce site, chargent un décodeur SCCA en pur Rust (frnsc-prefetch) compilé en WebAssembly et l'exécutent dans un Web Worker. Aucune installation locale, aucun prérequis Windows, les fichiers ne quittent pas le navigateur.
Forces : aucune installation, fonctionne sur n'importe quel OS ou appareil, pas d'inquiétude pour la chaîne de garde liée à l'envoi de preuves à un tiers puisque rien n'est envoyé. Tableaux triables et interrogeables, panneaux de détail dépliables, export JSON. Particulièrement utile pour le triage ad hoc quand vous n'avez pas votre outillage habituel sous la main, et sur les hôtes verrouillés où vous ne pouvez rien installer.
Faiblesses : dépend du crate sous-jacent pour la couverture des versions SCCA. Moins personnalisable que scripter contre PECmd ou libscca. Pas d'intégration native avec Plaso, KAPE, ou ce qu'est votre chronologie de dossier.
Meilleur pour : triage rapide, partage de constats avec des collègues non-DFIR, exécution sur stations durcies où installer un outil d'analyse n'est pas permis, ou vérification d'un seul .pf de bout en bout contre un deuxième parser indépendant.
Quand utiliser lequel
Un workflow qui marche en pratique :
- Premier coup d'œil — déposez le dossier dans un parser en navigateur. Triage sur le nombre de fichiers, la distribution des versions et les anomalies évidentes. Sélectionnez les lignes à investiguer.
- Extraction en lot — faites passer PECmd sur le même dossier et écrivez CSV/JSON dans votre chronologie de dossier. C'est l'artefact archivé que vous citez dans le rapport.
- Détail niveau enquête — pour tout
.pfque vous devez écrire rigoureusement, passez à la fois PECmd etsccainfo. Deux parsers indépendants doivent s'accorder sur un format bien défini ; les désaccords méritent attention.
Aucun outil seul ne couvre tout. La combinaison d'un parser navigateur pour le triage plus PECmd ou libscca pour la sortie d'archive traite à peu près toutes les questions Prefetch qui surgissent dans le cas réel.
Pour aller plus loin
- Eric Zimmerman, sources et releases de PECmd.
- libyal, documentation libscca.
- Kroll, KAPE — la couche d'orchestration depuis laquelle la plupart des équipes font tourner PECmd.