An open API service indexing awesome lists of open source software.

https://github.com/docxology/steganographer


https://github.com/docxology/steganographer

cryptography media-verification open-source python security steganography watermarking

Last synced: about 13 hours ago
JSON representation

Awesome Lists containing this project

README

          


Steganographer Dashboard

๐Ÿ”’ Steganographer


Real-time cryptographic watermarking for video & audio โ€” built entirely in Rust


Getting Started โ€ข
Architecture โ€ข
Cryptography โ€ข
CLI Reference โ€ข
FAQ


Rust
Tests
MIT
4 crates

---

Steganographer embeds **cryptographic signatures** (BLAKE3 + Ed25519) and **visible watermarks** into live media streams using LSB steganography, QR overlays, and GStreamer pipelines. Every video frame and audio chunk is hashed, signed, and verified in real time.

๐Ÿ“น Dashboard Demo โ€” click to expand


Dashboard Demo

The three-tab dashboard: Video encoding/verification, Audio steganography, and in-app Documentation viewer.

---

## โšก Quick Start

```bash
git clone https://github.com/docxology/steganographer.git
cd steganographer
cargo build --workspace
cargo test --workspace # 132 tests, 0 failures
./run.sh # Interactive terminal menu
```

> ๐Ÿ“– Full setup guide: [**Getting Started**](docs/getting-started.md) โ€” includes prerequisites, build instructions, and first-run tutorial.

---

## ๐Ÿ—๏ธ How It Works

```text
Raw Frame/Audio โ†’ BLAKE3 Hash โ†’ Ed25519 Sign โ†’ LSB Embed โ†’ QR Overlay
โ†“ โ†“
Tamper-evident media Visible provenance
```

Every frame goes through a **four-stage pipeline**:

