Mozilla Firefox独自の.jsonlz4形式をデコード/解読する方法は?(sessionstore-backups / recovery.jsonlz4)


19

私は、Mozilla Firefoxの独自のファイル形式.jsonlz4(たとえばに使用されますsessionstore-backups/recovery.jsonlz4が、役に立たない)を取得しようとしています。

データ、特にクラッシュしたセッションのいくつかのテキストエリアに入力した長いテキストを取得するにはどうすればよいですか?それは私のデータです!


10
この形式をプロプライエタリとは呼びません。確かに、それはカスタムであり、Mozillaプロジェクト以外の場所では使用されませんが、Firefox全体(関連する(圧縮)コードを含む)は無料でオープンソースであるため、この形式はプロプライエタリと呼ばれるべきではありません。(PS私はブランドの話をしているわけではありません。ブランディングのライセンスは異なります。)
Ruslan

2
@Ruslanですが、実際にはプロプライエタリです。OSSが非プロプライエタリではないという理由だけで、これらのファイルのコンテンツを調べるための標準ツールがないため、他のすべてのファイル、JavaのJAR形式も簡単にできます。すべての適切なUNIXシステムのポート/パッケージで利用可能な100%標準の非独占ツールで管理されます。OTOH、これらの.jsonlz4ファイルからあなた自身のデータを実際に取り戻すことは完全に重要です。
cnst

2
JsonLZ4は悪い考えでした。
-neverMind9

回答:


19

実際に実行可能なソリューションをもたらすGoogleの結果はほとんどありませんが、https: //www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/によると、以下が最も確実に機能するようです:

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

  • Firefox内からScratchpadを開きます。

    • MacBook でfn+ Shift+ F4を使用するか、
    • またはShift+ F4
    • または、ツールWeb DeveloperScratchpadのメニューバーから
  • 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行に印刷され、1を入力すると、行が適切に分割されます(2を入力すると、無駄な余白が多くなり、ファイルのサイズが大きくなりますが、ほとんどメリットはありません)

  • クリックRunボタンを

  • ターミナルアプリfgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify内から実行


これは、LinuxのFF 72では機能しないようです。スクラッチパッドは削除されましたが、コンソールは複数行モードをサポートするようになりました。ただし、OS.File.read(...行には「ReferenceError:OS is not defined」と表示されます。
mivk

@mivkは、上記のエラーが言及されている-環境が間違っているために発生する 環境をチャンスにする方法はありませんか?
cnst

FF 72.0.1では、この「環境」設定やそれに類似したものは見つかりませんでした。
mivk

12

残念ながら、非標準ヘッダーのため、標準ツールは機能しません。それを変更するためのオープンな提案があります。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です。たとえば、パッケージはフレーム形式のみを受け入れます。

1
そもそもLZ4が必要だったのはなぜですか?LZ4は絶対に馬鹿げたアイデアです。
-neverMind9

ところで、これはUNIX®、Mac OS X、MacOS、FreeBSD、OpenBSD、NetBSDで正常にコンパイルされるlz4jsongithub.com/cnst/lz4jsonです。
cnst

5

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

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

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


2
また、これを見つけたばかりで、問題なく動作します。
lowtechsun

1

UNIX®およびUNIXライクなシステムのpkgsrcとMacPortsを、FreeBSDの、OpenBSDのか、NetBSDのを搭載したMac OS Xのように、次https://github.com/cnst/lz4json lz4jsonのフォークの外にきれいにコンパイルするのにも使用することができ例えば、Mac OS X w / MacPortsの場合:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.