Was dieses Tool liest
knowledgeC.db ist die SQLite-Datenbank von Apples CoreDuet-Framework. Sie erfasst „Pattern of Life“-Intervalle: eine App in Nutzung oder im Fokus, das Display an oder gesperrt, den Mac am Netzteil, besuchte Web-Domains, Mitteilungen. Jede Zeile von ZOBJECT gehört zu einem Stream wie /app/usage und hat einen Beginn, ein Ende und einen UTC-Versatz; deshalb beantwortet sie Fragen nach dem „Wie lange“ und „Wann“, die Dateisystemzeitstempel nicht beantworten können.
In neueren macOS-Versionen sind viele dieser Streams nach Biome gewandert, das jeden Stream als SEGB-Dateien mit Protobuf-Datensätzen speichert. KnowledgeC Parser liest beides in Ihrem Browser: die Datenbanken mit angewendetem Write-Ahead-Log und SEGB-Container v1 und v2 mit einem Decoder für die dokumentierten Streams und einer generischen Protobuf-Ansicht für die übrigen.
Artefakte und Strukturen
- knowledgeC.db (System: /private/var/db/CoreDuet/Knowledge/; Benutzer: ~/Library/Application Support/Knowledge/; iOS: /private/var/mobile/Library/CoreDuet/Knowledge/): ZOBJECT verknüpft mit ZSOURCE (Bundle und Geräte-ID) und allen Spalten von ZSTRUCTUREDMETADATA, unabhängig von der Version.
- knowledgeC.db-wal: Committete Frames werden angewendet (Prüfsummen und Salts werden geprüft); Zeilen, die nur in der WAL stehen, und Zeilen, die sie löscht, werden markiert.
- Biome SEGB v1 (56-Byte-Header, 32-Byte-Datensatz-Header) und v2 (32-Byte-Header, Trailer-Index), Datensatzstatus (geschrieben, gelöscht, leer) und CRC32.
- Dekodierte Biome-Streams: App.InFocus, App.WebUsage, Safari.*, ScreenTime.AppUsage, Notification.Usage, Device.Wireless.WiFi und Bluetooth, SystemSettings.SearchTerms, Device.Metadata, Backlight; jeder andere Stream nach Protobuf-Feldnummer.
- Die Mac-Absolutzeit (Sekunden seit 2001-01-01 UTC) wird in UTC umgerechnet; ZSECONDSFROMGMT liefert die Lokalzeit des Geräts.
Welche Fragen es beantwortet
- Welche Apps im Fokus oder in Nutzung waren, wann und wie lange, einschließlich erstmals genutzter Apps.
- Wann der Mac entsperrt, das Display an und der Mac am Netzteil war: die Sitzungen, in denen jemand an der Tastatur gesessen haben könnte.
- Welche Web-Domains und Seiten aus welcher App besucht wurden, einschließlich gelöschter, aber noch lesbarer Biome-Datensätze.
- Welche Zeilen nur aus der WAL stammen und welche Zeilen oder Datensätze von anderen Geräten desselben Apple Accounts kommen.
- Befunde für die Triage: Aktivität im Vorfallsfenster, Terminal-Nutzung, neue Apps, Filesharing-Websites, nächtliches Entsperren, fehlende -wal-Dateien.
Grenzen
- Die Daten zeigen, dass der Mac genutzt wurde, nicht von wem, und sie erfassen weder Dateinamen noch Befehle.
- Die Bedeutung der Biome-Nutzdaten stammt aus Community-Forschung (mac_apt, iLEAPP); nicht dekodierte Felder werden roh angezeigt. Validieren Sie mit Testdaten desselben OS-Builds.
- Freelist-Seiten, ältere WAL-Generationen und nicht zugewiesener Speicher werden nicht gecarvt: Gelöschte Zeilen werden nur wiederhergestellt, wo die WAL sie noch enthält.
- Die Verfügbarkeit von Spalten und Streams unterscheidet sich zwischen macOS- und iOS-Versionen; fehlende Streams sind kein Beweis für eine Löschung.
- Sehr große Sammlungen (Hunderttausende Ereignisse) werden unterstützt, verlangsamen aber den Browser; die Tabelle zeigt Ereignisse seitenweise.
Die Dateien beschaffen
- Geben Sie Terminal Festplattenvollzugriff und kopieren Sie ~/Library/Application Support/Knowledge/knowledgeC.db* und ~/Library/Biome unter Beibehaltung der Struktur (siehe „So kommen Sie an Ihre Daten“ oben).
- Für die Systemdatenbank und /private/var/db/biome ist ein Image des Datenträgers oder des Data-Volumes dem Deaktivieren von SIP vorzuziehen.
- UAC (Artefakte knowledgec und biome) und Velociraptor (MacOS.Search.FileFinder mit Upload) sichern sie in großem Maßstab; ergänzen Sie die -wal-Dateien, die UAC auslässt.
FAQ
Werden meine Dateien hochgeladen?
Nein. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Dateien werden lokal gelesen, und nichts wird an einen Server gesendet.
Warum brauche ich die -wal-Datei?
knowledgeC.db läuft im WAL-Modus: Neue Zeilen werden zuerst in knowledgeC.db-wal geschrieben und später in die Hauptdatei übernommen. Ohne die -wal fehlen oft die Ereignisse der letzten Stunden oder Tage. Das Tool markiert jede Zeile, die nur in der WAL existiert.
Meine knowledgeC.db hat keine /app/inFocus-Zeilen. Wurde sie gelöscht?
Wahrscheinlich nicht. In aktuellen macOS-Versionen wird der App-Fokus überwiegend in Biome (App.InFocus) erfasst. Laden Sie auch ~/Library/Biome und prüfen Sie im Tab „Quellen“ das älteste Ereignis je Stream.
Beweist es, wer den Mac benutzt hat?
Nein. Es zeigt, wann der Mac entsperrt, wann das Display an war und welche Apps im Fokus waren. Für eine Zuordnung braucht es weitere Beweise, etwa Anmeldeprotokolle, die Aktivität anderer Geräte und Zeugenaussagen.
Welche macOS- und iOS-Versionen werden unterstützt?
Jede knowledgeC.db (Spalten werden über ihren Namen zugeordnet, Schemaänderungen zwischen Versionen werden daher toleriert) sowie SEGB v1 und v2. Biome-Streams ohne veröffentlichte Feldzuordnung werden mit ihren rohen Protobuf-Feldern angezeigt.