1. **Hash** โ€” [BLAKE3](docs/cryptography.md#blake3-hashing) computes a 256-bit digest over `frame_index โˆฅ video_bytes โˆฅ audio_bytes`
2. **Sign** โ€” [Ed25519 or Ethereum/secp256k1](docs/cryptography.md#ed25519-signing) signs the hash for tamper detection
3. **Embed** โ€” [LSB steganography](docs/algorithms.md#lsb-video-protocol) hides the 104-byte payload in pixel/sample least-significant bits
4. **Overlay** โ€” [QR code + text watermark](docs/algorithms.md#qr--info-bar-overlay) burns visible provenance into the frame

> ๐Ÿ” Deep dive: [**Cryptography**](docs/cryptography.md) ยท [**Algorithms**](docs/algorithms.md) ยท [**Steganography Theory**](docs/steganography-theory.md) ยท [**Threat Model**](docs/threat-model.md)

---

## ๐Ÿ–ฅ๏ธ Live Dashboard

A three-tab web GUI for real-time round-trip verification:

| Tab | What it does |
| ----- | ------------- |
| **Video** | Webcam โ†’ LSB encode โ†’ decode โ†’ verify (live). Controls for opacity, LSB bits, sign rate, QR scale, resolution |
| **Audio** | Microphone โ†’ PCM capture โ†’ LSB embed โ†’ extract โ†’ verify. Waveform + spectrum visualization, WAV recording |
| **Docs** | Browse all 17 project docs in-dashboard with search and navigation |

๐Ÿ”ฝ Dashboard screenshots


Video Tab
Audio Tab


Video: encode + verify + config
Audio: waveform + LSB verification


Docs Tab
QR Overlay


Docs: in-dashboard documentation
QR overlay with timestamp

```bash
# Launch the dashboard
./run.sh # select 'd' for dashboard, or 'a' for all
# Or directly:
cargo run -p steganographer-cli -- dashboard --port 8080 --backend ed25519
```

> ๐Ÿ“– Full API reference: [**API Reference**](docs/api-reference.md) โ€” all HTTP/WebSocket endpoints, JSON schemas, and configuration payloads.

---

## ๐Ÿงฉ Architecture

Four Rust crates with strict dependency layering:

```text
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ steganographer-cli (binary) โ”‚ Clap CLI: 6 subcommands
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ steganographer-dashboard (web server) โ”‚ Axum + WebSocket, 3 tabs
โ”‚ steganographer-gst (GStreamer plugin) โ”‚ AppSink/AppSrc pipeline
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ steganographer-core (algorithms) โ”‚ Pure Rust, 0 system deps
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

| Crate | Purpose | Tests | Docs |
| ------- | --------- | ------- | ------ |
| **[steganographer-core](steganographer-core/)** | Crypto, LSB, overlay, config | 114 | [Architecture](docs/architecture.md) |
| **[steganographer-dashboard](steganographer-dashboard/)** | Live web GUI | 12 | [API Reference](docs/api-reference.md) |
| **[steganographer-gst](steganographer-gst/)** | GStreamer integration | 1 | [GStreamer Guide](docs/gstreamer.md) |
| **[steganographer-cli](steganographer-cli/)** | CLI binary | 1 | [CLI Reference](docs/cli-reference.md) |

> ๐Ÿ“– Full breakdown: [**Architecture**](docs/architecture.md) โ€” crate hierarchy, module map, data flow diagrams.

---

## ๐Ÿ”‘ Crypto Design

| Component | Algorithm | Details |
| ----------- | ----------- | --------- |
| **Hashing** | BLAKE3 | Parallel 256-bit hash of `frame_index โˆฅ video_bytes โˆฅ audio_bytes` |
| **Signing** | Ed25519 | 64-byte EUF-CMA secure signature over the BLAKE3 hash |
| **Payload** | 104 bytes | `frame_index (8) + hash (32) + signature (64)` |
| **Video embed** | Length-prefixed LSB | 1โ€“4 bit replacement with 32-bit length header |
| **Audio embed** | Keyed ChaCha8 PRNG | Pseudo-random sample permutation for scatter embedding |
| **Alt signing** | Ethereum secp256k1 | EIP-191 personal_sign, MetaMask-compatible |

> ๐Ÿ“– Deep dives: [**Cryptography**](docs/cryptography.md) ยท [**Security Model**](docs/security.md) ยท [**Threat Model**](docs/threat-model.md)

---

## ๐Ÿ› ๏ธ CLI Usage

```bash
# Generate a key pair
steganographer keygen --output mykey

# Offline encode
steganographer encode --input frame.rgb --output signed.rgb --stego-type lsb_video --bits 1

# Verify
steganographer verify --input signed.rgb --public-key --stego-type lsb_video --format json

# Live video (GStreamer)
steganographer video --config steganographer.toml

# Live audio
steganographer audio --config steganographer.toml

# Dashboard
steganographer dashboard --port 8080 --backend ed25519
```

> ๐Ÿ“– All commands and options: [**CLI Reference**](docs/cli-reference.md)

---

## โš™๏ธ Configuration

Two config files, fully documented:

- [`steganographer.toml`](steganographer.toml) โ€” Master configuration (video/audio sources, signing keys, stego modules)
- [`config/example.toml`](config/example.toml) โ€” Minimal annotated example

```toml
[video]
source = "avfvideosrc"
width = 1280
height = 720

[signing]
backend = "ed25519"

[[stego.modules]]
type = "lsb_video"
bits = 2
```

> ๐Ÿ“– Full TOML schema: [**Configuration**](docs/configuration.md) โ€” all fields, template placeholders, module chains.

---

## โœ… Tests

132 tests across 4 crates โ€” all passing:

| Category | Count | Location |
| ---------- | ------- | ---------- |
| Core unit tests | 56 | `steganographer-core/src/*.rs` |
| Core integration tests | 58 | `steganographer-core/tests/integration_tests.rs` |
| Dashboard tests | 12 | `steganographer-dashboard/tests/dashboard_tests.rs` |
| GStreamer + Ethereum | 1 + 5 | Plugin skeleton + feature-gated |
| **Total** | **132** | **0 failures** |

```bash
cargo test --workspace # All 132 tests
cargo test -p steganographer-core # Core only (114 tests)
cargo test -p steganographer-dashboard # Dashboard only (12 tests)
```

---

## ๐ŸŒ Platform Support

| Platform | Video Source | Audio Source | Docs |
| ---------- | ------------- | ------------- | ------ |
| **macOS** | `avfvideosrc` | `osxaudiosrc` | [Platforms](docs/platforms.md) |
| **Linux** | `v4l2src` | `pulsesrc` / `pipewiresrc` | [Platforms](docs/platforms.md) |
| **Docker** | Headless | Headless | [Platforms](docs/platforms.md) |

> โš ๏ธ GStreamer is optional. The core crate and offline encode/verify commands work without it.

---

## ๐Ÿ“š Documentation

17 comprehensive guides in [`docs/`](docs/):

| Guide | Description |
| ------- | ------------- |
| [**Getting Started**](docs/getting-started.md) | Prerequisites, build, first-run tutorial |
| [**Architecture**](docs/architecture.md) | Crate hierarchy, module map, data flow |
| [**Cryptography**](docs/cryptography.md) | BLAKE3, Ed25519, Ethereum signing |
| [**Algorithms**](docs/algorithms.md) | LSB protocols, capacity math, QR overlay |
| [**Steganography Theory**](docs/steganography-theory.md) | Information-theoretic security foundations |
| [**Security**](docs/security.md) | Cachin's ฮต-security, deployment guidance |
| [**Threat Model**](docs/threat-model.md) | Adversary model, attack catalog, mitigations |
| [**CLI Reference**](docs/cli-reference.md) | All 6 commands with examples |
| [**API Reference**](docs/api-reference.md) | HTTP + WebSocket endpoints, JSON schemas |
| [**Configuration**](docs/configuration.md) | Full TOML schema, template variables |
| [**GStreamer**](docs/gstreamer.md) | Pipeline integration, AppSink/AppSrc |
| [**Platforms**](docs/platforms.md) | macOS, Linux, Docker setup |
| [**Contributing**](docs/contributing.md) | Dev workflow, testing, PR checklist |
| [**Roadmap**](docs/roadmap.md) | DCT-domain, ML-DSA, post-quantum plans |
| [**FAQ**](docs/faq.md) | 30+ questions and answers |

---

## ๐Ÿ“„ License

MIT โ€” see [LICENSE](LICENSE) for details.