web-dev-qa-db-ja.com

Mozilla Firefox独自の.jsonlz4フォーマットを復号化/復号化するにはどうすればいいですか? (sessionstore-backups / recovery.jsonlz4)

私はMozilla Firefoxの独自のファイルフォーマット.jsonlz4を手に入れようとしています。これは例えばsessionstore-backups/recovery.jsonlz4に使われていますが、役に立ちません。

データ、特にクラッシュしたセッションのテキスト領域に入力した長いテキストを取り戻すにはどうすればよいですか。それは私のデータです!

15
cnst

実際に実行可能な解決策をもたらすGoogleの結果はほとんどありませんが、 https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/ によると、次のサイトが最も確実に機能するようです。 :

  • about:configで、devtools.chrome.enabled設定をデフォルトのfalseから値trueに切り替えます。

  • open スクラッチパッド Firefox内から:

    • どちらでも fn+Shift+F4 MacBookの場合
    • または Shift+F4
    • またはメニューバーからツールWeb開発者スクラッチパッド
  • firefoxのScratchpad内のメニューバーで、EnvironmentからContentを---に変更してくださいブラウザ(このステップを省略すると、次のステップで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行に全部が表示され、1を入れると行が適切に分割されます(2を入れると無駄な空白が増えすぎてファイルのサイズが大きくなります)。

  • Runボタンをクリック

  • Terminalアプリ内からfgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringifyを実行します

13
cnst

残念ながら、非標準ヘッダのため、標準ツールは機能しません。それを変えるための オープンな提案 があります。どうやらMozillaのヘッダは標準のlz4フレームフォーマットが存在する前に考案されました。標準のlz4ブロックをラップします。

とは言っても、 同じバグレポート にはいくつかの代替方法があります。簡単にリストします。

  • dejsonlz4 ツールを使用します。これには Windows用のバイナリビルド が含まれています。 * nix の上に構築するのが簡単
    • lz4json も同様のツールですが、外部のliblz4に依存しているため、* nix上での構築はやや簡単ですが、Windows上(WSLの外)では困難です。
  • この非常に単純なPythonスクリプトを使用してください。 https://Gist.github.com/Tblue/62ff47bef7f894e92ed5 (pipまたはあなたのパッケージマネージャ経由のlz4パッケージが必要です) - スクリプトはpython3のように見えますが、python2には簡単に適応できます。
  • これらを開くことができるはずの利用可能な webextension があります。注: ソース は利用可能ですが、検証はしていません。要求されるアクセス権については( に少し関係があります。特に懸念への対応
  • 理論的には、あなたは最初の8バイトを取り除くことができるはずです(例えばdd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1で)そしてそれはあなたに有効なlz4ブロックを残すべきです。これはlz4フレームとは異なることに注意してください。ほとんどのプログラミング言語はブロックを簡単にデコードできるライブラリを持っていますが、それを行うためのあらかじめ作られたツールを見つけるのはもっと難しいです。 liblz4-toolパッケージはフレームフォーマットのみを受け付けます。
7
Bob

この目的のために特別に設計された次の無料のオンラインツールを使用して、{profile-dir} /sessionstore-backups/recovery.jsonlz4ファイルからURLを抽出できました。

https://www.jeffersonscher.com/ffu/scrounger.html

同じサイトが{profile-dir}/bookmarkbackupsディレクトリからjsonlz4ファイルを復号化するための同様のツールを提供しています。

1
MikeOnline