Skip to content

knowledgeC.db · -wal · Biome SEGB v1/v2

KnowledgeC Parser

Arrastra el knowledgeC.db de un Mac (con su -wal) y los streams de Biome. Apps en primer plano y en uso, sesiones de bloqueo y pantalla, actividad web y dispositivos sincronizados se convierten en una sola línea de tiempo, con una vista de «quién estaba al teclado» y hallazgos en lenguaje claro. Se analiza en tu navegador con WebAssembly; no se sube nada.

Arrastra aquí knowledgeC.db, su -wal y los streams de Biome

Archivos, una carpeta o un ZIP: knowledgeC.db con knowledgeC.db-wal (copias del sistema y del usuario), ~/Library/Biome o una colección completa de UAC / Velociraptor. Conserva la estructura de carpetas: el nombre del stream de Biome y la cuenta se obtienen de la ruta.

El ejemplo es sintético: un MacBook ficticio FIN-MBP-03 (usuario dana.whitlock) con dos bases de datos knowledgeC y nueve archivos SEGB.

Se analiza en tu navegador. No se sube nada.

Cómo obtener tus datos

Guía de adquisición completa

knowledgeC.db está en dos ubicaciones (sistema y por usuario) y funciona en modo WAL; Biome guarda una carpeta de archivos SEGB por stream. Copia las bases de datos con su -wal y las carpetas de Biome con su estructura, y luego arrástralas aquí.

  1. Copia con Acceso total al disco, UAC o Velociraptor
  2. Arrastra aquí la carpeta o el ZIP
  3. Análisis local: nada sale del navegador

En el Mac en vivo, concede primero a Terminal el «Acceso total al disco» (Ajustes del Sistema › Privacidad y seguridad › Acceso total al disco) y luego pega este bloque. Copia tu knowledgeC.db con sus -wal y -shm y tu carpeta de Biome, conservando la estructura de macOS.

zsh · Terminal (Full Disk Access)
C=~/Desktop/kc_case; U="$C/Users/$USER/Library"
mkdir -p "$U/Application Support/Knowledge"
cp -p ~/Library/Application\ Support/Knowledge/knowledgeC.db* "$U/Application Support/Knowledge/"
ditto ~/Library/Biome "$U/Biome"
(cd "$U/Application Support/Knowledge" && shasum -a 256 knowledgeC.db*) > "$C/sha256.txt"

Todo se guarda en ~/Desktop/kc_case. Arrastra esa carpeta a la página.

O comprímela para sacarla del Mac:

zsh
ditto -c -k --keepParent ~/Desktop/kc_case ~/Desktop/kc_case.zip

La copia del sistema en /private/var/db requiere root y está protegida por la Protección de la integridad del sistema: en la mayoría de los Mac falla con «Operation not permitted». No desactives SIP para obtenerla; tómala de una imagen de disco.

zsh · sudo
S=~/Desktop/kc_case/private/var/db/CoreDuet/Knowledge; mkdir -p "$S"
sudo cp -p /private/var/db/CoreDuet/Knowledge/knowledgeC.db* "$S/"

Trampas habituales

  • «Operation not permitted» significa que la app que copia no tiene Acceso total al disco (o que la ruta está protegida por SIP), no que falte el archivo.
  • Copia knowledgeC.db, -wal y -shm de una sola vez y trabaja sobre la copia: abrir el original con sqlite3 o un navegador de bases de datos puede hacer checkpoint del WAL.
  • En las versiones actuales de macOS, el primer plano de las apps se registra sobre todo en Biome (App.InFocus): un knowledgeC.db escaso es normal, no indica un borrado.
  • La retención es corta (semanas para la mayoría de los streams): recopila cuanto antes.

Qué lee esta herramienta

knowledgeC.db es la base de datos SQLite del framework CoreDuet de Apple. Registra intervalos de «pattern of life»: una app en uso o en primer plano, la pantalla encendida o bloqueada, el Mac conectado a la corriente, los dominios web visitados, las notificaciones. Cada fila de ZOBJECT pertenece a un stream como /app/usage y lleva un inicio, un fin y un desfase UTC; por eso responde a preguntas de «cuánto tiempo» y «cuándo» que las marcas de tiempo del sistema de archivos no pueden responder.

En las versiones recientes de macOS, muchos de estos streams pasaron a Biome, que guarda cada stream como archivos SEGB con registros protobuf. KnowledgeC Parser lee ambos en tu navegador: las bases de datos con su write-ahead log aplicado, y los contenedores SEGB v1 y v2 con un decodificador para los streams documentados y una vista protobuf genérica para los demás.

