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.