Криминалистический декодер двоичных кодировок семейства KV-хранилищ.
Поддерживаемые артефакты и что раскрывается:
· Redis RDB — магия "REDIS" + ASCII-версия, поля AUX (опкод 0xFA), SELECTDB (0xFE), RESIZEDB (0xFB), опкоды экспирации FD/FC, все типы значений от простых строк (int8/16/32 и сжатые LZF) до list, set, zset (ASCII- и бинарные double-оценки), hash, zipmap, ziplist, intset, quicklist v1/v2, listpack hash/zset/set (типы 16/17/18/20) с проверкой трейлера CRC-64 Jones.
· WAL LevelDB / RocksDB — блоки по 32 КиБ, 7-байтовые заголовки записей (маскированный CRC32C, длина u16, типы FULL/FIRST/MIDDLE/LAST), нулевые трейлеры.
· SSTable LevelDB / RocksDB — 48-байтовый легаси-футер (varint64 BlockHandles metaindex/index с паддингом до 40 байт + little-endian магия 0xdb4775248b80fb57 / 0x88e241b785f4cff7), префиксное сжатие блоков данных с точками перезапуска.
· Бинарный протокол Memcached — 24-байтовый заголовок (магия 0x80/0x81, опкод, разбивка key/extras/value, vbucket или статус, opaque, CAS), экстрас по опкодам вроде flags + expiry.
· BoltDB — 16-байтовый заголовок страницы и магия мета-страницы 0xed0cdaed; LMDB — флаги заголовка MDB_page (формат знаменит отсутствием магического числа).
Вставьте второй RDB-снапшот, чтобы получить diff ключевого пространства (добавленные/удалённые/изменённые ключи и сдвиг TTL) и матрицу экспирации относительно выбранного опорного времени.
RDB-путь проверен на реальных дампах redis-server 7.2.4; типы значений модулей и потоков (6/7/15/19/21) сообщаются, но не раскрываются.