Metadata-Version: 2.4
Name: stegofox
Version: 0.1.1
Summary: High-performance encrypted steganography CLI — hide encrypted payloads in PNG images via LSB embedding.
License-Expression: MIT
Project-URL: Source, https://github.com/foxhackerzdevs/stegofox
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pillow>=10.0.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: pycryptodome>=3.19.0
Dynamic: license-file

# StegoFox Pro 🦊

**High-performance encrypted steganography CLI.**

Hide any file inside a PNG image using LSB (least-significant-bit) embedding, optionally encrypted with AES-256-GCM before it ever touches the pixels.

## Features
- LSB steganography — embed arbitrary binary data in a cover image's pixel data
- Optional AES-256-GCM encryption (PBKDF2-HMAC-SHA256, 100k iterations) before embedding
- Lossless PNG output — the embedding survives save/reload exactly
- Wrong-password and corrupted-payload detection fail cleanly (no crash, no garbage output)
- Capacity checking — refuses to embed data too large for the cover image, before touching anything

## Install
```bash
pip install -e .
```

## Usage

```bash
stegofox embed cover.png secret.txt -o output.png
```

```bash
# With password protection
stegofox embed cover.png secret.txt -o output.png --password hunter2
```
```
🦊 StegoFox Pro

📸 Loading cover image: cover.png
🔐 Encrypting payload...
🧬 Embedding 712 bits...
✅ Successfully embedded! Saved to output.png
```

```bash
stegofox extract output.png --password hunter2
```
```
🦊 StegoFox Pro

🔍 Analyzing output.png
🔓 Decrypting...
✅ Extracted 33 bytes
checking output messages exactly
```

```bash
# Wrong password fails cleanly, no crash
stegofox extract output.png --password wrongpass
```
```
🦊 StegoFox Pro

🔍 Analyzing output.png
🔓 Decrypting...
❌ Decryption failed. Wrong password?
```

## How it works
Each RGB channel byte of the cover image has its least-significant bit replaced with one bit of the payload. A 4-byte magic signature (`SFOX`) plus a 4-byte length header precede the payload so extraction knows exactly how much data to read back out. Output is always saved as PNG — a lossy format (JPEG, etc.) would destroy the embedded bits on save.

With `--password`, the payload is encrypted with AES-256-GCM (authenticated encryption) before embedding, so a wrong password fails the auth-tag check and returns a clean error rather than garbage bytes.

## Requirements
Python >= 3.8, `pillow`, `numpy`, `pycryptodome`.

## License
MIT
