我正在尝试处理Mozilla Firefox的专有文件格式.jsonlz4
,例如用于sessionstore-backups/recovery.jsonlz4
,但无济于事。
如何获取我的数据,特别是我在崩溃会话的某些文本区域中键入的一些长文本?这是我的数据!
.jsonlz4
文件中真正取回自己的数据是完全不简单的。
我正在尝试处理Mozilla Firefox的专有文件格式.jsonlz4
,例如用于sessionstore-backups/recovery.jsonlz4
,但无济于事。
如何获取我的数据,特别是我在崩溃会话的某些文本区域中键入的一些长文本?这是我的数据!
.jsonlz4
文件中真正取回自己的数据是完全不简单的。
Answers:
几乎没有Google结果可以真正实现可行的解决方案,但是根据https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/,以下内容似乎最可靠地起作用:
在中about:config
,将devtools.chrome.enabled
设置从默认false
值切换为值true
从Firefox中打开Scratchpad:
在Firefox的Scratchpad的菜单栏中,将“ 环境”从“ 内容”更改为“ 浏览器”(省略此步骤将随后导致出现错误,如Exception: ReferenceError: OS is not defined
下一步)
在Firefox 的Scratchpad中使用以下代码:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
最后一个参数用于JSON.stringify
处理每行将使用多少个空格;放0会导致整个内容打印在一行上,放1会正确地分割行(放2会产生太多无用的空白,并增加了文件的大小,几乎没有好处)
点击Run
按钮
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
从终端应用程序中运行
OS.File.read(...
行显示:“ ReferenceError:未定义OS”。
不幸的是,由于标头非标准,标准工具将无法使用。有一个公开的提议可以改变这一点。显然,Mozilla标头是在标准的lz4帧格式存在之前设计的。它确实包装了标准的lz4块。
就是说,同一bug报告包括一些替代方法。我将简要列出它们:
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
),这将使您拥有有效的lz4块。请注意,这与lz4 帧不同。尽管大多数编程语言都具有可以轻松解码块的库,但是要找到一个预构建的工具来进行解码则比较困难,例如,liblz4-tool
程序包仅接受帧格式。我能够使用以下专门为此目的设计的免费在线工具从{profile-dir} /sessionstore-backups/recovery.jsonlz4文件中提取URL :
https://www.jeffersonscher.com/ffu/scrounger.html
同一站点提供了类似的工具,用于从{profile-dir} / bookmarkbackups目录解密jsonlz4文件。
在UNIX®和类似UNIX的系统上,例如具有MacPorts的Mac OS X,FreeBSD,OpenBSD或具有pkgsrc的NetBSD ,lz4json 的以下https://github.com/cnst/lz4json分支也可以用于从框,例如,在带有MacPorts的Mac OS X上:
sudo port install lz4
git clone https://github.com/cnst/lz4json.git
cd lz4json
make
./lz4jsoncat ~/Library/Application\ Support/Firefox/Profiles/CHANGE\
THIS.default/sessionstore-backups/recovery.jsonlz4 \
| python -m json.tool | fgrep :textarea | more