Sometimes you need to extract something from Firefox without actually running it (as an example, I sometimes need to access stuff in firefox on a remote machine, whilst I can run firefox over a SSH tunnel with --no-remote, there's currently no way to prevent Firefox from restoring whatever tabs were previously open, other than turning it off in about:config, which is crap for day to day usage).
Firefox currently uses files of type mozlz4 (Basically a non-standard variation of lz4)
This snippet will decompress those files and print the output to stdout, so that the JSON can then be passed into something else (or grepped, etc)
#!/usr/bin/env python import sys def mozlz4_to_text(filepath): # Given the path to a "mozlz4", "jsonlz4", "baklz4" etc. file, # return the uncompressed text. try: import lz4.block as lz4 except: import lz4 bytestream = open(filepath, "rb") bytestream.read(8) # skip past the b"mozLz40\0" header valid_bytes = bytestream.read() text = lz4.decompress(valid_bytes) return text print mozlz4_to_text(sys.argv)
# Dump Bookmarks out python mozlz4.py ~/.mozilla/firefox/glg1hlff.default/bookmarkbackups/bookmarks-2019-03-20_36_bKyosvOB911kdTFoAg9zeQ\=\=.jsonlz4 # Pretty print the JSON python mozlz4.py ~/.mozilla/firefox/glg1hlff.default/bookmarkbackups/bookmarks-2019-03-20_36_bKyosvOB911kdTFoAg9zeQ\=\=.jsonlz4 | python -m "json.tool" | less # Dump out information about the last session python /tmp/mozlz4.py ~/.mozilla/firefox/glg1hlff.default/sessionstore-backups/previous.jsonlz4 | python -m "json.tool" | less # Dump out session recovery info python /tmp/mozlz4.py ~/.mozilla/firefox/glg1hlff.default/sessionstore-backups/recovery.jsonlz4 | python -m "json.tool" | less