Internet Explorer e Edge legado¶
O que é o banco de dados WebCache¶
O WebCacheV01.dat é o banco de dados das funções de Internet do Windows (WinINet) no perfil de cada usuário, um banco
de dados ESE. O Internet Explorer 10 e 11 guardam nele seu histórico, downloads, cache e cookies, assim como o Edge
legado, o Edge do Windows 10 de antes de o Edge passar a ser baseado no Chromium. Cada tipo de registro é um contêiner,
uma tabela própria:
- Histórico (
History, eMSHist01…para um dia ou uma semana): as URLs visitadas, cada uma com o título da página, a conta para a qual foi registrada, quando foi visitada pela última vez e quantas vezes. O Explorador de Arquivos também registra ali os arquivos locais que abre, como URLsfile:///. - Downloads (
iedownload): a URL de onde veio um arquivo, onde ele foi salvo e onde foi gravado durante o download, seu tamanho, quando o download começou, a página de referência e o tipo MIME. - Cookies: no Windows 10 e posteriores, os próprios cookies (tabelas
CookieEntryEx), com host, nome, valor e horários; antes, os arquivos de cookies que os continham. - Cache (
Content): os arquivos baixados para exibir páginas, cada um com sua URL, onde está a cópia no disco e os cabeçalhos da resposta HTTP. Outros programas que usam o WinINet também guardam seus downloads em cache aqui. - Armazenamento web (
DOMStore), listas de compatibilidade (iecompat) e outros.
O banco de dados sobrevive aos navegadores: o Internet Explorer foi descontinuado e o Edge baseado no Chromium mantém seus próprios bancos de dados SQLite (consulte Navegadores web), mas o banco de dados continua em todos os perfis, com o que foi registrado antes e o que o Explorador de Arquivos e outros programas ainda registram.
Melhor conclusão: o perfil do usuário registrou a URL, o download ou o arquivo em cache no horário registrado; o banco de dados não diz quem estava ao teclado, nem que um arquivo em cache foi aberto.
Localização e coleta¶
%LOCALAPPDATA%\Microsoft\Windows\WebCache\WebCacheV01.dat
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01.log
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01*.log
%LOCALAPPDATA%\Microsoft\Windows\WebCache\V01.chk
Os arquivos que os contêineres citam (arquivos em cache, arquivos de cookies) ficam em suas próprias pastas:
%LOCALAPPDATA%\Microsoft\Windows\INetCache\, INetCookies\, History\, e em %LOCALAPPDATA%\Packages\ para os
aplicativos.
Colete a pasta WebCache inteira. O Windows mantém o banco de dados aberto enquanto o usuário está conectado, então uma
cópia de um sistema em execução costuma estar suja (dirty): suas alterações mais recentes ficam apenas nos logs de
transação V01*.log.
Logs de transação
O Juntei não reproduz os logs de transação do ESE. Um banco de dados que não foi fechado corretamente é contado no
resumo como sujo e relatado como um problema: as alterações que ainda estão apenas em seus logs ficam de fora. Para
incluí-las, reproduza primeiro os logs em uma cópia da pasta, com o comando esentutl /r V01 /d do Windows
executado nessa cópia.
Cuidados para o analista¶
- Os horários estão em UTC, com precisão de 100 nanossegundos, exceto o
ModifiedTimedo contêiner de histórico de um dia ou de uma semana: ele é o horário local do sistema, gravado sem deslocamento, e-Zo mantém como está. Converta-o com o fuso horário que o sistema de origem tinha naquele momento. Sua diferença em relação aAccessedTimecostuma ser o deslocamento desse fuso horário, mas nem sempre: os dois podem ser momentos diferentes. - Uma entrada do histórico é uma URL, não uma visita:
AccessedTimeé sua última visita eAccessCount, quantas houve. O contêinerHistoryguarda uma entrada por URL; o contêiner de um dia ou de uma semana guarda as daquele período, e seu nome indica seu primeiro dia e o dia seguinte ao último (MSHist012026110120261102: 1º de novembro de 2026). - URLs
file:///no histórico são arquivos locais abertos no Explorador de Arquivos e em outros programas, não páginas web. Accounté a conta para a qual uma entrada foi registrada (Visited: alice@…);Useré a pasta de perfil em que está o caminho do banco de dados. Eles podem ser diferentes: uma pasta de perfil nem sempre tem o nome de sua conta, e o caminho de um banco de dados copiado para outro lugar não contém uma pasta de perfil.Packageindica de quem é uma entrada: do Edge legado (microsoft.microsoftedge_8wekyb3d8bbwe), do Internet Explorer no Modo Protegido Aprimorado (windows_ie_ac_001) ou de outro aplicativo. Vazio, a entrada é do próprio usuário: Internet Explorer, Explorador de Arquivos e outros programas.- A Microsoft não documenta o registro de download. O Juntei lê seu horário de início e seu tamanho apenas quando seu
cabeçalho cabe dentro do registro, e seus caminhos e demais strings apenas quando as duas últimas são uma URL e um
caminho do Windows. Caso contrário, a linha traz a URL da própria entrada, e seu horário de acesso quando o início não
pode ser lido, com um problema.
Publisheré o nome que o navegador registrou, não uma verificação da assinatura do arquivo. - Uma entrada de cache diz que o arquivo foi baixado e guardado em cache. A cópia no disco pode ter desaparecido, ter sido substituída ou nunca ter sido aberta.
- Entradas excluídas ainda não são recuperadas: o ESE pode manter um registro excluído em suas páginas até limpá-las, mas o Juntei lê apenas os registros ativos.
Analisar com o 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 procura WebCacheV01.dat pelo nome; -f lê um banco de dados independentemente do nome.
Tabelas de saída¶
O CSV cria cinco arquivos, cada um apenas com o cabeçalho quando não tem linhas. As linhas JSON e JSONL trazem Table
(History, Downloads, Cookies, Entries ou Containers) depois de SourceFile.
| Arquivo CSV | Conteúdo |
|---|---|
WebCache-History.csv |
As entradas dos contêineres de histórico. |
WebCache-Downloads.csv |
Downloads. |
WebCache-Cookies.csv |
Cookies (Windows 10 e posteriores). |
WebCache-Entries.csv |
As entradas de todos os outros contêineres: arquivos em cache, arquivos de cookies, armazenamento web, listas de compatibilidade e o restante. |
WebCache-Containers.csv |
Os contêineres. |
Campos¶
Todas as tabelas começam com estes campos:
| Campo | Interpretação |
|---|---|
SourceFile |
O banco de dados do qual a linha foi lida. |
User |
O usuário do Windows em cujo perfil está o caminho (a pasta depois de Users). |
Package |
O aplicativo a que pertencem os dados da linha: a pasta sob AppData\Local\Packages do diretório de seu contêiner (ou de sua tabela de cookies). Vazio para os dados do próprio usuário. |
Histórico¶
| Campo | Interpretação |
|---|---|
Container |
O contêiner: History, ou MSHist01 seguido do primeiro dia de seu período e do dia seguinte ao último. |
AccessedTime |
A última visita à URL (UTC); no contêiner de um dia ou de uma semana, a última daquele período. |
ModifiedTime |
Quando a entrada foi alterada pela última vez (UTC); no contêiner de um dia ou de uma semana, o horário local do sistema, sem deslocamento. |
CreationTime |
Quando a entrada foi criada (UTC). |
ExpiryTime, SyncTime |
Quando a entrada deve sair do histórico, e quando foi sincronizada pela última vez (UTC). |
Account |
A conta para a qual a entrada foi registrada. |
URL |
A página ou o arquivo, sem o prefixo Visited: account@. |
Title |
O título da página, como a entrada o registrou; vazio no contêiner de um dia ou de uma semana. |
AccessCount, SyncCount |
Quantas vezes a URL foi visitada, e a entrada sincronizada. |
EntryType, Flags |
O tipo e os flags da entrada, como armazenados. |
EntryID, ContainerID |
O ID da entrada em seu contêiner, e o ID do contêiner. |
Downloads¶
| Campo | Interpretação |
|---|---|
StartTime |
Quando o download começou (UTC). |
URL |
De onde o arquivo veio. |
TargetPath, CurrentPath |
Onde o arquivo foi salvo, e onde foi gravado durante o download: um arquivo .partial no Edge legado, a cópia do cache no Internet Explorer. |
TotalBytes |
O tamanho do arquivo. |
Referrer |
A página de referência. |
MimeType |
O tipo do arquivo como foi servido (Internet Explorer). |
Publisher |
O nome que o Edge legado registrou para o editor do arquivo. |
AccessedTime |
O horário de acesso da própria entrada (UTC), na maioria das vezes o início. |
DownloadID, ContainerID |
O ID da entrada em seu contêiner, e o ID do contêiner. |
Cookies¶
| Campo | Interpretação |
|---|---|
LastModified, Expires |
Quando o cookie foi definido, e quando expira (UTC). |
Host, Name, Path |
O site a que o cookie se destina, seu nome e seu caminho. |
Value |
O valor como armazenado. |
Flags |
Os flags do cookie, como armazenados. |
Directory |
O diretório que o banco de dados atribui à tabela de cookies: de quem são os cookies (…\INetCookies\ESE\, …\MicrosoftEdge\Cookies\ESE\ do Edge legado, o de um aplicativo). |
CookieTable, EntryID |
A tabela (CookieEntryEx_<n>) e o ID do cookie nela. |
Entradas¶
| Campo | Interpretação |
|---|---|
Container |
O contêiner: Content (arquivos em cache), Cookies (arquivos de cookies), DOMStore (armazenamento web), iecompat, …. |
AccessedTime |
Quando a entrada foi usada pela última vez (UTC). |
ModifiedTime |
A última modificação do recurso, como informada pelo servidor (UTC). |
CreationTime |
Quando a entrada foi criada (UTC). |
ExpiryTime, SyncTime |
Quando ela expira, e quando foi verificada com o servidor pela última vez (UTC). |
URL |
A URL como armazenada: uma URL para um arquivo em cache, Cookie:alice@example.com/ para um arquivo de cookie, DOMStore:…, iecompat:…. |
Account |
A conta de um arquivo de cookie. |
Filename, FilePath |
O arquivo da entrada, e onde ele está: o diretório do contêiner e a subpasta que a entrada indica. |
FileSize |
O tamanho do arquivo. |
AccessCount, SyncCount |
Quantas vezes a entrada foi usada, e verificada com o servidor. |
EntryType, Flags |
O tipo e os flags da entrada, como armazenados. |
RedirectURL |
Para onde a URL redirecionou. |
ResponseHeaders, RequestHeaders |
Os cabeçalhos da resposta HTTP (HTTP/1.1 200 OK, Content-Type, Server, …) e os da solicitação, como armazenados, com todas as suas linhas. |
EntryID, ContainerID |
O ID da entrada em seu contêiner, e o ID do contêiner. |
Contêineres¶
| Campo | Interpretação |
|---|---|
ContainerID, Name |
O ID e o nome do contêiner. |
Directory |
Onde seus arquivos estão no disco. |
SecureDirectories |
As subpastas de Directory em que seus arquivos estão (separadas por vírgula no CSV). |
PartitionID |
M para os contêineres do próprio usuário, L para os do Modo Protegido do Internet Explorer (as pastas Low), o SID de um contêiner de aplicativo para os de um aplicativo. |
LastAccessTime, LastScavengeTime |
Quando o contêiner foi usado pela última vez, e limpo pela última vez (UTC). |
Análise automática¶
O auto-parse grava as tabelas em BrowserActivity como WebCache-History.csv, WebCache-Downloads.csv,
WebCache-Cookies.csv, WebCache-Entries.csv e WebCache-Containers.csv (um único arquivo WebCache.json ou
WebCache.jsonl com -t json ou -t jsonl), junto com BrowserActivity/WebCache-logs.txt. A linha do tempo
combinada de -j inclui todas as linhas, com Comp e o identificador de Artifact webcache. -Z converte todos os
horários, os campos terminados em Time, LastModified e Expires, exceto o ModifiedTime local do contêiner
de histórico de um dia ou de uma semana.