উত্তর:
আমি ব্যবহার করে jsonlz4 আনপ্যাক করতে সক্ষম হয়েছিল lz4json
:
apt-get install liblz4-dev
git clone https://github.com/andikleen/lz4json.git
cd lz4json
make
./lz4jsoncat ~/.mozilla/firefox/*/bookmarkbackups/*.jsonlz4
.json.mozlz4
ফাইলগুলির জন্য যেমন: github.com/andikleen/lz4json/issues/1#issuecomment-336729026 এ দেখানো হয়েছে ( স্বতঃ দ্রষ্টব্য: মনে রাখবেন, মনে রাখবেন, gmake
ফ্রিবিএসডি তে…) for
liblz4-dev
এটি নির্মাণের আগে ইনস্টল করেছি) সংকলন করতে ব্যর্থ হয়েছিল । avih এর সরঞ্জাম, OTOH আমার জন্য পুরোপুরি কাজ করেছিল।
এই স্ক্রিপ্টটি কোনও ফাইলে সংরক্ষণ করুন, যেমন 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
করতে হয়েছিল import lz4.block as lz4
, তবে এটি এখনও কার্যকর হয়নি। কিছু বাইট বনাম স্ট্রিং সম্পর্কিত ত্রুটি। এই স্ক্রিপ্টটি আমদানি পরিবর্তনের সাথে কাজ করেছে: gist.github.com/Tblue/62ff47bef7f894e92ed5
$ pip install lz4
।
আসলে প্রায় সকল ফায়ারফক্স প্রোফাইল lz4 ফাইলই মোজলজ 4 ফাইল 4 এর অর্থ তাদের কাছে একই "ফাইল ফর্ম্যাট শিরোনাম" রয়েছে। একটি ফাইল বাদে। আমি webext.sc.lz4 ফাইল সম্পর্কে কথা বলি । এটা আছে mozJSSCLz40v001\0
ফাইল হেডার এবং হয়তো কিছু sc
বাইট প্রবাহে ফাইল এর প্যাক গ্রুপে প্যাকেজিং।
Mozlz4 পাঠ্য ফাইল mozlz4- সম্পাদনা পড়তে বা সঙ্কলনের জন্য একটি ফায়ারফক্স অ্যাডন রয়েছে
এর জন্য পর্যাপ্তভাবে অবিচলিত গুগলিং অনেকগুলি সমাধান সক্রিয় করে, তবে তাদের বেশিরভাগই হয় (ক) অন্তর্নিহিত লাইব্রেরিগুলির পরবর্তী পরিবর্তনগুলি দ্বারা বিভক্ত হয়ে পড়েছে বা (খ) অহেতুক জটিল (কমপক্ষে আমার ব্যক্তিগত স্বাদে) জটিল হয়ে পড়েছে, যার ফলে এগুলি আঁকড়ে রয়েছে making বিদ্যমান কোড মধ্যে ড্রপ।
পাইথন LZ4 বাইন্ডিংয়ের সাম্প্রতিক সংস্করণটি ব্যবহার করে নিম্নলিখিতটি কমপক্ষে পাইথন ২.7 এবং ৩.6 এ কাজ করছে বলে মনে হচ্ছে :
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
অবশ্যই এটি ইনপুটগুলি (বা আউটপুট) বৈধ করার চেষ্টা করে না, ইত্যাদি সুরক্ষিত রাখার উদ্দেশ্যে নয়, তবে কেউ যদি কেবল নিজের এফএফ ডেটা পার্স করতে সক্ষম হতে চায় তবে এটি বেসিক কাজটি সম্পন্ন করে।
এখানে কমান্ড লাইন সংস্করণ , যা সম্পর্কিত ডিরেক্টরিতে সংরক্ষণ করা যেতে পারে এবং কমান্ড লাইন থেকে এইভাবে আহবান করা যেতে পারে:
chmod +x mozlz4.py
./mozlz4.py <file you want to read> <file to save output to>