Glossar
SQLite-Freeblock
Freier Speicher in einer SQLite-B-Tree-Seite, meist von einem gelöschten Datensatz, dessen erste vier Bytes überschrieben werden; der Rest bleibt erhalten.
Ein Freeblock ist ein Bereich ungenutzter Bytes innerhalb einer SQLite-B-Tree-Seite, meist der Platz einer gelöschten Zelle (Zeile). SQLite verkettet die Freeblocks einer Seite: Die Bytes 1 und 2 des Seiten-Headers enthalten den Offset des ersten Freeblocks, und jeder Freeblock beginnt mit zwei 2-Byte-Werten in Big-Endian, dem Offset des nächsten Freeblocks (0 beim letzten) und seiner Größe. Lücken unter vier Bytes sind für diesen Header zu klein und werden stattdessen als fragmentierte Bytes gezählt (Dateiformat).
Wird eine Zeile gelöscht, schreibt SQLite diese vier Header-Bytes über den Anfang der alten Zelle, typischerweise ihre Varints für Payload-Länge und Rowid, und lässt den Rest unberührt, sofern secure_delete nicht aktiv ist.
Warum es für Ermittlungen wichtig ist
In wpndatabase.db löscht Windows die Zeile einer Benachrichtigung, wenn der Toast geschlossen wird oder abläuft. Die Bytes der Zeile, einschließlich des Großteils ihres Payload-XML, bleiben als Freeblock in der Seite, bis eine neue Zeile den Platz braucht. So lassen sich eine geschlossene Chat-Vorschau oder Sicherheitswarnung noch Stunden oder Tage später wiederherstellen. Ein Freeblock kann auch mit benachbartem freiem Speicher verschmelzen oder teilweise überschrieben werden, eine wiederhergestellte Zeile kann also unvollständig sein: Behandeln Sie sie als Hinweis, nennen Sie ihre Quelle und bestätigen Sie sie mit anderen Artefakten.
Beispiel
Seiten-Header (Blattseite eines Tabellen-B-Trees)
0D Seitentyp 0x0D: Tabellen-Blattseite
0F 3A erster Freeblock bei Offset 0x0F3A
00 05 5 aktive Zellen
0E 20 Zellinhaltsbereich beginnt bei 0x0E20
00 0 fragmentierte Bytes
Freeblock bei Offset 0x0F3A
00 00 nächster Freeblock: keiner (letzter der Kette)
01 52 Größe: 0x152 = 338 Bytes
... Rest des gelöschten Datensatzes: ... <toast launch="...
Der Parser gibt für eine aus einem solchen Block gecarvte Zeile die Quelle free space in page N (freier Speicher in Seite N) an.
Verwandte Begriffe
Der Windows Notification Parser carvt Freeblocks automatisch; gelöschte Windows-Benachrichtigungen wiederherstellen erklärt die Methode und ihre Grenzen.