Skip to content

Glosario

Freelist de SQLite

La lista de páginas completas de la base de datos que SQLite ya no usa y reserva para reutilizarlas, a menudo con su contenido antiguo todavía presente.

La freelist es la lista de páginas completas que pertenecen al archivo de la base de datos SQLite pero ya no contienen datos activos. Cuando los borrados vacían una página, SQLite no reduce el archivo (salvo que esté activado el auto-vacuum): anota la página en la freelist y la reutiliza la próxima vez que necesita una página (formato de archivo).

La lista se alcanza desde la cabecera de la base de datos, de 100 bytes: el entero big-endian de 4 bytes en el desplazamiento 32 es el número de la primera página troncal de la freelist, y el del desplazamiento 36 es el número total de páginas de la freelist. Cada página troncal empieza con el número de la siguiente página troncal y un contador, seguidos de una lista de números de páginas hoja. Las páginas hoja no tienen ninguna estructura propia de la freelist, así que su contenido anterior suele quedar intacto.

Por qué importa en una investigación

Una base de notificaciones cambia sin parar: llegan toasts, caducan y se descartan. Cuando una página entera de filas de Notification se vacía, pasa a la freelist con sus registros antiguos todavía legibles, salvo que secure_delete esté activado. Por eso una sola página de la freelist puede contener varias notificaciones borradas a la vez. Solo se sobrescribe cuando SQLite reutiliza la página, o se borra cuando la base se compacta con VACUUM, así que la recuperación funciona mejor con archivos recolectados hace poco. Como cualquier dato tallado, una fila recuperada es una evidencia sin garantías.

Ejemplo

Cabecera de la base, desplaz. 32:  00 00 00 0C   primera página troncal = 12
                     desplaz. 36:  00 00 00 03   3 páginas en la freelist
Página 12 (troncal):               00 00 00 00   no hay más páginas troncales
                                   00 00 00 02   siguen 2 páginas hoja
                                   00 00 00 07  00 00 00 0F   hojas: 7, 15

Una notificación tallada de la página 15 aparece en el parser con el origen freelist page 15.

Términos relacionados

El Windows Notification Parser analiza las páginas de la freelist e identifica lo que encuentra; lee recuperar notificaciones borradas de Windows para saber cómo valorar esas filas.