Wie kann ich das firmeneigene .jsonlz4-Format von Mozilla Firefox entschlüsseln? (sessionstore-backups / recovery.jsonlz4)


11

Ich versuche, das proprietäre Dateiformat von Mozilla Firefox in den Griff zu bekommen .jsonlz4, zum Beispiel verwendet, um sessionstore-backups/recovery.jsonlz4, aber ohne Erfolg.

Wie erhalte ich meine Daten zurück, insbesondere Langtext, den ich in einigen Textbereichen einer abgestürzten Sitzung eingegeben habe? Es sind meine Daten!


8
Ich würde das Format nicht nennen proprietär . Zugegeben, es ist benutzerdefiniert und wird nicht außerhalb von Mozilla-Projekten verwendet. Da jedoch Firefox einschließlich des relevanten (De-) Kompressionscodes kostenlos und Open Source ist, sollte dieses Format nicht als proprietär bezeichnet werden. (S. Ich spreche nicht von dem Branding, das anders lizenziert ist.)
Ruslan

@ Ruslan, aber es ist in der Tat proprietär - nur weil es OSS nicht proprietär macht, da es keine Standardwerkzeuge gibt, mit denen der Inhalt dieser Dateien überprüft werden kann, wohingegen alle anderen Dateien, sogar das JAR-Format von Java, dies problemlos können mit 100% nicht-proprietären Standardtools verwaltet werden, die in Ports / Paketen jedes anständigen UNIX-Systems verfügbar sind. OTOH, es ist absolut nicht trivial, tatsächlich Ihre eigenen Daten von diesen abzurufen .jsonlz4 Dateien.
cnst

Antworten:


10

Es gibt nur wenige Google-Ergebnisse, die tatsächlich zu praktikablen Lösungen führen https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/ scheint Folgendes am zuverlässigsten zu funktionieren:

  • im about:config, umschalten die devtools.chrome.enabled Einstellung von der Standardeinstellung von false auf einen Wert von true

  • öffnen Notizblock aus Firefox heraus:

    • entweder mit fn + Verschiebung + F4 auf einem MacBook,
    • oder Verschiebung + F4 ,
    • oder über die Menüleiste durch Werkzeuge Web-Entwickler Notizblock
  • in der Menüleiste innerhalb von Notizblock von Firefox ändern Umgebung von Inhalt zu Browser (Das Weglassen dieses Schritts würde später zu Fehlern führen wie Exception: ReferenceError: OS is not defined im nächsten Schritt)

  • Verwenden Sie Code wie den folgenden in der Notizblock von 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))
    });
    

    Der letzte Parameter zu JSON.stringify legt fest, wie viele Leerzeichen in jeder Zeile verwendet werden sollen; Wenn Sie 0 eingeben, wird das Ganze in einer einzelnen Zeile gedruckt. Wenn Sie 1 eingeben, werden die Zeilen richtig geteilt (wenn Sie 2 eingeben, wird zu viel nutzloses Leerzeichen erzeugt und die Datei wird vergrößert, ohne dass dies von Nutzen ist).

  • drücke den Run Taste

  • Lauf fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify aus dem Terminal App


6

Leider funktionieren Standardtools aufgrund eines nicht standardmäßigen Headers nicht. Da ist es ein offener Vorschlag um das zu ändern. Anscheinend wurde der Mozilla-Header entwickelt, bevor es ein Standard-LZ4-Frame-Format gab. Es schließt einen Standard-LZ4-Block ein.

Das heißt, die gleicher Fehlerbericht beinhaltet ein paar alternative Methoden. Ich werde sie kurz auflisten:

  • Verwenden Sie die dejsonlz4 Werkzeug, welches Beinhaltet binäre Builds für Windows und sollte einfach auf * nix aufzubauen sein
    • lz4json ist ein ähnliches Tool, basiert jedoch auf einer externen liblz4 und ist auf * nix etwas einfacher aufzubauen, unter Windows jedoch schwieriger (außerhalb der WSL)
  • Verwenden Sie dieses ziemlich einfache Python-Skript: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (erfordert das lz4-Paket über pip oder Ihren Paketmanager) - Das Skript scheint Python3 zu sein, ist aber trivial an Python2 anpassbar
  • Da ist ein Weberweiterung verfügbar, die diese öffnen können sollten. NB: während Quelle ist verfügbar, ich habe es nicht überprüft, und die Berechtigungen, die es anfordert, sind ein bisschen ( vor allem die Reaktion auf Bedenken )
  • Theoretisch sollten Sie die ersten 8 Bytes entfernen können (z. B. mit dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1 ) und das sollte Sie mit einem gültigen lz4-Block verlassen. Beachten Sie, dass sich dies von einem lz4 unterscheidet Rahmen . Während die meisten Programmiersprachen Bibliotheken haben, die einen Block leicht dekodieren können, ist es schwieriger, ein vorgefertigtes Werkzeug dafür zu finden, z. das liblz4-tool Paket akzeptiert nur das Frame-Format.

0

Ich konnte die URLs aus dem extrahieren {profile-dir} /sessionstore-backups/recovery.jsonlz4 Datei mit dem folgenden kostenlosen Online-Tool, das speziell für diesen Zweck entwickelt wurde:

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

Dieselbe Site bietet ein ähnliches Tool zum Entschlüsseln jsonlz4 Dateien aus dem {profile-dir} / bookmarkbackups Verzeichnis.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.