Skip to content

wpndatabase.db-walappdb.dat

Windows Notification Parser

Cada toast que recibió un usuario — vistas previas de chats y correos, alertas de seguridad, descargas completadas — desde wpndatabase.db y su archivo -wal, más las notificaciones eliminadas recuperadas del espacio libre. Analizado en tu navegador con WebAssembly — no se sube nada.

Suelta wpndatabase.db y su -wal, una carpeta o una recolección ZIP

Funciona con la carpeta Notifications de un usuario, todo un árbol Users, una recolección de KAPE o Velociraptor, o un ZIP. También lee appdb.dat (Windows 10 anterior a 1607).

El ejemplo es una base sintética (cuenta ficticia svc_backup en FIN-WKS-07) con una notificación eliminada que sigue en el espacio libre.

100 % en el cliente: las bases se analizan con WebAssembly en tu navegador y nunca se suben.

Cómo obtener tus datos

Guía completa de adquisición

Recoge wpndatabase.db junto con su wpndatabase.db-wal de la carpeta Notifications de cada usuario y suelta el resultado aquí. En un equipo Windows 10 u 11 encendido lleva unos dos minutos.

  1. Recoge la base y su -wal
  2. Suelta la carpeta o el ZIP aquí
  3. Analizado en tu navegador, nunca se sube

Pega en Windows PowerShell ejecutado como administrador (unidad de sistema C:). Crea una instantánea para que la base y su WAL sean del mismo instante, los copia para cada perfil y luego elimina la instantánea.

