msgstore.db (Base de Datos WhatsApp)
Base de datos SQLite donde WhatsApp almacena todos los mensajes, multimedia y metadatos en dispositivos Android. Ubicación, estructura, análisis forense y recuperación de datos eliminados.
msgstore.db - Base de Datos de WhatsApp
El archivo msgstore.db es la base de datos principal de WhatsApp en dispositivos Android donde se almacenan todos los mensajes, conversaciones, metadatos y referencias a archivos multimedia de la aplicación. Es el elemento central del análisis forense de WhatsApp.
¿Qué es msgstore.db?
msgstore.db es un archivo de base de datos SQLite (Structured Query Language Lite) que WhatsApp crea y mantiene en el almacenamiento interno del dispositivo Android. Contiene:
- Mensajes de texto: Todo el historial de conversaciones
- Metadatos: Fechas, horas, estados de entrega/lectura, IDs de mensaje
- Información de contactos: Números de teléfono, nombres, IDs de WhatsApp
- Configuración de grupos: Miembros, administradores, historial de cambios
- Referencias a multimedia: Rutas de audios, fotos, vídeos, documentos
- Mensajes eliminados: En algunos casos, en el espacio libre de la base de datos
Ubicación del Archivo
Android (sin cifrar):
/data/data/com.whatsapp/databases/msgstore.dbAndroid (cifrado - desde 2021):
/data/data/com.whatsapp/databases/msgstore.db.crypt15(Las versiones crypt14, crypt15 están cifradas con clave derivada del dispositivo)
Backups en tarjeta SD o almacenamiento:
/sdcard/WhatsApp/Databases/msgstore.db.crypt15
/sdcard/Android/media/com.whatsapp/WhatsApp/Databases/msgstore-YYYY-MM-DD.1.db.crypt15iOS (iPhone):
En iOS, WhatsApp almacena los datos en un formato diferente dentro del backup cifrado de iTunes o iCloud. No utiliza msgstore.db, sino archivos .sqlite con estructura propietaria en el sandbox de la app.
Estructura de la Base de Datos
msgstore.db es una base de datos SQLite, que consiste en múltiples tablas relacionadas:
Tablas Principales
1. messages - Tabla de mensajes
Contiene cada mensaje individual con campos:
| Campo | Descripción |
|---|---|
_id | ID único del mensaje |
key_remote_jid | ID del chat (número de teléfono o grupo) |
key_from_me | 0 (recibido) o 1 (enviado) |
data | Contenido del mensaje de texto |
timestamp | Fecha y hora en formato Unix (milisegundos) |
received_timestamp | Momento de recepción del mensaje |
media_mime_type | Tipo de archivo multimedia (image/jpeg, audio/ogg, etc.) |
media_size | Tamaño del archivo multimedia en bytes |
media_name | Nombre original del archivo |
media_url | URL de descarga (para mensajes multimedia) |
status | Estado: 0 (recibiendo), 4 (enviado), 5 (entregado), 13 (leído) |
latitude / longitude | Coordenadas de ubicaciones compartidas |
2. chat - Tabla de conversaciones
Lista de todos los chats (individuales y grupos):
| Campo | Descripción |
|---|---|
_id | ID único del chat |
jid | Identificador del chat (número o grupo) |
created_timestamp | Fecha de creación del chat |
last_message_row_id | ID del último mensaje |
archived | 0 (no archivado) o 1 (archivado) |
sort_timestamp | Último mensaje para ordenar lista |
3. group_participants - Participantes de grupos
Miembros de cada grupo:
| Campo | Descripción |
|---|---|
gjid | ID del grupo |
jid | ID del participante |
admin | 0 (miembro) o 1 (administrador) |
4. receipts - Confirmaciones de lectura
Estados de entrega y lectura de mensajes:
| Campo | Descripción |
|---|---|
key_id | ID del mensaje |
receipt_device_timestamp | Momento de lectura/entrega |
receipt_server_timestamp | Timestamp del servidor |
status | Estado confirmado |
5. message_quoted - Mensajes citados (respuestas)
Referencias a mensajes respondidos/citados.
6. message_link - Enlaces compartidos
URLs detectados automáticamente en mensajes.
Análisis Forense de msgstore.db
1. Extracción del Archivo
Método 1: Root / ADB (Android Debug Bridge)
Con permisos root o mediante ADB:
adb shell
su
cp /data/data/com.whatsapp/databases/msgstore.db /sdcard/Método 2: Herramientas Forenses Profesionales
- Cellebrite UFED: Extracción física completa
- Oxygen Forensic Detective: Backup lógico + físico
- MSAB XRY: Extracción avanzada con bypass de cifrado
Método 3: Backup local
Si hay backup en almacenamiento externo, puede extraerse directamente (requiere desencriptado si es .crypt15).
2. Descifrado (si está cifrado)
Desde WhatsApp 2.21.x, msgstore.db está cifrado con AES-256-GCM usando clave derivada del dispositivo.
Herramientas de descifrado:
whatsapp-viewer(para versiones antiguas)WhatCrypt(descifrado de crypt12-crypt15)- Scripts custom con clave extraída del
/data/data/com.whatsapp/files/key
La clave está en:
/data/data/com.whatsapp/files/key(Requiere root para acceder)
3. Apertura y Análisis
Una vez descifrado, msgstore.db puede abrirse con cualquier herramienta SQLite:
Software recomendado:
- DB Browser for SQLite (gratuito, visual)
- SQLite Expert (avanzado, con queries)
- Autopsy (framework forense completo)
- Belkasoft Evidence Center (suite forense profesional)
4. Consultas SQL Útiles
Extraer todos los mensajes de una conversación:
SELECT
datetime(timestamp/1000, 'unixepoch', 'localtime') as fecha,
CASE WHEN key_from_me = 1 THEN 'Yo' ELSE 'Otro' END as remitente,
data as mensaje
FROM messages
WHERE key_remote_jid = '[email protected]'
ORDER BY timestamp ASC;Contar mensajes por contacto:
SELECT
key_remote_jid as contacto,
COUNT(*) as total_mensajes
FROM messages
GROUP BY key_remote_jid
ORDER BY total_mensajes DESC;Buscar mensajes con palabras clave:
SELECT
datetime(timestamp/1000, 'unixepoch', 'localtime') as fecha,
key_remote_jid as contacto,
data as mensaje
FROM messages
WHERE data LIKE '%fraude%' OR data LIKE '%transferencia%'
ORDER BY timestamp DESC;Extraer mensajes multimedia:
SELECT
datetime(timestamp/1000, 'unixepoch', 'localtime') as fecha,
media_mime_type as tipo,
media_name as nombre_archivo,
media_size as tamaño,
media_url as url
FROM messages
WHERE media_mime_type IS NOT NULL
ORDER BY timestamp DESC;Recuperación de Mensajes Eliminados
¿Se pueden recuperar mensajes borrados?
Sí, en muchos casos, mediante técnicas de análisis forense:
1. WAL (Write-Ahead Log)
WhatsApp usa SQLite en modo WAL (Write-Ahead Logging), que mantiene un archivo:
msgstore.db-walEste archivo puede contener transacciones recientes, incluyendo mensajes que se borraron hace poco (minutos/horas).
2. Análisis del espacio libre (Free Space Carving)
Cuando se borra un mensaje de msgstore.db:
- El registro NO se elimina físicamente
- Solo se marca como “espacio libre” reutilizable
- Los datos permanecen hasta ser sobrescritos
Herramientas de recuperación:
- SQLite Deleted Records Parser
- Autopsy - módulo de SQLite carving
- Magnet AXIOM - recuperación de registros borrados
- Scripts Python con
sqlite3y análisis binario
3. Factores que afectan la recuperación
| Factor | Probabilidad de Éxito |
|---|---|
| Tiempo transcurrido | < 24h: Alta / > 7 días: Baja |
| Uso del dispositivo | Poco uso: Alta / Uso intenso: Baja |
| Número de mensajes nuevos | Pocos: Alta / Miles: Baja |
| Tipo de mensaje | Texto: Alta / Multimedia: Media |
4. Limitaciones
- Mensajes muy antiguos: Probablemente sobrescritos
- Multimedia grande: Referencias sobrescritas antes
- iOS: Más difícil (cifrado de backup de Apple)
Cifrado y Seguridad de msgstore.db
Cifrado en reposo (desde 2021)
WhatsApp cifra msgstore.db con AES-256-GCM para proteger los datos si el dispositivo es robado.
Clave de cifrado:
- Almacenada en
/data/data/com.whatsapp/files/key - Derivada del hardware del dispositivo (Keystore de Android)
- Cambió con cada versión: crypt12, crypt13, crypt14, crypt15
Implicación forense: Si solo tienes el archivo msgstore.db.crypt15 sin acceso al dispositivo original, no puedes descifrarlo sin la clave, que está ligada al hardware.
Cifrado en tránsito (E2E)
Los mensajes viajan cifrados de extremo a extremo (Signal Protocol), pero una vez recibidos, se descifran y almacenan en msgstore.db sin cifrado interno (solo cifrado del archivo).
Importante: El cifrado E2E protege el tránsito, pero no evita el análisis forense del dispositivo receptor.
Backups de msgstore.db
WhatsApp realiza backups automáticos diarios (configurable):
Android - Backup local:
/sdcard/WhatsApp/Databases/msgstore-YYYY-MM-DD.1.db.crypt15Guarda los últimos 7 backups diarios.
Android - Backup en Google Drive:
- Sube copia cifrada a Google Drive
- Recuperable con cuenta de Google asociada
- Útil para análisis forense si el dispositivo no está disponible
iOS - Backup en iCloud:
- Integrado en backup de iCloud (cifrado)
- Recuperable con credenciales de Apple ID
- Requiere tools específicas de extracción de backup iOS
Peritaje Forense de msgstore.db
Proceso pericial completo:
1. Adquisición forense
- Extracción del dispositivo con herramientas certificadas
- Cálculo de hash SHA-256 del archivo original
- Documentación de cadena de custodia
2. Descifrado (si aplica)
- Extracción de la clave de cifrado del dispositivo
- Descifrado de msgstore.db.crypt15 a .db
- Verificación de integridad post-descifrado
3. Análisis de la base de datos
- Apertura en software forense (Autopsy, Belkasoft, Oxygen)
- Consultas SQL para extraer conversaciones relevantes
- Análisis de metadatos (timestamps, estados, participantes)
- Recuperación de mensajes eliminados del espacio libre
4. Exportación de evidencias
- Transcripciones de conversaciones en formato legible
- Extracción de multimedia con metadatos
- Timeline cronológico de comunicaciones
- Tablas con metadatos técnicos (IDs, fechas, estados)
5. Informe pericial
- Metodología técnica detallada
- Hash de integridad
- Evidencias encontradas
- Conclusiones sobre autenticidad e integridad
- Anexos con capturas verificadas
Metadatos Forenses en msgstore.db
Información técnica relevante para peritaje:
| Metadato | Utilidad Forense |
|---|---|
timestamp | Momento exacto del envío/recepción |
status | Enviado, entregado, leído (prueba de conocimiento) |
key_from_me | Identifica quién envió el mensaje |
_id | ID único para rastreo y verificación |
media_hash | Hash del archivo multimedia (integridad) |
receipts | Confirmaciones de lectura con timestamps |
latitude/longitude | Ubicación exacta si se compartió localización |
group_participants | Quién estaba en el grupo y cuándo |
Detección de manipulación:
Indicadores de que msgstore.db fue alterado:
- Inconsistencias en IDs secuenciales
- Timestamps fuera de orden lógico
- Ausencia de registros en tablas relacionadas (messages sin chat correspondiente)
- Hash del archivo no coincide con el original
- Modificación de
statussin registro enreceipts
Herramientas para Análisis de msgstore.db
Gratuitas / Open Source:
- DB Browser for SQLite: Interfaz gráfica para explorar SQLite
- Autopsy + SQLite Plugin: Framework forense completo
- WhatsApp Viewer (antiguo): Para versiones sin cifrar
- SQLite Expert Personal: Análisis avanzado
Profesionales (Forenses):
- Cellebrite Physical Analyzer: Extracción y análisis completo
- Oxygen Forensic Detective: Suite forense de móviles
- Magnet AXIOM: Recuperación avanzada de eliminados
- Belkasoft Evidence Center: Análisis multi-fuente
- MSAB XRY: Plataforma forense móvil
Scripts Python Custom:
Para análisis específicos, se pueden crear scripts Python con:
sqlite3(librería estándar)pandas(manipulación de datos)matplotlib(visualizaciones de timeline)
Casos de Uso del Análisis de msgstore.db
1. Procedimientos penales
- Amenazas: Certificar mensajes amenazantes con timestamps exactos
- Estafas: Rastrear conversaciones de coordinación de fraude
- Acoso: Documentar patrón reiterado con cronología precisa
2. Procedimientos civiles
- Divorcios: Probar infidelidad o incumplimientos de custodia
- Contratos: Demostrar acuerdos verbales documentados en WhatsApp
- Laboral: Evidenciar despidos improcedentes o mobbing
3. Investigaciones corporativas
- Fuga de información: Rastrear filtraciones vía WhatsApp corporativo
- Competencia desleal: Captación ilegal de clientes
- Fraudes internos: Coordinación de actividades fraudulentas
Preguntas Frecuentes sobre msgstore.db
¿Puedo acceder a msgstore.db sin root?
En versiones modernas de Android (desde Android 6+), necesitas root o herramientas forenses profesionales para acceder a /data/data/com.whatsapp/. Sin root, solo puedes trabajar con backups en almacenamiento externo o Google Drive.
¿Es legal acceder a msgstore.db de otra persona?
Solo es legal si:
- Tienes consentimiento del titular del dispositivo
- Eres el propietario del dispositivo
- Tienes orden judicial
Acceder sin consentimiento vulnera el art. 197 CP (descubrimiento y revelación de secretos).
¿Los mensajes se guardan para siempre en msgstore.db?
Sí, WhatsApp NO elimina automáticamente mensajes antiguos. Los mensajes permanecen hasta que:
- El usuario los borra manualmente
- Se reinstala WhatsApp sin restaurar backup
- Se formatea el dispositivo
¿Qué pasa si WhatsApp se actualiza?
La estructura básica de msgstore.db es bastante estable, aunque pueden agregarse nuevas tablas/campos en actualizaciones. Las herramientas forenses profesionales se actualizan para soportar nuevas versiones.
¿msgstore.db contiene los archivos multimedia?
No, solo contiene referencias (rutas, URLs, hashes) a los archivos multimedia, que se almacenan en:
/sdcard/WhatsApp/Media/WhatsApp Images/
/sdcard/WhatsApp/Media/WhatsApp Audio/
/sdcard/WhatsApp/Media/WhatsApp Video/Servicios Relacionados
- Certificación de WhatsApp - Peritaje completo de WhatsApp
- Recuperación de Datos - Mensajes eliminados
- Análisis Forense Digital - Análisis de dispositivos
- WhatsApp Forense - Concepto general
Referencias Técnicas
- SQLite File Format: https://www.sqlite.org/fileformat.html
- WhatsApp Encryption Overview: https://www.whatsapp.com/security/
- Android Debug Bridge (ADB) User Guide: https://developer.android.com/tools/adb
- NIST SP 800-101: Guidelines on Mobile Device Forensics
Última actualización: Enero 2026
Nota técnica: La información sobre estructura de msgstore.db puede variar ligeramente entre versiones de WhatsApp. Este artículo refleja el estado en enero de 2026 con WhatsApp versión 2.24.x.
¿Necesitas un peritaje forense?
Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.
Solicitar Consulta Gratuita
