Skip to main content

PyPI version Commit CI/CD Documentation Status PyPI downloads License

sealwatch

Modern steganalysis in Python.

sealwatch is a Python package implementing modern image steganalysis algorithms, for JPEG and spatial images.

  • Analytical attacks: chi2, SPA, WS, the F5 histogram attack, and RJCA.
  • Handcrafted features: from SPAM to the rich models, with the FLD ensemble as detector, matching the Matlab reference implementations of the DDE Lab, Binghamton University.
  • Neural networks: XuNet, SRNet, Zhu-Net, UcNet, EfficientNet and PENet, with pretrained weights.
  • Fast: Rust backends for SPAM, SRM, CRM, DCTR and GFR.

Documentation: https://sealwatch.readthedocs.io

Installation

pip install sealwatch

Prebuilt wheels contain the Rust backend. Building from source, e.g., on other platforms or from a clone of the repository, requires the Rust toolchain.

Quick start

Spatial steganalysis, with the WS attack:

import numpy as np
from PIL import Image
import sealwatch as sw

# load suspicious image
x1 = np.array(Image.open("suspicious.png"))

# estimate change rate of LSB replacement
beta_hat = sw.ws.attack(x1)

JPEG steganalysis, with jpeglib to access the DCT coefficients:

import jpeglib
import sealwatch as sw

# load suspicious image
jpeg1 = jpeglib.read_dct("suspicious.jpeg")

# extract cc-JRM features, for a trained detector
features = sw.ccjrm.extract(y1=jpeg1.Y, qt=jpeg1.qt[0])
features = sw.tools.features.flatten(features)

How to train a detector is in the user guide.

Methods

Method Type Domain Paper
chi2: chi-square attack attack spatial link
SPA: sample pair analysis attack spatial link
WS: weighted stego-image attack spatial link, link
F5 histogram attack attack JPEG link
RJCA: reverse JPEG compatibility attack attack JPEG link
HCF-COM: center of mass of the histogram characteristic function features spatial link
SPAM: subtractive pixel adjacency matrix (686) features spatial link
SRM: spatial rich model (34671) features spatial link
SRMQ1: SRM with quantization 1 (12753) features spatial link
CRM: color rich model (5404) features spatial link
JRM: JPEG rich model (11255) features JPEG link
cc-JRM: cartesian-calibrated JRM (22510) features JPEG link
DCTR: discrete cosine transform residual (8000) features JPEG link
PHARM: phase-aware projection rich model (12600) features JPEG link
GFR: Gabor filter residual (17000) features JPEG link
FLD ensemble detector link
XuNet neural network spatial link
SRNet neural network spatial, JPEG link
Zhu-Net neural network spatial link
UcNet neural network color link
EfficientNet neural network JPEG link
PENet neural network color link

The number in brackets is the dimensionality of the features.

Scope

sealwatch detects steganography, for research in steganalysis. To generate stego images, see our sister project conseal.

Contributing

Contributions are welcome. Please report bugs and deviations from reference implementations as GitHub issues.

Acknowledgements

Developed by Martin Beneš and Benedikt Lorch, University of Innsbruck.

The feature extractors and the FLD ensemble match the reference author's implementations. However, it is the user's responsibility to verify this. For the differences, see compatibility.md.

sealwatch is released under the Mozilla Public License 2.0.

Metadata

Release files for sealwatch 2026.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sealwatch 2026.6
File Size Uploaded Provenance Actions
sealwatch-2026.6.tar.gz 40.1 MB Without provenance Details for sealwatch-2026.6.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for sealwatch 2026.6
File Interpreter ABI Platform Actions
sealwatch-2026.6-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details for sealwatch-2026.6-cp38-abi3-win_amd64.whl
sealwatch-2026.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details for sealwatch-2026.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
sealwatch-2026.6-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details for sealwatch-2026.6-cp38-abi3-macosx_11_0_arm64.whl

Total release size: 41.7 MB

Release files / sealwatch-2026.6.tar.gz

Download URL sealwatch-2026.6.tar.gz
Size 40.1 MB
Tags Source
SHA-256 checksum
How to use checksums
87130d73112baf6aaf715923e646e557336c8eb614670ce16ce2c58a10bd85ad
BLAKE2b-256 checksum
How to use checksums
0285abf8b275cec45ee0b3e2155bee32a7f2f73f56232899aa69b645922704d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / sealwatch-2026.6-cp38-abi3-win_amd64.whl

Download URL sealwatch-2026.6-cp38-abi3-win_amd64.whl
Size 435.5 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9f4a6d4e3eb6a136aad6e974ea27769d086101724407e79e9bc4d9d411a139e0
BLAKE2b-256 checksum
How to use checksums
0fa6437c5b4fc6fc196db85468e7c8b896b751b14853bd2de7887a7d9d5f6d60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / sealwatch-2026.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL sealwatch-2026.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 582.5 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
8c575b6284e9967a94b2e6a9cc3659d41887e2995be238e9d4b6e446c5cc9389
BLAKE2b-256 checksum
How to use checksums
cb33b5f1f5069095dc3482f289bd2dcb365e3fe811f4b6533f98dcaa0e48c3ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / sealwatch-2026.6-cp38-abi3-macosx_11_0_arm64.whl

Download URL sealwatch-2026.6-cp38-abi3-macosx_11_0_arm64.whl
Size 526.5 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
901e5212f1ffb7cf8f16226c738b403f01a45afebfe5cd9cc7432a0b42944a6e
BLAKE2b-256 checksum
How to use checksums
c262d95b05bf98caed1e094abfd62c1903dd90927d96cbb31ad030b9df9a7b73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for sealwatch 2026.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page