PowerShell · Admin
New-Item -ItemType Directory -Force -Path C:\triage | Out-Null
$sc = Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{ Volume = 'C:\' }
$vss = Get-CimInstance -ClassName Win32_ShadowCopy -Filter "ID='$($sc.ShadowID)'"
cmd /c mklink /d C:\triage\vss "$($vss.DeviceObject)\"
robocopy C:\triage\vss\Users C:\triage\Users wpndatabase.db wpndatabase.db-wal appdb.dat /S /XJ /B /R:0 /W:0 /NP /NDL
cmd /c rmdir C:\triage\vss
$vss | Remove-CimInstance

Resultado: C:\triage\Users\<usuario>\AppData\Local\Microsoft\Windows\Notifications\ con wpndatabase.db y wpndatabase.db-wal (appdb.dat en versiones antiguas). Suelta aquí la carpeta C:\triage\Users (arrástrala o usa Elegir una carpeta).

¿Analizas en otro equipo? Empaquétalo en un ZIP con el tar.exe incluido en Windows 10 1803 y posteriores (un ZIP creado con Compress-Archive de PowerShell también sirve):

PowerShell / cmd
tar -a -c -f C:\triage\notifications.zip -C C:\triage Users

Trampas

  • La base está abierta mientras el usuario tiene sesión iniciada: una copia normal falla o produce un archivo lleno de ceros (indicado como «empieza con ceros»). Usa el comando con instantánea, KAPE o Velociraptor.
  • Toma la base y su -wal en el mismo momento: sin el WAL faltan las últimas notificaciones, y un WAL de otra base se ignora.
  • No abras la base activa con una herramienta SQLite antes de copiarla: puede consolidar el WAL en la base y cambiar lo que recoges.
  • Las notificaciones caducan (ExpiryTime, a menudo en pocos días) y las descartadas se borran: recoge pronto. Las filas borradas pueden sobrevivir en el espacio libre hasta que SQLite lo reutilice.

¿Qué es wpndatabase.db?

wpndatabase.db es la base de datos, una por usuario, de la plataforma de notificaciones push de Windows (WPN). Cada toast, actualización de icono dinámico y distintivo que envía una aplicación — a través de Windows Push Notification Services (WNS) o localmente — se guarda allí con la aplicación que lo envió, la hora de llegada y la de caducidad. Es una base SQLite 3 en modo WAL, así que los cambios recientes viven en wpndatabase.db-wal hasta que Windows los consolida.

La notificación en sí se guarda como XML: las líneas de texto que vio el usuario, las referencias a imágenes, los botones y cuadros de respuesta, y los argumentos de inicio que abren la aplicación al hacer clic. Por eso el archivo conserva vistas previas de chats y correos, alertas de seguridad y avisos de descarga — a veces después de que el mensaje o archivo original haya desaparecido.

¿Dónde se guarda?

  • C:\Users\<usuario>\AppData\Local\Microsoft\Windows\Notifications\wpndatabase.db, con -wal y -shm al lado (Windows 10 1607 y posteriores, Windows 11).
  • appdb.dat en la misma carpeta en Windows 10 anterior a 1607 y en Windows 8.x: un archivo binario de tamaño fijo que empieza por DNPW.
  • Tablas principales: Notification (XML del contenido, Type, Tag, Group, ArrivalTime, ExpiryTime como FILETIME), NotificationHandler (PrimaryId de la aplicación, HandlerType, CreatedTime), HandlerAssets, HandlerSettings, WNSPushChannel (URI de canales) y Metadata.

Qué aporta a una investigación

  • Contenido de mensajes: vistas previas de aplicaciones de chat y correo con remitente y primeras líneas, a menudo presentes aunque el usuario haya borrado la conversación.
  • Eventos de seguridad: toasts del antivirus y de la seguridad de Windows (amenaza detectada, en cuarentena, protección desactivada) con los nombres de archivo que mencionan.
  • Actividad del usuario: descargas completadas, avisos de unidades extraíbles, recordatorios de calendario — cada uno con una hora de llegada precisa.
  • Qué aplicaciones pueden notificar al usuario: la lista de gestores y sus horas de creación, incluidas aplicaciones registradas durante un incidente, y las URI de sus canales push WNS.
  • Notificaciones eliminadas: las filas descartadas o caducadas pueden sobrevivir en el espacio libre de SQLite y en imágenes de página anteriores; esta herramienta las recupera y las marca claramente.

Límites

  • Solo las notificaciones que la aplicación decidió enviar, y solo hasta que caducan o se descartan: la ausencia no prueba nada.
  • CreatedTime / ModifiedTime de los gestores se guardan como texto sin zona horaria documentada; las horas de las notificaciones (FILETIME) están en UTC.
  • La recuperación de filas eliminadas no tiene garantías: el espacio se reutiliza con el tiempo, y un registro cortado por un límite de página se marca como parcial.
  • appdb.dat no está documentado; esta herramienta lee la estructura de la versión 3 publicada por el proyecto Dissect y no nombra la aplicación de cada bloque.

Cómo adquirirla

  • Copia wpndatabase.db y wpndatabase.db-wal juntos, desde una instantánea de volumen o con KAPE (target WindowsNotificationsDB) o Velociraptor (Windows.Triage.Targets).
  • Copia todos los perfiles: cada usuario tiene su propia base.
  • Calcula el hash de los archivos y conserva los originales: nunca abras la base activa con una herramienta SQLite, que podría consolidarla y reescribirla.

Preguntas frecuentes

¿Se sube algo?

No. El parser está escrito en Rust, compilado a WebAssembly, y se ejecuta en un Web Worker de tu navegador. Los archivos nunca salen de tu equipo.

¿Necesito el archivo -wal?

Sí, siempre que exista. Windows escribe primero las notificaciones nuevas en wpndatabase.db-wal; sin él suelen faltar las más recientes. La herramienta avisa cuando se suelta una base sin su WAL.

¿Puede recuperar notificaciones eliminadas?

A menudo. SQLite deja los registros eliminados en su sitio hasta que reutiliza el espacio. El parser recorre el espacio libre, la lista de páginas libres y las imágenes de página anteriores de la base y del WAL, y muestra lo que encuentra como «Recuperada», indicando su origen.

¿Qué versiones de Windows admite?

wpndatabase.db desde Windows 10 1607 y Windows 11, y appdb.dat (versión 3) de versiones anteriores de Windows 10. La estructura de appdb.dat procede de ingeniería inversa, así que los resultados se marcan como sin garantías.

¿Las horas están en UTC?

Las horas de llegada y caducidad son valores FILETIME de Windows, en UTC. Cambia a hora local en la barra de herramientas. Las horas de creación de los gestores se guardan como texto sin zona horaria documentada y se muestran tal cual.

Qué es appdb.dat, qué versiones de Windows lo usan, cómo guarda toasts, iconos y distintivos en bloques fijos y qué se puede extraer de él.

Caso ficticio: lo que la base de notificaciones de un usuario aporta a la cronología de una intrusión: descarga, alerta antivirus, app nueva y chat borrado.

Paso a paso: abre la base de notificaciones de Windows y su -wal en un parser gratuito, prioriza hallazgos, recupera toasts borrados y exporta.