dissect.squashfs

View on GitHub

A Dissect module implementing a parser for the SquashFS file system, commonly used in appliance or device firmware.

Installation

dissect.squashfs is available on PyPI.

$ pip install dissect.squashfs

This project decompresses lzo and lz4 compressed file systems and can use the faster, native (C-based) lzo and lz4 implementations when installed, instead of the slower pure Python implementation provided by dissect.util. To use these faster implementations, install the package with the lzo and lz4 extras:

$ pip install "dissect.squashfs[lz4,lzo]"

Unfortunately there is no binary python-lzo wheel for PyPy installations on Windows, so it won’t be installed there.

This module including the lz4 and lzo extras is also automatically installed if you install the dissect package.

Usage

This package is a library with no CLI tools, so you can only interact with it from Python. For example, to print a directory listing of the root directory and read a file:

from dissect.squashfs import SquashFS

fh = open_squashfs_volume_or_file()  # i.e. using dissect.volume or open(path, "rb")

fs = SquashFS(fh)
print(fs.get("/").listdir())

file_fh = fs.get("/file.txt").open()  # This is just another file-like object
print(file_fh.read())

Reference

For more details, please refer to the API documentation of dissect.squashfs.