Internet Explorer et l'ancien Edge¶
Qu'est-ce que la base de données WebCache ?¶
WebCacheV01.dat est la base de données des fonctions Internet de Windows (WinINet) dans le profil de chaque
utilisateur, une base de données ESE. Internet Explorer 10 et 11 y conservent leur historique, leurs téléchargements,
leur cache et leurs cookies, tout comme l'ancien Edge, l'Edge de Windows 10 d'avant le passage d'Edge à Chromium. Chaque
type d'enregistrement est un conteneur, une table à part entière :
- Historique (
History, etMSHist01…pour un jour ou une semaine) : les URL visitées, chacune avec le titre de la page, le compte pour lequel elle a été enregistrée, la date de sa dernière visite et le nombre de visites. L'Explorateur de fichiers y enregistre aussi les fichiers locaux qu'il ouvre, sous forme d'URLfile:///. - Téléchargements (
iedownload) : l'URL d'où provient un fichier, l'emplacement où il a été enregistré et celui où il a été écrit pendant le téléchargement, sa taille, le début du téléchargement, la page référente et le type MIME. - Cookies : à partir de Windows 10, les cookies eux-mêmes (tables
CookieEntryEx), avec leur hôte, leur nom, leur valeur et leurs heures ; auparavant, les fichiers de cookies qui les contenaient. - Cache (
Content) : les fichiers téléchargés pour afficher les pages, chacun avec son URL, l'emplacement de la copie sur le disque et les en-têtes de la réponse HTTP. D'autres programmes qui utilisent WinINet mettent aussi leurs téléchargements en cache ici. - Le stockage web (
DOMStore), les listes de compatibilité (iecompat) et d'autres.
La base de données survit aux navigateurs : Internet Explorer est retiré et l'Edge basé sur Chromium conserve ses propres bases de données SQLite (voir Navigateurs web), mais la base de données est toujours présente dans chaque profil, avec ce qui a été enregistré auparavant, et ce que l'Explorateur de fichiers et d'autres programmes enregistrent encore.
Meilleure conclusion : le profil de l'utilisateur a consigné l'URL, le téléchargement ou le fichier mis en cache à l'heure indiquée ; la base de données ne dit pas qui était au clavier, ni qu'un fichier mis en cache a été ouvert.
Emplacement et collecte¶
%LOCALAPPDATA%\Microsoft\Windows\WebCache\WebCacheV01.dat
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01.log
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01*.log
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01.chk
Les fichiers que nomment les conteneurs (fichiers mis en cache, fichiers de cookies) se trouvent dans leurs propres
dossiers : %LOCALAPPDATA%\Microsoft\Windows\INetCache\, INetCookies\, History\, et sous
%LOCALAPPDATA%\Packages\ pour les applications.
Collectez l'intégralité du dossier WebCache. Windows garde la base de données ouverte tant que l'utilisateur a une
session ouverte ; une copie prise sur un système en cours d'exécution est donc généralement dans un état « dirty » : ses
modifications les plus récentes ne se trouvent que dans les journaux de transactions V01*.log.
Journaux de transactions
Juntei ne rejoue pas les journaux de transactions ESE. Une base de données qui n'a pas été fermée proprement est
comptée dans le résumé comme laissée dans un état « dirty » et signalée comme un problème : les modifications qui ne
se trouvent encore que dans ses journaux sont absentes. Pour les inclure, rejouez d'abord les journaux dans une copie
du dossier, avec la commande Windows esentutl /r V01 /d exécutée dans cette copie.
Précautions d'analyse¶
- Les heures sont en UTC, à 100 nanosecondes près, sauf le
ModifiedTimedu conteneur d'historique d'un jour ou d'une semaine : il s'agit de l'heure locale du système, écrite sans décalage, et-Zla laisse telle quelle. Convertissez-la avec le fuseau horaire qu'avait le système source à ce moment-là. Son écart avecAccessedTimeest souvent le décalage de ce fuseau horaire, mais pas toujours : les deux peuvent correspondre à des moments différents. - Une entrée d'historique est une URL, et non une visite :
AccessedTimeest sa dernière visite etAccessCountle nombre de visites. Le conteneurHistoryconserve une entrée par URL ; le conteneur d'un jour ou d'une semaine conserve celles de cette période, son nom donnant son premier jour et le jour qui suit son dernier (MSHist012026110120261102: 1er novembre 2026). - Les URL
file:///de l'historique sont des fichiers locaux ouverts depuis l'Explorateur de fichiers et d'autres programmes, et non des pages web. Accountest le compte pour lequel une entrée a été enregistrée (Visited: alice@…) ;Userest le dossier de profil dans lequel se trouve le chemin de la base de données. Ils peuvent différer : un dossier de profil ne porte pas toujours le nom de son compte, et le chemin d'une base de données copiée ailleurs ne contient pas de dossier de profil.Packageindique à qui appartient une entrée : à l'ancien Edge (microsoft.microsoftedge_8wekyb3d8bbwe), à Internet Explorer en mode protégé amélioré (windows_ie_ac_001) ou à une autre application. Vide, l'entrée appartient à l'utilisateur lui-même : Internet Explorer, l'Explorateur de fichiers et d'autres programmes.- Microsoft ne documente pas l'enregistrement de téléchargement. Juntei n'en lit l'heure de début et la taille que
lorsque son en-tête tient dans l'enregistrement, et ses chemins et autres chaînes que lorsque les deux dernières
sont une URL et un chemin Windows. Sinon, la ligne contient l'URL propre de l'entrée, et son heure d'accès lorsque le
début ne peut pas être lu, avec un problème.
Publisherest le nom enregistré par le navigateur, et non une vérification de la signature du fichier. - Une entrée de cache indique que le fichier a été téléchargé et mis en cache. La copie sur le disque peut avoir disparu, avoir été remplacée ou n'avoir jamais été ouverte.
- Les entrées supprimées ne sont pas encore récupérées : ESE peut conserver un enregistrement supprimé dans ses pages jusqu'à ce qu'il les nettoie, mais Juntei ne lit que les enregistrements actifs.
Analyser avec Juntei¶
Usage: juntei parse-ese webcache <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find WebCacheV01.dat
-f, --file <FILE> Parse one WebCache database
Output:
-o, --output <PATH> Directory of CSV tables, or JSON/JSONL file
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-ese webcache -d Users -o webcache-csv
juntei parse-ese webcache -d Users -t jsonl \
| jq 'select(.Table == "Downloads") | {StartTime, URL, TargetPath, User}'
-d recherche WebCacheV01.dat par son nom ; -f lit une base de données quel que soit son nom.
Tables de sortie¶
Le format CSV crée cinq fichiers, chacun ne contenant que l'en-tête lorsqu'il n'a aucune ligne. Les lignes JSON et
JSONL comportent Table (History, Downloads, Cookies, Entries ou Containers) après SourceFile.
| Fichier CSV | Contenu |
|---|---|
WebCache-History.csv |
Les entrées des conteneurs d'historique. |
WebCache-Downloads.csv |
Téléchargements. |
WebCache-Cookies.csv |
Cookies (Windows 10 et versions ultérieures). |
WebCache-Entries.csv |
Les entrées de tous les autres conteneurs : fichiers mis en cache, fichiers de cookies, stockage web, listes de compatibilité et le reste. |
WebCache-Containers.csv |
Les conteneurs. |
Champs¶
Chaque table commence par ces champs :
| Champ | Interprétation |
|---|---|
SourceFile |
La base de données dans laquelle la ligne a été lue. |
User |
L'utilisateur Windows dans le profil duquel se trouve le chemin (le dossier qui suit Users). |
Package |
L'application à laquelle appartiennent les données de la ligne : le dossier sous AppData\Local\Packages du répertoire de son conteneur (ou de sa table de cookies). Vide pour les données propres de l'utilisateur. |
Historique¶
| Champ | Interprétation |
|---|---|
Container |
Le conteneur : History, ou MSHist01 suivi du premier jour de sa période et du jour qui suit son dernier. |
AccessedTime |
La dernière visite de l'URL (UTC) ; dans le conteneur d'un jour ou d'une semaine, la dernière de cette période. |
ModifiedTime |
La dernière modification de l'entrée (UTC) ; dans le conteneur d'un jour ou d'une semaine, l'heure locale du système, sans décalage. |
CreationTime |
La création de l'entrée (UTC). |
ExpiryTime, SyncTime |
Le moment où l'entrée doit quitter l'historique, et celui de sa dernière synchronisation (UTC). |
Account |
Le compte pour lequel l'entrée a été enregistrée. |
URL |
La page ou le fichier, sans le préfixe Visited: account@. |
Title |
Le titre de la page, tel que l'entrée l'a enregistré ; vide dans le conteneur d'un jour ou d'une semaine. |
AccessCount, SyncCount |
Le nombre de visites de l'URL, et de synchronisations de l'entrée. |
EntryType, Flags |
Le type et les indicateurs de l'entrée, tels qu'ils sont stockés. |
EntryID, ContainerID |
L'identifiant de l'entrée dans son conteneur, et celui du conteneur. |
Téléchargements¶
| Champ | Interprétation |
|---|---|
StartTime |
Le début du téléchargement (UTC). |
URL |
L'origine du fichier. |
TargetPath, CurrentPath |
L'emplacement où le fichier a été enregistré, et celui où il a été écrit pendant le téléchargement : un fichier .partial pour l'ancien Edge, la copie du cache pour Internet Explorer. |
TotalBytes |
La taille du fichier. |
Referrer |
La page référente. |
MimeType |
Le type du fichier tel que servi (Internet Explorer). |
Publisher |
Le nom que l'ancien Edge a enregistré pour l'éditeur du fichier. |
AccessedTime |
L'heure d'accès propre de l'entrée (UTC), le plus souvent le début. |
DownloadID, ContainerID |
L'identifiant de l'entrée dans son conteneur, et celui du conteneur. |
Cookies¶
| Champ | Interprétation |
|---|---|
LastModified, Expires |
Quand le cookie a été déposé, et quand il expire (UTC). |
Host, Name, Path |
Le site auquel le cookie est destiné, son nom et son chemin. |
Value |
La valeur telle qu'elle est stockée. |
Flags |
Les indicateurs du cookie, tels qu'ils sont stockés. |
Directory |
Le répertoire que la base de données attribue à la table de cookies : à qui appartiennent les cookies (…\INetCookies\ESE\, …\MicrosoftEdge\Cookies\ESE\ pour l'ancien Edge, celui d'une application). |
CookieTable, EntryID |
La table (CookieEntryEx_<n>) et l'identifiant du cookie dans celle-ci. |
Entrées¶
| Champ | Interprétation |
|---|---|
Container |
Le conteneur : Content (fichiers mis en cache), Cookies (fichiers de cookies), DOMStore (stockage web), iecompat, …. |
AccessedTime |
La dernière utilisation de l'entrée (UTC). |
ModifiedTime |
La dernière modification de la ressource, telle que le serveur l'a indiquée (UTC). |
CreationTime |
La création de l'entrée (UTC). |
ExpiryTime, SyncTime |
Quand elle expire, et quand elle a été vérifiée auprès du serveur pour la dernière fois (UTC). |
URL |
L'URL telle qu'elle est stockée : une URL pour un fichier mis en cache, Cookie:alice@example.com/ pour un fichier de cookie, DOMStore:…, iecompat:…. |
Account |
Le compte d'un fichier de cookie. |
Filename, FilePath |
Le fichier de l'entrée, et son emplacement : le répertoire du conteneur et le sous-dossier que nomme l'entrée. |
FileSize |
La taille du fichier. |
AccessCount, SyncCount |
Le nombre de fois où l'entrée a été utilisée, et vérifiée auprès du serveur. |
EntryType, Flags |
Le type et les indicateurs de l'entrée, tels qu'ils sont stockés. |
RedirectURL |
La destination vers laquelle l'URL a redirigé. |
ResponseHeaders, RequestHeaders |
Les en-têtes de la réponse HTTP (HTTP/1.1 200 OK, Content-Type, Server, …) et ceux de la requête, tels qu'ils sont stockés, lignes comprises. |
EntryID, ContainerID |
L'identifiant de l'entrée dans son conteneur, et celui du conteneur. |
Conteneurs¶
| Champ | Interprétation |
|---|---|
ContainerID, Name |
L'identifiant et le nom du conteneur. |
Directory |
L'emplacement de ses fichiers sur le disque. |
SecureDirectories |
Les sous-dossiers de Directory dans lesquels se trouvent ses fichiers (séparés par une virgule en CSV). |
PartitionID |
M pour les conteneurs propres de l'utilisateur, L pour ceux du mode protégé d'Internet Explorer (les dossiers Low), le SID d'un conteneur d'application pour ceux d'une application. |
LastAccessTime, LastScavengeTime |
La dernière utilisation du conteneur, et son dernier nettoyage (UTC). |
Analyse automatique¶
auto-parse écrit les tables dans BrowserActivity sous les noms WebCache-History.csv, WebCache-Downloads.csv,
WebCache-Cookies.csv, WebCache-Entries.csv et WebCache-Containers.csv (un seul fichier WebCache.json ou
WebCache.jsonl avec -t json ou -t jsonl), accompagnées de BrowserActivity/WebCache-logs.txt. La chronologie
combinée -j inclut chaque ligne, avec Comp et l'identifiant d'Artifact webcache. -Z convertit toutes les
heures, les champs se terminant par Time, LastModified et Expires, sauf le ModifiedTime local du conteneur
d'historique d'un jour ou d'une semaine.