Какой формат встроенной базы данных используется этим расширением Chrome?

Расширение Chrome FB Purity записывает свои данные в ~/.config/chromium/Default/Local Extension Settings/ncdlagniojmheiklojdcpdaeepochckl/000003.log (не файл журнала, несмотря на его имя).

Этот файл является своего рода базой данных, которая содержит среди прочего большую строку JSON. Вот начало файла, видимого в vim:

????C^@^A^A^@^@^@^@^@^@^@^A^@^@^@^A^Kfbpfirstrun)"Fri Apr 15 2016 16:59:41 
GMT+0900 (JST)"??[E7^@^A^B^@^@^@^@^@^@^@^A^@^@^@^A^Rfbplastupdatecheck^V"
1460707185929:14.7.0"??U/7^@^A^C^@^@^@^@^@^@^@^A^@^@^@^A^Ylastfriendcheck-
631501256^O"1460707180223"0?wB3^?^B^D^@^@^@^@^@^@^@^A^@^@^@^A^Xoldfriendstore-
631501256??^G"{\"27333\":\"

... с этого момента начинается большая строка JSON.
То же начало файла, что и в шестнадцатеричном формате:

C4 C4 3F 81 43 00 01 01 00 00 00 00 00 00 00 01 00
00 00 01 0B 66 62 70 66 69 72 73 74 72 75 6E 29 22
46 72 69 20 41 70 72 20 31 35 20 32 30 31 36 20 31
36 3A 35 39 3A 34 31 20 47 4D 54 2B 30 39 30 30 20
28 4A 53 54 29 22 AE B6 5B 45 37 00 01 02 00 00 00
00 00 00 00 01 00 00 00 01 12 66 62 70 6C 61 73 74
75 70 64 61 74 65 63 68 65 63 6B 16 22 31 34 36 30
37 30 37 31 38 35 39 32 39 3A 31 34 2E 37 2E 30 22
A6 C0 55 2F 37 00 01 03 00 00 00 00 00 00 00 01 00
00 00 01 19 6C 61 73 74 66 72 69 65 6E 64 63 68 65
63 6B 2D 36 33 31 35 30 31 32 35 36 0F 22 31 34 36
30 37 30 37 31 38 30 32 32 33 22 30 AC 77 42 33 7F
02 04 00 00 00 00 00 00 00 01 00 00 00 01 18 6F 6C
64 66 72 69 65 6E 64 73 74 6F 72 65 2D 36 33 31 35
30 31 32 35 36 E3 C5 07 22 7B 5C 22 32 37 33 33 33
5C 22 3A 5C 22

ВОПРОС: Что это за формат базы данных?

SQLitebrowser отказывается открывать его. Убунту file команда просто говорит data, Моя цель - извлечь первую строку JSON из этого файла. Используя последний Chromium.

2 ответа

Решение

Это LevelDB, хранилище ключей-значений.

Вы можете использовать NodeJS и levelup для доступа к данным:

var levelup = require("levelup");
var db = levelup("path/to/directory");
db.createReadStream().on("data", data => console.log(data.key, " => ", data.value));

(levelup требует установки leveldown для доступа к базам данных на диске.)

Файлы в формате LevelDB разработаны Google (проверьте домашнюю страницу проекта), а код размещен на GitHub.

Потенциально вы можете использовать leveldb-json утилита для экспорта данных, указывая на .indexeddb.leveldb Однако вам необходимо сначала создать совместимый компаратор (так как Chrome предоставляет собственную реализацию компаратора), чтобы проверить экземпляры Chrome Indexed DB leveldb, как описано в разделе Как получить доступ к файлам IndexedDB/LevelDB в Google Chrome?

Другие вопросы по тегам