Skip to content

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.