Un décodeur forensique des encodages binaires de la famille des magasins KV.
Artefacts pris en charge et contenu développé :
· Redis RDB — magie "REDIS" + version ASCII, champs AUX (opcode 0xFA), SELECTDB (0xFE), RESIZEDB (0xFB), opcodes d’expiration FD/FC, tous les types de valeurs, des chaînes simples (int8/16/32 et compressées LZF) jusqu’à list, set, zset (scores ASCII et doubles binaires), hash, zipmap, ziplist, intset, quicklist v1 et v2, listpack hash/zset/set (types 16/17/18/20), avec vérification de la trame CRC-64 Jones.
· WAL LevelDB / RocksDB — blocs de 32 Kio, en-têtes d’enregistrement de 7 octets (CRC32C masqué, longueur u16, types FULL/FIRST/MIDDLE/LAST), trailers à zéro.
· SSTable LevelDB / RocksDB — footer hérité de 48 octets (BlockHandles metaindex/index en varint64 complétés à 40 octets + magic little-endian 0xdb4775248b80fb57 / 0x88e241b785f4cff7), compression par préfixe avec points de redémarrage.
· Protocole binaire Memcached — en-tête de 24 octets (magie 0x80/0x81, opcode, répartition key/extras/value, vbucket ou statut, opaque, CAS), extras par opcode tels que flags + expiration.
· BoltDB — en-tête de page de 16 octets et magic de méta-page 0xed0cdaed ; LMDB — drapeaux d’en-tête MDB_page (le format est célèbre pour n’avoir aucun nombre magique).
Collez un second instantané RDB pour obtenir un diff du keyspace (clés ajoutées/supprimées/modifiées/TTL décalé) et une matrice d’expiration TTL évaluée au temps de référence choisi.
Le chemin RDB est vérifié contre de vraux dumps redis-server 7.2.4 ; les types de valeurs modules et streams (6/7/15/19/21) sont signalés mais non développés.