Skip to content

thumbcache_*.db-Dateiformat: CMMM-Header und Eintragsaufbau

Byteebene der Windows-Thumbcache- und Iconcache-Datenbanken von Vista bis Windows 11: Dateiheader, versionsabhängige Cache-Typen und Eintragsstruktur.

Veröffentlicht am 4 Min. Lesezeit

Dies ist eine Referenz für den Aufbau der Vorschaubild- und Icon-Caches des Windows Explorer (thumbcache_*.db, iconcache_*.db) auf Byteebene. Der Aufbau ist von Microsoft nicht dokumentiert. Das Folgende stimmt mit öffentlichen Recherchen und Open-Source-Parsern wie Vinetto und Thumbcache Viewer überein und ist das, was der Thumbcache Parser implementiert. Alle Ganzzahlen sind Little-Endian.

Dateiheader

OffsetGrößeFeld
04Signatur CMMM
44Formatversion
84Cache-Typ (Index in die Tabelle unten)

Was folgt, hängt von der Version ab:

VersionGeschrieben vonOffset 12Offset 16Offset 20Offset 24
0x14Vistaerster Eintragfreier EintragEintragsanzahl–
0x157erster Eintragfreier EintragEintragsanzahl–
0x1A8erster Eintragfreier EintragEintragsanzahl–
0x1C8 (v2)reservierterster Eintragfreier EintragEintragsanzahl
0x1E8 (v3)reservierterster Eintragfreier Eintrag–
0x1F8.1reservierterster Eintragfreier Eintrag–
0x2010 / 11reservierterster Eintragfreier Eintrag–

Erster Eintrag ist der Offset des ersten Cache-Eintrags. Freier Eintrag markiert den Beginn des freien Bereichs: Einträge dahinter wurden freigegeben, ihre Bytes sind aber oft noch intakt. Ein robuster Parser sollte prüfen, ob der Offset des ersten Eintrags tatsächlich auf CMMM zeigt, und andernfalls den Rest der Datei durchsuchen.

Cache-Typen

Die Cache-Typ-Nummer entspricht der Größenklasse der Datei, und die Tabelle hat sich zwischen den Versionen geändert:

Version012345678910111213
Vista / 732962561024sr
8 (alle)163248962561024srwideexif
8.11632489625610241600srwideexifwide_alternate
10 / 1116324896256768128019202560srwideexifwide_alternatecustom_stream

Cache-Eintrag

Die Einträge folgen lückenlos aufeinander. Der Header ist unter Windows 7 48 Bytes groß, unter Vista und Windows 8+ 56 Bytes:

FeldVista78 → 11
Signatur CMMM000
Eintragsgröße (gesamter Eintrag)444
Eintrags-Hash / Cache-ID (u64)888
Quellerweiterung (4 × UTF-16)16––
Größe der Kennung241616
Padding-Größe282020
Datengröße322424
Breite––28
Höhe––32
Unbekannt362836
Daten-Prüfsumme (u64)403240
Header-Prüfsumme (u64)484048

Nach dem Header folgen die Kennung (UTF-16LE, meist die Cache-ID als 16 Hex-Ziffern), das Padding und die Bilddaten. Der nächste Eintrag beginnt bei Offset + Eintragsgröße.

Einträge mit Datengröße 0 sind häufig. Es sind Platzhalter für Elemente, deren Vorschaubild nicht erzeugt wurde oder verworfen wurde. Sie tragen dennoch eine Cache-ID und sind daher für eine Zeitleiste relevant.

Plausibilitätsprüfungen beim Carving

Beim Scannen nach CMMM außerhalb der aktiven Kette sollte ein Kandidat verworfen werden, außer:

  • die Eintragsgröße ist mindestens so groß wie die Headerlänge und passt in die Datei;
  • Header + Kennung + Padding + Daten ≤ Eintragsgröße;
  • die Größe der Kennung ist gerade und angemessen klein.

Diese Prüfungen halten die Zahl falsch positiver Treffer gering, da CMMM in Bilddaten selten vorkommt.

Die Bilddaten

Die Nutzlast ist eine vollständige Bilddatei: BM (BMP), FF D8 FF (JPEG) oder 89 50 4E 47 (PNG). Diese Bytes werden unverändert gehasht. Windows 10 und 11 speichern meist 32-Bit-BMPs (Top-Down oder Bottom-Up), die jeder moderne Browser anzeigen kann.

thumbcache_idx.db

Der Index (IMMM) ordnet Cache-IDs den Eintrags-Offsets in den jeweiligen Größendatenbanken zu, zusammen mit Flags. Er enthält keine Bilder, und sein Aufbau variiert stärker zwischen den Builds. Er ist besonders nützlich, um zu bestätigen, dass eine ID einmal zwischengespeichert war, selbst wenn die Größendatenbanken bereits bereinigt wurden.

Weiterführend

Verwandte Artikel

Was thumbcache_*.db-Dateien in einer Ermittlung beweisen, wie gelöschte Vorschaubilder wiederhergestellt werden und was vor dem Bericht zu klären ist.
Thumbcache Viewer, Vinetto, forensische Suiten und browserbasiertes Parsing im Vergleich: Plattformen, Formate, Wiederherstellung und Namenszuordnung.