Artefactos y estructuras

  • knowledgeC.db (sistema: /private/var/db/CoreDuet/Knowledge/; usuario: ~/Library/Application Support/Knowledge/; iOS: /private/var/mobile/Library/CoreDuet/Knowledge/): ZOBJECT unido con ZSOURCE (bundle e ID de dispositivo) y con todas las columnas de ZSTRUCTUREDMETADATA, sea cual sea la versión.
  • knowledgeC.db-wal: se aplican los frames confirmados (con verificación de checksums y salts); se marcan las filas que solo están en el WAL y las que este elimina.
  • Biome SEGB v1 (cabecera de 56 bytes, cabeceras de registro de 32 bytes) y v2 (cabecera de 32 bytes, índice final), estados de registro (escrito, eliminado, vacío) y CRC32.
  • Streams de Biome decodificados: App.InFocus, App.WebUsage, Safari.*, ScreenTime.AppUsage, Notification.Usage, Device.Wireless.WiFi y Bluetooth, SystemSettings.SearchTerms, Device.Metadata, retroiluminación; cualquier otro stream por número de campo protobuf.
  • El tiempo absoluto de Mac (segundos desde el 2001-01-01 UTC) se convierte a UTC; ZSECONDSFROMGMT da la hora local del dispositivo.

Qué preguntas responde

  • Qué apps estaban en primer plano o en uso, cuándo y durante cuánto tiempo, incluidas las usadas por primera vez.
  • Cuándo el Mac estaba desbloqueado, con la pantalla encendida y conectado a la corriente: las sesiones en las que alguien pudo estar al teclado.
  • Qué dominios y páginas web se visitaron y desde qué app, incluidos los registros de Biome eliminados que siguen siendo legibles.
  • Qué filas proceden solo del WAL y qué filas o registros proceden de otros dispositivos de la misma cuenta de Apple.
  • Hallazgos para el triaje: actividad en la ventana del incidente, uso de Terminal, apps nuevas, sitios para compartir archivos, desbloqueos nocturnos, archivos -wal que faltan.

Limitaciones

  • Los datos muestran que el Mac estaba en uso, no quién lo usaba, y no registran nombres de archivo ni comandos.
  • El significado del contenido de Biome procede de la investigación de la comunidad (mac_apt, iLEAPP); los campos no decodificados se muestran en bruto. Valídalo con datos de prueba de la misma build del sistema.
  • No se hace carving de las páginas de la freelist, de generaciones antiguas del WAL ni del espacio no asignado: las filas eliminadas solo se recuperan cuando el WAL aún las muestra.
  • La disponibilidad de columnas y streams varía entre versiones de macOS e iOS; que falte un stream no es prueba de borrado.
  • Las colecciones muy grandes (cientos de miles de eventos) son compatibles, pero ralentizan el navegador; la tabla muestra los eventos página a página.

Cómo obtener los archivos

  • Concede a Terminal Acceso total al disco y copia ~/Library/Application Support/Knowledge/knowledgeC.db* y ~/Library/Biome conservando la estructura (consulta «Cómo obtener tus datos» más arriba).
  • Para la base de datos del sistema y /private/var/db/biome, es preferible una imagen del disco o del volumen Data antes que desactivar SIP.
  • UAC (artefactos knowledgec y biome) y Velociraptor (MacOS.Search.FileFinder con upload) los recopilan a escala; añade los archivos -wal que UAC omite.

Preguntas frecuentes

¿Se suben mis archivos?

No. El parser está escrito en Rust compilado a WebAssembly y se ejecuta en un Web Worker de tu navegador. Los archivos se leen localmente y no se envía nada a ningún servidor.

¿Por qué necesito el archivo -wal?

knowledgeC.db funciona en modo WAL: las filas nuevas se escriben primero en knowledgeC.db-wal y más tarde se copian al archivo principal. Sin el -wal, suelen faltar las últimas horas o días de eventos. La herramienta marca cada fila que solo existe en el WAL.

Mi knowledgeC.db no tiene filas /app/inFocus. ¿Lo han borrado?

Probablemente no. En las versiones actuales de macOS, el primer plano de las apps se registra sobre todo en Biome (App.InFocus). Carga también ~/Library/Biome y consulta en la pestaña Fuentes el evento más antiguo de cada stream.

¿Demuestra quién usaba el Mac?

No. Muestra cuándo el Mac estaba desbloqueado, cuándo la pantalla estaba encendida y qué apps estaban en primer plano. La atribución requiere otras pruebas, como registros de inicio de sesión, la actividad de otros dispositivos y declaraciones de testigos.

¿Qué versiones de macOS e iOS son compatibles?

Cualquier knowledgeC.db (las columnas se asocian por nombre, así que se toleran los cambios de esquema entre versiones) y tanto SEGB v1 como v2. Los streams de Biome sin un mapa de campos publicado se muestran con sus campos protobuf en bruto.

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.
Referencia byte a byte de SEGB v1 y v2 de Biome: cabeceras, trailer, estados de registro, CRC32, alineación, horas en el nombre y campos protobuf por flujo.
Dónde están knowledgeC.db y los flujos de Biome en macOS y cómo recolectarlos con Terminal, UAC, Velociraptor o una imagen de disco sin perder el WAL.