Skip to content

Glossaire

Page DLS (1SLD, 2SLD, 3SLD)

La structure en blocs des journaux FSEvents décompressés : un en-tête de 12 octets avec une signature 1SLD, 2SLD ou 3SLD, puis des enregistrements.

Une page DLS est la structure en blocs d'un fichier journal FSEvents décompressé. Chaque journal de .fseventsd est un fichier gzip ; une fois décompressé, c'est une suite de pages, et chaque page commence par un en-tête de 12 octets :

DécalageTailleChamp
04Signature : les octets ASCII 1SLD, 2SLD ou 3SLD
44Inconnu
84Taille de la page, u32 little-endian, en-tête compris

Les enregistrements se suivent sans séparation après l'en-tête, jusqu'à atteindre la taille de la page. La signature détermine leur structure : un enregistrement 1SLD est un chemin terminé par un octet NUL, suivi d'un identifiant d'événement et de flags (12 octets) ; 2SLD ajoute un node ID de 8 octets (20 octets, macOS 10.13 et versions ultérieures) ; 3SLD ajoute quatre octets de plus (24 octets, macOS 14 et versions ultérieures), dont Apple n'a pas documenté le sens. Certains articles écrivent « DLS1/DLS2 », car c'est ce qu'on lit en interprétant la signature comme un entier little-endian ; sur le disque, les octets sont bien 1SLD.

Pourquoi c'est important en investigation

La version de page indique ce que chaque enregistrement peut prouver. Sans node ID (1SLD), les renommages ne peuvent être appariés que par identifiants d'événement consécutifs. Un volume utilisé au fil de plusieurs mises à jour de macOS peut contenir plusieurs versions côte à côte. Et comme Apple ne documente pas le format, connaître les limites des pages est ce qui permet à un parseur de résister aux dégâts : une page dont la taille dépasse les données, ou des octets parasites entre deux pages, peuvent être signalés et sautés sans perdre les enregistrements voisins.

Exemple

Un en-tête qui commence par 33 53 4c 44 est une page 3SLD. Si les octets 8 à 11 valent 2c 1a 00 00, la page mesure 0x1a2c = 6 700 octets, en-tête compris. Chaque enregistrement y est un chemin, un octet NUL, puis 24 octets de champs fixes.

Termes associés

Le FSEvents Parser indique la version des pages et les éventuels dégâts de chaque fichier journal ; la structure complète est décrite dans Format de fichier FSEvents : pages 1SLD, 2SLD et 3SLD.