如何解码/破译 Mozilla Firefox 专有 .jsonlz4 格式?(sessionstore-backups/recovery.jsonlz4)

如何解码/破译 Mozilla Firefox 专有 .jsonlz4 格式?(sessionstore-backups/recovery.jsonlz4)

我试图掌握 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目录。

相关内容