Skip to content

Glosario

Checkpoint del WAL

Operación de SQLite que copia las páginas confirmadas del archivo -wal al archivo principal de la base de datos, tras lo cual el WAL puede reiniciarse.

Un checkpoint es la operación de SQLite que traslada el contenido del registro de escritura anticipada al archivo principal de la base de datos. Para cada página modificada por una transacción confirmada, escribe la versión más reciente del archivo -wal sobre la página del archivo de la base. Una vez copiadas todas las tramas, el siguiente escritor puede empezar el WAL desde el principio con nuevos valores de sal, sobrescribiendo las tramas antiguas a medida que avanza (sqlite.org).

SQLite ejecuta los checkpoints por su cuenta. Por defecto se lanza uno automático cuando el WAL supera unas 1.000 páginas, y cuando se cierra la última conexión a la base, SQLite normalmente hace un checkpoint y elimina el archivo -wal. Las aplicaciones también pueden pedir uno de forma explícita, en modo passive, full, restart o truncate.

Por qué importa en una investigación

Antes de un checkpoint, el archivo de la base y el WAL contienen juntos más historia que cada uno por separado: el archivo conserva las imágenes de página tal como estaban en el último checkpoint, y el WAL las versiones sucesivas más recientes. Ambos pueden contener filas de notificaciones que el estado actual ya no tiene. Un checkpoint sobrescribe las imágenes de página antiguas del archivo y, con el tiempo, las tramas antiguas del WAL.

Por eso es arriesgado simplemente abrir una copia de la evidencia de wpndatabase.db en un navegador de SQLite: al cerrarla puede ejecutarse un checkpoint que elimine el WAL, y con él la copia separada de las notificaciones más recientes y las versiones antiguas de las páginas útiles para la recuperación. Calcula el hash de los originales, trabaja con copias y usa un lector que nunca escriba.

Ejemplo

Antes:    wpndatabase.db      (estado en el último checkpoint)
          wpndatabase.db-wal  (tramas de las páginas 4, 5, 4, 9 ...)
Abrir y cerrar en una herramienta SQLite
Después:  wpndatabase.db      (páginas 4, 5, 9 reescritas)
          wpndatabase.db-wal  (eliminado o reiniciado)

El parser hace lo contrario: superpone en memoria las tramas confirmadas del WAL, señala las filas que solo están en el WAL y deja ambos archivos intactos.

Términos relacionados

Usa el Windows Notification Parser, de solo lectura, y consulta la guía de adquisición para recolectar la base y su WAL de forma segura.