backhand
Library and binaries for the reading, creating, and modification of SquashFS file systems.
| :warning: WARNING |
|---|
| The API for this library isn't complete. I will most likely break this for improvements |
Library
Add the following to your Cargo.toml file:
[]
= "0.7.0"
Reading/Writing/Modifying Firmware
use File;
use ;
// read
let file = open.unwrap;
let mut filesystem = from_reader.unwrap;
// add file with data from slice
let d = default;
let bytes = &mut b"Fear is the mind-killer.".as_slice;
filesystem.push_file;
// add file with data from file
let mut new_file = open.unwrap;
filesystem.push_file;
// modify file
let file = filesystem.mut_file.unwrap;
file.bytes = b"The sleeper must awaken.\n".to_vec;
// write
let bytes = filesystem.to_bytes.unwrap;
Testing
This library is tested with unpacking and packing SquashFS firmwares and testing that result with unsquashfs.
openwrt binaries are primarily being tested.
Binaries
These are currently under development and are missing features, MR's welcome!
To install, run cargo install backhand.
unsquashfs
tool to uncompress, extract and list squashfs filesystems
Usage: unsquashfs [OPTIONS] <FILESYSTEM>
Arguments:
<FILESYSTEM> Squashfs file
Options:
-o, --offset <BYTES> Skip BYTES at the start of FILESYSTEM [default: 0]
-l, --list List filesystem, do not write to DEST
-d, --dest <PATHNAME> Extract to [PATHNAME] [default: squashfs-root]
-h, --help Print help information
-V, --version Print version information
add
tool to add files to squashfs filesystems
Usage: add <FILESYSTEM> <FILE> <FILE_PATH>
Arguments:
<FILESYSTEM> Squashfs file
<FILE>
<FILE_PATH>
Options:
-h, --help Print help information
-V, --version Print version information