Mozilla Firefox'a özel .jsonlz4 biçimini nasıl çözebilir / deşifre edebilirsiniz? (Sessionstore-yedekleme / recovery.jsonlz4)


19

Mozilla Firefox'un .jsonlz4, örneğin, için kullanılan sessionstore-backups/recovery.jsonlz4, ancak boşuna kullanılan özel dosya biçimini ele almaya çalışıyorum .

Verilerimi, özellikle çökmüş bir oturumun bazı metinlerinde yazdığım uzun metinleri nasıl geri alabilirim? Bu benim verilerim!


11
Biçime özel olarak adlandırmazdım . Kabul edilir, bu özeldir, Mozilla projelerinin dışında hiçbir yerde kullanılmaz, ancak ilgili (de) sıkıştırma kodu dahil olmak üzere tüm Firefox ücretsiz ve açık kaynak olduğundan, bu biçim özel olarak adlandırılmamalıdır. (PS Farklı lisanslanan
Ruslan

2
@Ruslan, ama aslında tescilli - sadece OSS'nin tescilli olmaması nedeniyle, bu dosyaların içeriğine bakmak için sıfır standart araç olduğundan, diğer tüm dosyalar, hatta Java'nın JAR formatı bile kolayca her iyi UNIX sisteminin portlarında / paketlerinde bulunan% 100 standart tescilli olmayan araçlarla yönetilebilir. OTOH, bu .jsonlz4dosyalardan kendi verilerinizi geri almak tamamen önemsizdir .
cnst

2
JsonLZ4 kötü bir fikirdi.
neverMind9

Yanıtlar:


19

Gerçekte yapılabilir çözümlerle sonuçlanan az sayıda Google sonucu vardır, ancak https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/ uyarınca , aşağıdakilerin en güvenilir şekilde çalıştığı görülmektedir:

  • içinde about:config, devtools.chrome.enabledayarı varsayılan falsedeğerindentrue

  • Scratchpad'i Firefox içinden açın :

    • biriyle fn+ Shift+ F4bir MacBook,
    • veya Shift+ F4,
    • veya menü çubuğu aracılığıyla AraçlarWeb GeliştiricisiScratchpad
  • içinde menü çubuğunda Scratchpad'den Firefox'un, değiştirmek Çevre gelen İçeriğine için Tarayıcı (bu adımı atlayarak sonradan gibi hatalara neden olur Exception: ReferenceError: OS is not definedsonraki adımda)

  • Firefox'un Scratchpad'inde aşağıdaki gibi bir kod kullanın :

    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.stringifyHer satırda kaç boşluk kullanılacağını belirleyen son parametre ; 0 koymak, her şeyin tek bir satıra yazdırılmasına neden olur, 1 koymak satırları düzgün bir şekilde böler (2 koymak çok fazla yararsız boşluk yaratır ve dosyanın boyutunu küçük faydalar için artırır)

  • Runbutona tıkla

  • Terminal uygulaması fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringifyiçinden çalıştır


Bu, Linux'ta FF 72'de çalışmıyor gibi görünüyor. Scratchpad kaldırıldı, ancak Konsol artık çok satırlı modu destekliyor. Ancak, OS.File.read(...satır şunu verir: "ReferenceError: OS tanımlı değil".
mivk

Bu hata yukarıda belirtildiği gibi - yanlış ortam nedeniyle olur; çevreyi şansa sokmanın bir yolu yok mu?
cnst

Bu "Ortam" ayarını veya FF 72.0.1'de benzer bir şey bulamadım.
mivk

12

Ne yazık ki, standart olmayan bir başlık nedeniyle standart araçlar çalışmaz. Bunu değiştirmek için açık bir teklif var. Görünüşe göre Mozilla başlığı standart bir lz4 çerçeve formatı bulunmadan önce tasarlandı; standart bir lz4 bloğunu sarar.

Bununla birlikte, aynı hata raporu birkaç alternatif yöntem içerir. Kısaca listeleyeceğim:

  • Windows için ikili derlemeler içeren ve * nix üzerine derlemesi kolay olan dejsonlz4 aracını kullanın
    • lz4json benzer bir araçtır, ancak harici bir liblz4'e dayanır ve * nix üzerine inşa etmek biraz daha kolaydır, ancak Windows'ta (WSL dışında) daha kolaydır
  • Bu oldukça basit Python komut dosyasını kullanın: https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (pip veya paket yöneticiniz aracılığıyla lz4 paketini gerektirir) - komut dosyası python3 gibi görünüyor, ancak python2 için önemsiz bir şekilde uyarlanabilir
  • Bunları açabilecek bir web uzantısı var. Not: kaynak varken , doğrulamamıştım ve istediği izinler biraz ilgili ( özellikle endişelere cevap )
  • Teorik olarak, ilk 8 baytı (örneğin ile dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1) şeritleyebilmelisiniz ve bu sizi geçerli bir lz4 bloğu ile bırakmalıdır. Bunun bir lz4 çerçevesinden farklı olduğunu unutmayın . Çoğu programlama dili, bir bloğu kolayca çözebilen kitaplıklara sahip olsa da, bunu yapmak için önceden oluşturulmuş bir araç bulmak daha zordur, örneğin liblz4-toolpaket yalnızca çerçeve biçimini kabul eder.

1
LZ4 neden ilk etapta gerekliydi? LZ4 kesinlikle moronik bir fikir.
neverMind9

BTW, UNIX®, Mac OS X, MacOS, FreeBSD, OpenBSD ve NetBSD üzerinde temiz bir şekilde derlenen lz4json - github.com/cnst/lz4json .
cnst

5

Bu amaçla açıkça tasarlanmış aşağıdaki ücretsiz çevrimiçi aracı kullanarak URL'leri {profile-dir} /sessionstore-backups/recovery.jsonlz4 dosyasından çıkarabildim :

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

Aynı site , {profile-dir} / bookmarkbackups dizininden jsonlz4 dosyalarının şifresini çözmek için benzer bir araç sunar .


2
Ayrıca sadece buldum, kusursuz çalışıyor.
lowtechsun

1

On UNIX® ve UNIX benzeri sistemlerde pkgsrc aşağıdaki ile Mac OS MacPorts ile X, FreeBSD, OpenBSD ya NetBSD gibi https://github.com/cnst/lz4json çatal lz4json da temiz üzerinden derlemek için kullanılabilir örneğin MacPorts'lu Mac OS X'te:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.