Skip to main content

pixelsteg

Hide arbitrary data inside PNG images using LSB steganography. No cloud, no accounts — pure Python.

pip install pixelsteg

Usage

# Check how much a PNG can hold
steg capacity photo.png

# Hide a file
steg hide secret.txt photo.png output.png

# Extract it
steg reveal output.png

# Write extracted data to a file
steg reveal output.png recovered.txt

# With a password (XOR encryption)
steg hide secret.txt photo.png output.png --password hunter2
steg reveal output.png --password hunter2

# Double capacity (2 bits per channel, slight quality loss)
steg hide secret.txt photo.png output.png --bits 2
steg reveal output.png --bits 2

How it works

Each pixel in a PNG has R, G, B channels (0–255). This tool replaces the least significant bit(s) of each channel with bits from your payload. A 1-bit change per channel is imperceptible to the human eye — a pixel at value 200 becoming 201 is invisible.

A small header (8 bytes: 4 magic + 4 length) is written first, then the payload follows. Optional XOR encryption scrambles the payload before writing.

Capacity: ~3 bits per pixel at 1 bit/channel. A 1000×1000 image holds ~366 KB.

Notes

  • Output must be PNG (lossless). JPEG would destroy the hidden bits.
  • Use --bits 2 for double capacity; pixels can shift by up to 3 — still very hard to see, but technically detectable with steganalysis tools.
  • The password is simple XOR — not cryptographically strong. Use it to obscure, not secure.

Metadata

Release files for pixelsteg 0.1.0

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

Source distribution (sdist)

Source distribution for pixelsteg 0.1.0
File Size Uploaded
pixelsteg-0.1.0.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pixelsteg 0.1.0
File Interpreter ABI Platform
pixelsteg-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.0 kB

Release files / pixelsteg-0.1.0.tar.gz

Download URL pixelsteg-0.1.0.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
75c936b800ec1a0f27a3c4dd0847d94dfd95358d9bb0eadc41bf28a4cd51c099
BLAKE2b-256 checksum
How to use checksums
d583033449f2ed6949a9e406e3d9e80f4e868750c40a401f3206a1b941d08820
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / pixelsteg-0.1.0-py3-none-any.whl

Download URL pixelsteg-0.1.0-py3-none-any.whl
Size 5.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e38e2be561ab95df423eee096be65def1dbc2bd29f8abd12e6ad039ab12a2a9d
BLAKE2b-256 checksum
How to use checksums
d7fc7fca664454b62df6f90e4365c6f08cfe74a882e90aba0d7a71d8e4b8104b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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