Yanıtlar:
Jsonlz4 paketini kullanarak lz4json
şunları yapabildim :
apt-get install liblz4-dev
git clone https://github.com/andikleen/lz4json.git
cd lz4json
make
./lz4jsoncat ~/.mozilla/firefox/*/bookmarkbackups/*.jsonlz4
.json.mozlz4
örneğin github.com/andikleen/lz4json/issues/1#issuecomment-336729026 ( örn. Kendine not: Unutmayın, hatırlayın, gmake
FreeBSD… hakkında not edin) gibi dosyalar için de iyidir .
liblz4-dev
inşa etmeden önce . avih'in aracı OTOH, benim için mükemmel çalıştı.
Bu betiği bir dosyaya kaydedin, örneğin mozlz4
:
#!/usr/bin/env python
from sys import stdin, stdout, argv, stderr
import os
try:
import lz4.block as lz4
except ImportError:
import lz4
stdin = os.fdopen(stdin.fileno(), 'rb')
stdout = os.fdopen(stdout.fileno(), 'wb')
if argv[1:] == ['-c']:
stdout.write(b'mozLz40\0' + lz4.compress(stdin.read()))
elif argv[1:] == ['-d']:
assert stdin.read(8) == b'mozLz40\0'
stdout.write(lz4.decompress(stdin.read()))
else:
stderr.write('Usage: %s -c|-d < infile > outfile\n' % argv[0])
stderr.write('Compress or decompress Mozilla-flavor LZ4 files.\n\n')
stderr.write('Examples:\n')
stderr.write('\t%s -d < infile.json.mozlz4 > outfile.json\n' % argv[0])
stderr.write('\t%s -c < infile.json > outfile.json.mozlz4\n' % argv[0])
exit(1)
import lz4
için import lz4.block as lz4
, ama yine de işi yoktu. Bazı baytlar dize ile ilgili hata. OTOH bu senaryo içe aktarma değişikliği ile çalıştı: gist.github.com/Tblue/62ff47bef7f894e92ed5
$ pip install lz4
.
Aslında hemen hemen tüm Firefox profil lz4 dosyaları mozlz4 dosyalarıdır. Aynı "dosya formatı üstbilgisine" sahip oldukları anlamına gelir. Bir dosya dışında. Webext.sc.lz4 dosyası hakkında konuşurum . Bu sahiptir mozJSSCLz40v001\0
dosya başlığını ve belki bazı sc
bayt akışında dosyaların paket grubuna ambalajı.
Mozlz4-edit .mozlz4 metin dosyalarını okumak veya sıkıştırmak için bir Firefox eklentisi var
Bunun için yeterince ısrarcı Googling bunun için pek çok çözüm getirir, ancak bunların çoğu (a) altta yatan kütüphanelerde yapılan değişiklikler sonucu kırılmış veya (b) gereksiz yere karmaşık (en azından kişisel zevklerime göre), mevcut koda bırak.
Aşağıdakiler, Python LZ4 ciltlemelerinin en son sürümünü kullanarak, en azından Python 2.7 ve 3.6'da çalışıyor gibi görünmektedir :
def mozlz4_to_text(filepath):
# Given the path to a "mozlz4", "jsonlz4", "baklz4" etc. file,
# return the uncompressed text.
import lz4.block
bytestream = open(filepath, "rb")
bytestream.read(8) # skip past the b"mozLz40\0" header
valid_bytes = bytestream.read()
text = lz4.block.decompress(valid_bytes)
return text
Elbette bu, girişleri (veya çıkışları) doğrulamaya teşebbüs etmez, güvenli olma amacı gütmez, vb.
Buradaki komut satırı sürümü , ilgili dizine kaydedilebilir ve komut satırından şu şekilde çağrılabilir:
chmod +x mozlz4.py
./mozlz4.py <file you want to read> <file to save output to>