web-dev-qa-db-fra.com

Comment décoder / déchiffrer le format propriétaire .jsonlz4 de Mozilla Firefox? (sessionstore-backups / recovery.jsonlz4)

J'essaie de comprendre le format de fichier propriétaire .jsonlz4 de Mozilla Firefox, utilisé par exemple pour sessionstore-backups/recovery.jsonlz4, mais en vain.

Comment récupérer mes données, en particulier un long texte que j'ai tapé dans certaines zones d'une session bloquée? Ce sont mes données!

15
cnst

Peu de résultats Google aboutissent à des solutions réalisables, mais comme il est indiqué https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/ , il semble que ce qui suit fonctionne de manière très fiable. :

  • dans about:config, basculez le paramètre devtools.chrome.enabled de la valeur par défaut de false à une valeur de true

  • ouvrez Scratchpad depuis Firefox:

    • soit avec fn+Shift+F4 sur un MacBook,
    • ou Shift+F4,
    • ou par la barre de menu via Outils Développeur Web Scratchpad
  • dans la barre de menus de Bloc-notes de Firefox, modifiez la environnement. de Contenu à Navigateur ( omettre cette étape entraînerait par la suite des erreurs du type Exception: ReferenceError: OS is not defined à l'étape suivante)

  • utilisez le code suivant Scratchpad de 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))
    });
    

    Le dernier paramètre de JSON.stringify gère le nombre d'espaces utilisés à chaque ligne. mettre 0 fait que le tout soit imprimé sur une seule ligne, mettre 1 divise les lignes correctement (mettre 2 créerait trop d'espaces inutiles et augmenterait la taille du fichier sans grand bénéfice)

  • cliquez sur le bouton Run

  • lancez fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify depuis l’application Terminal

13
cnst

Malheureusement, en raison d'un en-tête non standard, les outils standard ne fonctionneront pas. Il y a une proposition ouverte pour changer cela. Apparemment, l'en-tête de Mozilla a été conçu avant l'existence d'un format de trame standard lz4; il enveloppe un bloc standard lz4.

Cela dit, le même rapport de bogue inclut quelques méthodes alternatives. Je vais les énumérer brièvement:

  • Utilisez l'outil dejsonlz4 , qui inclut les versions binaires pour Windows et devrait être facile à construire sur * nix
    • lz4json est un outil similaire, mais repose sur un liblz4 externe et est un peu plus facile à utiliser sur * nix mais plus difficile sous Windows (en dehors de WSL)
  • Utilisez ce script Python assez simple: https://Gist.github.com/Tblue/62ff47bef7f894e92ed5 (nécessite le package lz4 via pip ou votre gestionnaire de packages) - le script semble être python3 mais est trivialement adaptable à python2
  • Il existe une extension Web disponible qui devrait pouvoir les ouvrir. NB: tant que la source est disponible, je ne l’ai pas vérifiée, et les permissions demandées sont un peu préoccupantes ( en particulier la réponse aux préoccupations )
  • En théorie, vous devriez pouvoir supprimer les 8 premiers octets (par exemple avec dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1), ce qui devrait vous laisser avec un bloc lz4 valide. Notez que ceci est distinct d'un lz4 frame . Alors que la plupart des langages de programmation ont des bibliothèques qui peuvent facilement décoder un bloc, il est plus difficile de trouver un outil préconfiguré pour le faire, par exemple. le package liblz4-tool accepte uniquement le format de trame.
7
Bob

J'ai pu extraire les URL du fichier {profile-dir} /sessionstore-backups/recovery.jsonlz4 à l'aide de l'outil en ligne gratuit suivant, conçu expressément à cet effet:

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

Le même site propose un outil similaire pour décrypter les fichiers jsonlz4 du répertoire {répertoire-profil}/bookmarkbackups .

1
MikeOnline