我试图掌握 Mozilla Firefox 的专有文件格式.jsonlz4
(例如用于)sessionstore-backups/recovery.jsonlz4
,但无济于事。
我如何恢复我的数据,具体来说,我在崩溃的会话中在某些文本区域中输入的一些长文本?这是我的数据!
答案1
不幸的是,由于非标准标头,标准工具无法工作。公开的提议来改变这一点。显然,Mozilla 标头是在标准 lz4 帧格式出现之前设计的;它确实包装了标准 lz4 块。
这就是说,相同的错误报告包括一些替代方法。我将简要列出它们:
- 使用dejsonlz4工具,包括二进制构建适用于 Windows,并且应该很容易在 *nix 上构建
- lz4json是一个类似的工具,但依赖于外部 liblz4,在 *nix 上构建起来比较容易,但在 Windows 上构建起来比较难(WSL 之外)
- 使用这个相当简单的 Python 脚本:https://gist.github.com/Tblue/62ff47bef7f894e92ed5(需要通过 pip 或您的包管理器获取 lz4 包)——该脚本似乎是 python3,但可以轻松适应 python2
- 有一个网络扩展可用,应该能够打开这些。注意:虽然来源可用,我还没有验证它,它请求的权限有点令人担忧(尤其是对关切的回应)
- 理论上,你应该能够删除前 8 个字节(例如使用
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
),这样你就可以获得一个有效的 lz4 块。请注意,这与 lz4 不同框架。虽然大多数编程语言都有可以轻松解码块的库,但找到一个预先构建的工具来执行此操作更加困难,例如该liblz4-tool
包仅接受帧格式。
答案2
按照https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/,以下方法似乎最可靠:
在中
about:config
,将devtools.chrome.enabled
设置从默认值切换false
到值true
打开便笺在 Firefox 中:
- 在MacBook 上使用fn++ ,ShiftF4
- 或Shift+ F4,
- 或通过菜单栏工具→Web开发人员→便笺
在菜单栏中便笺Firefox 的更改环境从内容到浏览器(省略此步骤将导致类似
Exception: ReferenceError: OS is not defined
下一步的错误)使用如下代码便笺Firefox 的:
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 会产生太多无用的空白并增加文件大小而没有多大好处)点击跑步按钮
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
从内部运行终端应用程序
答案3
我发现以下方法有效,并在 Ubuntu 20.04 上进行了测试:
方法 1:使用来自 GitHub 的 mozlz4 二进制文件:
从以下网址下载 mozlz4 的 Linux 二进制文件https://github.com/jusw85/mozlz4.然后运行以下命令:
chmod u+x mozlz4-linux
./mozlz4-linux -x filename.jsonlz4
方法 2:使用 Ubuntu 存储库中的 lz4json 包:
Ubuntu 20.04 存储库中有一个名为 lz4json 的软件包。我尚未检查它是否存在于以前的 Ubuntu 版本中。
要安装并使用它,运行
sudo apt install lz4 lz4json
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4
上述输出将显示一个最小化的 json。为了使其可读,您可以使用“jq”json 解析器:
sudo apt install jq
# then pipe the output of the previous command through jq to make it readable:
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4 | jq
如果您只想查看 URL 列表和页面标题,您可以使用以下命令:
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4 \
| jq '.["windows"] | .[0] | .["tabs"] | .[] | .["entries"] | .[0] | .url,.title' \
| grep -v 'New Tab' | grep -v 'about:newtab' | sed 's/"http/\n"http/g'
答案4
我能够从中提取 URL{profile-dir}/sessionstore-backups/recovery.jsonlz4使用以下专门为此目的设计的免费在线工具来处理文件:
https://www.jeffersonscher.com/ffu/scrounger.html
同一网站提供了类似的解密工具jsonlz4文件来自{profile-dir}/bookmarkbackups目录。