Cómo analizar knowledgeC.db y Biome en el navegador
Paso a paso: cargue knowledgeC.db con su -wal y los flujos SEGB de Biome en un parser gratuito en el navegador, fije un rango, revise sesiones y exporte.
Resumen. Recolecte knowledgeC.db con su -wal y la carpeta streams de Biome, suéltelos (o un ZIP) en KnowledgeC Parser, revise la pestaña Fuentes, lea los Hallazgos, fije un rango horario y recorra Sesiones, Cronología, Apps, Web y Biome. Exporte CSV, CSV para Timesketch o JSON. El análisis se ejecuta en WebAssembly dentro de un Web Worker en su navegador; los archivos nunca se suben.
Este es el complemento práctico de la guía de análisis forense de knowledgeC.db. Para el razonamiento que hay detrás del análisis de sesiones, lea quién usaba el Mac. Los ejemplos usan el ejemplo integrado, que es sintético y ficticio: se generó para esta herramienta y no procede de un caso real. Las etiquetas de la interfaz pueden cambiar ligeramente con el tiempo; los pasos siguen siendo los mismos.
Antes de empezar
| Necesita | Por qué |
|---|---|
knowledgeC.db + -wal (+ -shm), del sistema y del usuario | Los eventos recientes a menudo solo están en el WAL |
La carpeta streams de Biome, con la estructura intacta | El nombre del flujo, local / remote y tombstone salen de la ruta |
La parte Users/<name>/ de la ruta | La herramienta atribuye los archivos a esa cuenta |
| Un navegador de escritorio actual | El análisis se ejecuta como WebAssembly en un Web Worker |
Paso 1: Recolectar los archivos
La base de datos del usuario (~/Library/Application Support/Knowledge/knowledgeC.db) y los flujos de usuario de Biome están protegidos por TCC: el proceso que recolecta necesita «Acceso total al disco». La base de datos del sistema (/private/var/db/CoreDuet/Knowledge/knowledgeC.db) está restringida por SIP; una imagen de disco suele ser la vía más limpia. Copie los archivos -wal y -shm con cada base de datos, y calcule el hash de todo.
Los comandos, las opciones de UAC y Velociraptor y sus carencias se tratan en knowledgeC.db y Biome: ubicaciones y adquisición y en la guía de recolección de la página de inicio.
Paso 2: Cargar los archivos
Abra la página de inicio de la herramienta y suelte:
- archivos sueltos (
knowledgeC.db,knowledgeC.db-wal, archivos SEGB); - una carpeta, por ejemplo una copia de
Library; - un ZIP de una recolección.
Para aprender primero la interfaz, pulse Probar un ejemplo. El espacio de trabajo pasa a pantalla completa; pulse Esc para salir.
El ejemplo es un MacBook ficticio, FIN-MBP-03, usuaria dana.whitlock: una knowledgeC.db del sistema y otra del usuario, cada una con su -wal, y archivos de Biome de App.InFocus (incluido un archivo tombstone más antiguo y un flujo sincronizado desde un iPhone), App.WebUsage, Notification.Usage, Device.Metadata y App.MenuItem, tanto en SEGB v1 como en v2.
Paso 3: Revisar la pestaña Fuentes
Antes de leer ningún evento, confirme qué se analizó:
- Cada knowledgeC.db emparejada con su
-wal. La herramienta lee la base de datos como lo haría SQLite tras aplicar el WAL, y la compara con el archivo principal solo. Se marcan las filas que existen únicamente en el WAL y las filas que el WAL eliminó. En el ejemplo, todas las filas del sistema posteriores a las 10:00 UTC del 2026-09-14 existen solo en el WAL, y el WAL elimina una fila antigua. Vea recuperación del WAL de knowledgeC. - Ámbito: base de datos del sistema o del usuario, según la ruta.
- Archivos de Biome: nombre del flujo, versión de SEGB,
local,remote/<device UUID>otombstone, número de registros por estado y fallos de CRC. - Problemas: un archivo que empieza por ceros (probablemente copiado mientras estaba bloqueado), un archivo SEGB truncado o un archivo SEGB cuyo nombre de flujo se desconoce porque se perdió la estructura de carpetas. El archivo
-shmaparece en la lista, pero no es necesario.
Paso 4: Leer los Hallazgos
La pestaña Hallazgos resume lo que destaca. Trate cada elemento como una pista: ábralo, compruebe los registros subyacentes y decida si tiene cabida en el informe. El ejemplo se construyó de modo que las pistas que merece la pena seguir son una sesión desbloqueada durante la pausa para comer, una primera aparición de Terminal, registros web de Biome eliminados y un breve desbloqueo en plena noche.
Paso 5: Fijar el rango horario
Un rango personalizado mantiene todas las pestañas centradas en la misma ventana:
| Control | Uso |
|---|---|
| Desde / Hasta | Ajuste al segundo, por ejemplo del 2026-09-14 10:00:00 a 10:55:00 UTC |
| Ajustes rápidos | Rangos rápidos |
| Alrededor de este evento | Centra el rango en un evento seleccionado |
| Franja de densidad | Muestra dónde se concentran los eventos, para detectar ráfagas y huecos |
El rango se guarda en el hash de la URL, de modo que un colega que abra el mismo enlace con los mismos archivos ve la misma ventana, y se escribe en los nombres de los archivos exportados.
Paso 6: Revisar las sesiones y la cronología
La pestaña Sesiones responde a "quién estaba ante el teclado" hasta donde los datos lo permiten: intervalos desbloqueados construidos a partir de /device/isLocked, para leerlos junto con la retroiluminación, la alimentación y el foco de apps. En el ejemplo, la sesión de 10:04:31 a 10:49:38 UTC (12:04 a 12:49 hora local) cae durante la pausa para comer de Dana. La sesión muestra actividad bajo su cuenta, no quién tecleaba; el artículo sobre el método explica los límites.
La pestaña Cronología combina los eventos de knowledgeC y de Biome. Las horas se guardan en UTC; para las filas de knowledgeC, ZSECONDSFROMGMT da el desfase local (+02:00 en el ejemplo). Los registros "en primer plano" y "fuera de primer plano" de Biome App.InFocus se emparejan en intervalos por app.
Paso 7: Revisar Apps, Web y los detalles de Biome
- Apps: foco y uso por bundle ID. En el ejemplo,
com.apple.Terminalsolo aparece dentro de la sesión del incidente. - Web: URL y dominios de
/app/webUsage,/safari/historyyApp.WebUsage, incluidosfiles.exampleytransfer.example. - Biome: una línea por flujo, almacén y origen (
local,remotecon el UUID del dispositivo,tombstone), con la versión de SEGB, el número de registros, los registros eliminados y los fallos de CRC. Haga clic en un flujo para listar sus registros; el detalle de cada uno muestra su estado, el resultado del CRC y los campos protobuf decodificados. Los flujos sin un mapa de campos público, comoApp.MenuItem, se decodifican sin esquema y conservan los números de campo en bruto (formato SEGB).
Los registros sincronizados desde el iPhone (remote/<UUID> en Biome, otro ZDEVICEID en knowledgeC) se marcan como tales. Manténgalos fuera de la actividad del Mac.
Paso 8: Exportar los resultados
| Exportación | Contenido |
|---|---|
| CSV: cronología | Eventos del rango actual |
| CSV: apps | Totales por app |
| CSV: sesiones | Sesiones desbloqueadas |
| CSV para Timesketch | Eventos en un formato que Timesketch puede importar |
| JSON | Los eventos analizados, para scripts y otras herramientas |
Guarde las exportaciones junto con los hashes de los archivos de origen. El rango incluido en cada nombre de archivo indica qué ventana cubre la exportación.
Límites que conviene tener presentes
- El significado de los campos de los payloads de Biome procede de mac_apt y de iLEAPP, no de Apple. Los campos no decodificados se quedan en bruto.
- Los registros muestran actividad bajo una cuenta en un dispositivo, no identidad.
- La retención es limitada (unas cuatro semanas en knowledgeC, alrededor de 28 días para la mayoría de los flujos de Biome según la investigación sobre iOS); mídala en cada flujo.
- Para los registros importantes, contraste con APOLLO, mac_apt o ccl-segb.
KnowledgeC Parser es un proyecto independiente, no afiliado a Apple ni respaldado por ella.