Glossaire
Freeblock SQLite
Espace libre à l'intérieur d'une page de b-tree SQLite, généralement laissé par un enregistrement supprimé, dont seuls les quatre premiers octets sont écrasés.
Un freeblock est une plage d'octets inutilisés à l'intérieur d'une page de b-tree SQLite, le plus souvent l'espace d'une cellule (une ligne) supprimée. SQLite chaîne les freeblocks d'une page : les octets 1 et 2 de l'en-tête de page contiennent l'offset du premier freeblock, et chaque freeblock commence par deux valeurs big-endian de 2 octets, l'offset du freeblock suivant (0 pour le dernier) et sa taille. Les trous de moins de quatre octets sont trop petits pour cet en-tête et sont comptés comme octets fragmentés (format de fichier).
Lorsqu'une ligne est supprimée, SQLite écrit ces quatre octets d'en-tête sur le début de l'ancienne cellule, généralement ses varints de longueur de payload et de rowid, et laisse le reste intact, sauf si secure_delete est activé.
Pourquoi c'est important dans une investigation
Dans wpndatabase.db, Windows supprime la ligne d'une notification lorsque le toast est fermé ou expire. Les octets de la ligne, y compris l'essentiel de son XML de payload, restent dans la page sous forme de freeblock jusqu'à ce qu'une nouvelle ligne ait besoin de cet espace. C'est ainsi qu'un aperçu de conversation ou une alerte de sécurité fermés peuvent être récupérés des heures ou des jours plus tard. Un freeblock peut aussi fusionner avec l'espace libre voisin ou être partiellement écrasé : une ligne récupérée peut donc être incomplète. Traitez-la comme une piste, indiquez sa source et corroborez-la.
Exemple
En-tête de page (page feuille de b-tree de table)
0D type de page 0x0D : page feuille de table
0F 3A premier freeblock à l'offset 0x0F3A
00 05 5 cellules actives
0E 20 la zone de contenu des cellules commence à 0x0E20
00 0 octet fragmenté
Freeblock à l'offset 0x0F3A
00 00 freeblock suivant : aucun (dernier de la chaîne)
01 52 taille : 0x152 = 338 octets
... reste de l'enregistrement supprimé : ... <toast launch="...
Le parseur indique pour une ligne extraite d'un tel bloc la source free space in page N (espace libre de la page N).
Termes associés
Le Windows Notification Parser analyse automatiquement les freeblocks ; récupérer les notifications Windows supprimées explique la méthode et ses limites.