Какой формат встроенной базы данных используется этим расширением 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?