V Vant Docs

Steganography

Hidden messages in PNG images for covert communication.

⚠️ Warning: This feature is for legitimate privacy use cases. Use responsibly.

Overview

Vant can encode/decode secret messages inside PNG images using LSB (Least Significant Bit) steganography. The image looks normal to the naked eye.

Use cases:

Quick Start

Encode and decode messages in images.

# Encode a secret message
node -e "
const stego = require('./lib/stego');
stego.encode('Hello from Vant!', 'cover.png', 'output.png');
"

# Decode the message
node -e "
const stego = require('./lib/stego');
console.log(stego.decode('output.png'));
"

With Encryption

Encrypt messages with a password.

Encode with encryption:

# Encode with encryption
node -e "
const stego = require('./lib/stego');
stego.encode('secret data', 'cover.png', 'output.png', {
    encrypt: 'myPassword'
});
"

# Decode with decryption
node -e "
const stego = require('./lib/stego');
console.log(stego.decode('output.png', {
    decrypt: 'myPassword'
}));
"

CLI Commands

Use stego CLI.

Encode

Encode data into an image.

node bin/stego.js encode "message" input.png output.png
node bin/stego.js encode "secret" in.png out.png --encrypt password

Decode

Decode data from an image.

node bin/stego.js decode output.png
node bin/stego.js decode output.png --decrypt password

How It Works

Hide data in images using steganography.

LSB Encoding

Each pixel has RGB values (0-255). The last bit of each value can be changed without noticeably affecting the image:

Pixel: R=10101110 → change last bit → R=1010111[0]

Encryption

Uses AES-256-GCM:

Capacity

Image Size Approx Capacity
100x100 ~3 KB
500x500 ~75 KB
1000x1000 ~300 KB

Security Notes

Note Description
No key disclosure Password never stored in image
Random salt Same message + password = different output
Size leak Encrypted content size reveals upper bound
Detection Basic LSB is detectable by statistical analysis

Error Codes

Code Description
STEGO_001 Invalid image format
STEGO_002 Image too small
STEGO_003 Message too large for image
STEGO_004 Decryption failed
STEGO_005 Invalid password

See also: CLI Reference, Architecture