Skip to content

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

KnowledgeC Parser

Déposez le knowledgeC.db d'un Mac (avec son -wal) et les streams Biome. Apps au premier plan et utilisées, sessions de verrouillage et d'écran, activité web et appareils synchronisés forment une seule chronologie, avec une vue « qui était au clavier » et des constats en langage clair. Analyse dans votre navigateur en WebAssembly : rien n'est envoyé.

Déposez ici knowledgeC.db, son -wal et les streams Biome

Fichiers, dossier ou ZIP : knowledgeC.db avec knowledgeC.db-wal (copies système et utilisateur), ~/Library/Biome ou une collecte UAC / Velociraptor complète. Conservez l'arborescence : le nom du stream Biome et le compte sont déduits du chemin.

L'exemple est synthétique : un MacBook fictif FIN-MBP-03 (utilisateur dana.whitlock) avec deux bases knowledgeC et neuf fichiers SEGB.

Analysé dans votre navigateur. Rien n'est envoyé.

Comment récupérer vos données

Guide d'acquisition complet

knowledgeC.db se trouve à deux endroits (système et par utilisateur) et fonctionne en mode WAL ; Biome conserve un dossier de fichiers SEGB par stream. Copiez les bases avec leur -wal, et les dossiers Biome avec leur arborescence, puis déposez-les ici.

  1. Copier avec l'Accès complet au disque, UAC ou Velociraptor
  2. Déposer le dossier ou le ZIP ici
  3. Analyse locale : rien ne quitte le navigateur

Sur le Mac allumé, accordez d'abord l'« Accès complet au disque » à Terminal (Réglages Système › Confidentialité et sécurité › Accès complet au disque), puis collez ce bloc. Il copie votre knowledgeC.db avec ses -wal et -shm ainsi que votre dossier Biome, en conservant l'arborescence 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"

Tout est copié dans ~/Desktop/kc_case. Déposez ce dossier sur la page.

Ou compressez-le pour le sortir du Mac :

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

La copie système sous /private/var/db nécessite root et est protégée par la Protection de l'intégrité du système : sur la plupart des Mac, l'opération échoue avec « Operation not permitted ». Ne désactivez pas SIP pour l'obtenir ; récupérez-la plutôt depuis une image disque.

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/"

Pièges

  • « Operation not permitted » signifie que l'app qui copie n'a pas l'Accès complet au disque (ou que le chemin est protégé par SIP), pas que le fichier est absent.
  • Copiez knowledgeC.db, -wal et -shm en une seule fois, et travaillez sur la copie : ouvrir l'original avec sqlite3 ou un navigateur de bases peut déclencher un checkpoint du WAL.
  • Sur les versions récentes de macOS, le premier plan des apps est surtout enregistré dans Biome (App.InFocus) : un knowledgeC.db clairsemé est normal, ce n'est pas un signe d'effacement.
  • La rétention est courte (quelques semaines pour la plupart des streams) : collectez tôt.

Ce que lit cet outil

knowledgeC.db est la base SQLite du framework CoreDuet d'Apple. Elle enregistre des intervalles de « pattern of life » : une app utilisée ou au premier plan, l'écran allumé ou verrouillé, le Mac sur secteur, les domaines web visités, les notifications. Chaque ligne de ZOBJECT appartient à un stream comme /app/usage et porte un début, une fin et un décalage UTC : c'est pourquoi elle répond aux questions « combien de temps » et « quand » auxquelles les horodatages du système de fichiers ne répondent pas.

Sur les versions récentes de macOS, beaucoup de ces streams ont migré vers Biome, qui stocke chaque stream sous forme de fichiers SEGB contenant des enregistrements protobuf. KnowledgeC Parser lit les deux dans votre navigateur : les bases avec leur journal WAL appliqué, et les conteneurs SEGB v1 et v2 avec un décodeur pour les streams documentés et une vue protobuf générique pour les autres.

