A complete Rust rewrite of zsteg with functionality almost identical to the original Ruby zsteg (missing features can be requested via issues).
Visit the Releases page to download pre-compiled binaries for your platform:
- Linux:
zsteg-rust-linux-x86_64orzsteg-rust-linux-aarch64 - macOS:
zsteg-rust-macos-x86_64orzsteg-rust-macos-aarch64(Apple Silicon) - Windows:
zsteg-rust-windows-x86_64.exe
After downloading, add execute permissions (Linux/macOS):
chmod +x zsteg-rust-*cd zsteg-rust
cargo build --release
./target/release/zsteg-rust <image.png>Basic usage is identical to the original:
# Default check
./target/release/zsteg-rust image.png
# Try all methods
./target/release/zsteg-rust -a image.png
# Extract data
./target/release/zsteg-rust -E "1b,rgb,lsb" image.png > output.bin- ✅ LSB steganography detection (PNG/BMP)
- ✅ zlib compressed data detection
- ✅ Multi-channel and bit combination scanning
- ✅ Pixel order (xy/yx/bY)
- ✅ Prime position extraction (--prime)
- ✅ file command integration
- ✅ Data deduplication and caching
- ✅ Complete CLI parameter alignment
- ✅ Fixed wbsteg decryption bug from original version
❯ ./target/release/zsteg-rust ../zsteg/samples/flower_rgb3.png
imagedata .. file: 370 XA sysV pure executable not stripped - version 768
b3,rgb,lsb,xy .. text: "SuperSecretMessage"Output is identical to the original version.
The project uses GitHub Actions for automated building and releasing:
- CI (
ci.yml): Runs tests and builds on every push to main branch or PR - Release (
release.yml): Automatically builds and releases multi-platform binaries when tags are created (e.g.,v1.0.0) - Nightly (
nightly.yml): Automatically builds latest development version daily
-
Update version number and create tag:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions will automatically:
- Build binaries for all platforms
- Generate SHA256 checksums
- Create GitHub Release
- Upload all build artifacts
- Linux x86_64 / ARM64
- macOS x86_64 / ARM64 (Apple Silicon)
- Windows x86_64