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!
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:
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
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:
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.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 .