Artefacts et structures

  • knowledgeC.db (système : /private/var/db/CoreDuet/Knowledge/ ; utilisateur : ~/Library/Application Support/Knowledge/ ; iOS : /private/var/mobile/Library/CoreDuet/Knowledge/) : ZOBJECT joint à ZSOURCE (bundle et ID d'appareil) et à toutes les colonnes de ZSTRUCTUREDMETADATA, quelle que soit la version.
  • knowledgeC.db-wal : les frames validées sont appliquées (checksums et salts vérifiés) ; les lignes présentes uniquement dans le WAL et celles qu'il supprime sont signalées.
  • Biome SEGB v1 (en-tête de 56 octets, en-têtes d'enregistrement de 32 octets) et v2 (en-tête de 32 octets, index en fin de fichier), états des enregistrements (écrit, supprimé, vide) et CRC32.
  • Streams Biome décodés : App.InFocus, App.WebUsage, Safari.*, ScreenTime.AppUsage, Notification.Usage, Device.Wireless.WiFi et Bluetooth, SystemSettings.SearchTerms, Device.Metadata, rétroéclairage ; tout autre stream par numéro de champ protobuf.
  • Le temps absolu Mac (secondes depuis le 2001-01-01 UTC) est converti en UTC ; ZSECONDSFROMGMT donne l'heure locale de l'appareil.

Les questions auxquelles il répond

  • Quelles apps étaient au premier plan ou utilisées, quand et pendant combien de temps, y compris celles utilisées pour la première fois.
  • Quand le Mac était déverrouillé, l'écran allumé et sur secteur : les sessions pendant lesquelles quelqu'un a pu être au clavier.
  • Quels domaines et pages web ont été visités depuis quelle app, y compris les enregistrements Biome supprimés encore lisibles.
  • Quelles lignes proviennent uniquement du WAL, et quelles lignes ou enregistrements proviennent d'autres appareils du même compte Apple.
  • Des constats pour le triage : activité dans la fenêtre de l'incident, utilisation de Terminal, nouvelles apps, sites de partage de fichiers, déverrouillages nocturnes, fichiers -wal manquants.

Limites

  • Les données montrent que le Mac était utilisé, pas par qui, et n'enregistrent ni noms de fichiers ni commandes.
  • La signification des contenus Biome provient de travaux communautaires (mac_apt, iLEAPP) ; les champs non décodés sont affichés bruts. Validez sur des données de test issues du même build de l'OS.
  • Les pages de la freelist, les anciennes générations du WAL et l'espace non alloué ne font pas l'objet de carving : les lignes supprimées ne sont récupérées que là où le WAL les montre encore.
  • La disponibilité des colonnes et des streams varie selon les versions de macOS et d'iOS ; l'absence d'un stream n'est pas une preuve de suppression.
  • Les très grosses collectes (des centaines de milliers d'événements) sont prises en charge mais ralentissent le navigateur ; le tableau affiche les événements page par page.

Récupérer les fichiers

  • Accordez l'Accès complet au disque à Terminal et copiez ~/Library/Application Support/Knowledge/knowledgeC.db* et ~/Library/Biome en conservant l'arborescence (voir « Comment récupérer vos données » ci-dessus).
  • Pour la base système et /private/var/db/biome, préférez une image du disque ou du volume Data à la désactivation de SIP.
  • UAC (artefacts knowledgec et biome) et Velociraptor (MacOS.Search.FileFinder avec upload) les collectent à grande échelle ; ajoutez les fichiers -wal qu'UAC omet.

FAQ

Mes fichiers sont-ils envoyés ?

Non. Le parseur est écrit en Rust compilé en WebAssembly et s'exécute dans un Web Worker de votre navigateur. Les fichiers sont lus localement et rien n'est envoyé à un serveur.

Pourquoi ai-je besoin du fichier -wal ?

knowledgeC.db fonctionne en mode WAL : les nouvelles lignes sont d'abord écrites dans knowledgeC.db-wal puis recopiées plus tard dans le fichier principal. Sans le -wal, les dernières heures ou les derniers jours d'événements manquent souvent. L'outil signale chaque ligne qui n'existe que dans le WAL.

Mon knowledgeC.db ne contient aucune ligne /app/inFocus. A-t-il été effacé ?

Probablement pas. Sur les versions récentes de macOS, le premier plan des apps est surtout enregistré dans Biome (App.InFocus). Chargez aussi ~/Library/Biome et consultez l'onglet Sources pour l'événement le plus ancien de chaque stream.

Prouve-t-il qui utilisait le Mac ?

Non. Il montre quand le Mac était déverrouillé, quand l'écran était allumé et quelles apps étaient au premier plan. L'attribution nécessite d'autres éléments, comme les journaux de connexion, l'activité d'autres appareils et des témoignages.

Quelles versions de macOS et d'iOS sont prises en charge ?

Tout knowledgeC.db (les colonnes sont associées par leur nom, les changements de schéma entre versions sont donc tolérés) ainsi que SEGB v1 et v2. Les streams Biome sans correspondance de champs publiée sont affichés avec leurs champs protobuf bruts.

Pas à pas : charger knowledgeC.db, son -wal et les flux SEGB de Biome dans un parseur gratuit, filtrer une période, étudier les sessions et exporter.
Référence octet par octet de SEGB v1 et v2 : en-têtes, trailers, états des enregistrements, CRC32, alignement, noms de fichiers et champs protobuf par flux.
Où se trouvent knowledgeC.db et les flux Biome sous macOS, et comment les collecter avec Terminal, UAC, Velociraptor ou une image disque sans perdre le WAL.