Nic*_*oul 5 sqlite blob firefox-addon indexeddb firefox-addon-webextensions
我想从 Linux bash 脚本读取由名为 FB-Purity 的特定 Firefox 附加组件存储的结构化数据。
我找到了一个名为的文件夹.mozilla/firefox/b8eab5j0.default/storage/default/moz-extension+++37a9788c-671d-4cae-ba5c-fbdb8788499a^userContextId=4294967295/,其中包含一个.metadata包含 string的文件moz-extension://37a9788c-671d-4cae-ba5c-fbdb8788499a,一个 URL 在 Firefox 中打开时会显示附加组件的详细信息,所以我很确定这个文件夹属于附加组件。
该文件夹包含一个idb目录,听起来像Indexed Database API,这是一种 W3C 标准,显然自去年以来 Firefox就使用它来存储附加组件数据。
该idb文件夹仅包含一个空文件夹和一个 SQLite 文件。
不幸的是,SQLite 文件不包含很多应用程序结构化数据,但该object_data表包含一个 95KB 的 blob,其中可能包含真正的结构化数据:
INSERT INTO `object_data` VALUES (1,'0pmegsjfoetupsf.742612367',NULL,NULL,
X'e08b0d0403000101c0f1ffe5a201000400ffff7b00220032003100380035003000320022003a002
2005300610074006f0072007500200055007205105861006e00690022002c00220036003100350036
[... 95KB ...]
00780022007d00000000000000');
Run Code Online (Sandbox Code Playgroud)
问题:知道这个 blob 的格式是什么吗?如何将其(使用命令行或任何库或 Linux 工具)提取为 JSON 或任何其他可读格式?
好吧,我今天度过了愉快的一天,并最终创建了一个 Python 工具,该工具可以从这些 indexedDB 数据库文件中读取数据并打印它们(在某些时候可能还会更多):https ://gitlab.com/ntninja/moz -idb-编辑
先回答问题的技术部分:
key(name) 和data(value) 均使用 Mozilla 专有格式,此时其唯一文档似乎是其源代码。对于所有实际意图和目的,您可以通过下载上述项目来读取任何扩展的单个存储密钥的值。基本用法是:
$ ./moz-idb-edit --extension "${EXT_ID}" --profile "${MOZ_PROFILE}" "${STORAGE_KEY}"
Run Code Online (Sandbox Code Playgroud)
${EXT_ID}扩展的静态 ID在哪里(如果不确定,请检查其manifest.json文件或查看about:support#extensions-tbody)、${MOZ_PROFILE}Firefox 配置文件目录(也在 中about:support)以及${STORAGE_KEY}您要查询的密钥的名称(不幸的是,尚不支持查询所有密钥) .
目前也不支持写入数据。
当我实现更多功能时,我会更新这个答案(或者在项目页面上给我一个问题!)。