Skip to content

Hide anything inside images, or create wild dual-format polyglot files โ€” all in a slick React + Flask app. ๐Ÿ”โœจ

Notifications You must be signed in to change notification settings

Mrtracker-new/InvisioVault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

91 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ”’ InvisioVault

InvisioVault Logo

Hide your secrets like a pro! InvisioVault lets you stash files inside images using steganography, OR create mind-bending polyglot files that work as TWO formats at once. It's like magic, but with more React and Flask. โœจ

License Python React


โœจ What Can It Do?

๐Ÿ–ผ๏ธ Steganography Mode

Hide files inside images using LSB steganography. Your image looks normal, but it's secretly carrying secret cargo!

  • Hide Files or Text - Upload a file OR just type your secrets directly
  • Password Protection - Encrypt your hidden data (trust no one ๐Ÿ”)
  • Auto Compression - We squeeze files to fit better
  • Smart Capacity Calculator - Know before you go! Real-time indicator shows if your file will fit
  • Any File Type - PDFs, videos, memes... we don't judge

๐Ÿ”— Polyglot Mode

Create files that work as TWO formats at once. Open it as an image? Image. Rename to .zip? BAM, hidden files!

  • Any Format Combination - Images, PDFs, videos, whatever + whatever
  • AES-256 Encryption - Password protection with military-grade security
  • Carrier Stays Functional - Your original file works perfectly
  • Zero Manual Work - We handle compression and polyglot creation automatically

๐Ÿ“ฑ QR Code Steganography โœจ NEW!

Generate QR codes with hidden secret messages that only InvisioVault can read!

  • Dual-Purpose QR Codes - Normal scanners see your public URL, InvisioVault sees the hidden message
  • Camera Scanning - Scan QR codes directly with your webcam (no upload needed!)
  • URL Fragment Encoding - Hidden data survives screenshots, photos, and re-encoding
  • Password Protection - Encrypt your hidden messages with AES-256
  • Custom Styling - Choose colors, add logos, full customization
  • Smart Detection - Enhanced image processing for 80%+ detection rate
  • Works Everywhere - Compatible with all QR scanners AND InvisioVault extraction

๐ŸŽฏ The Nice-to-Haves

  • ๐ŸŒ™ Dark Mode - Because we respect your retinas
  • ๐Ÿ‘๏ธ Password Toggle - See what you're typing (or hide from shoulder surfers)
  • ๏ฟฝ Capacity Analysis - Color-coded progress bars show exactly how much space you're using
  • ๏ฟฝ๐Ÿ“ฑ Responsive - Works on phones, tablets, whatever
  • ๐Ÿš€ RESTful API - Integrate into your own projects

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.8+
  • Node.js 16+

Easy Mode (Windows)

Just run the run.bat file. It'll start both servers in separate windows!

Manual Setup

Backend:

cd backend
python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # Mac/Linux
pip install -r requirements.txt
cp .env.example .env
python app.py

Backend runs on http://localhost:5000

Frontend:

cd frontend
npm install
cp .env.example .env
npm run dev

Frontend runs on http://localhost:5173


๐ŸŽฏ How to Use

Hiding Files in Images

  1. Pick Steganography mode
  2. Choose an image (your innocent cover)
  3. Upload a file OR type text
  4. Optional: Add password for extra security
  5. Check the capacity indicator - it'll tell you if it fits!
  6. Click "Hide File"
  7. Download your suspiciously-normal-looking image

Creating Polyglot Files

  1. Pick Polyglot mode
  2. Upload carrier file (any format!)
  3. Upload file to hide (any format!)
  4. Optional: Add password
  5. Click create
  6. Download your brain-melting dual-format file
  7. Open normally = carrier works. Rename to .zip = hidden file appears!

Creating QR Codes with Hidden Messages

  1. Pick QR Code mode
  2. Generate tab:
    • Enter public data (URL, text, contact info, etc.)
    • Enter your secret hidden message
    • Optional: Add password for encryption
    • Optional: Customize colors and add logo
    • Click "Generate QR Code"
  3. Download your QR code
  4. Test it:
    • Scan with phone camera โ†’ Opens public URL โœ…
    • Scan with InvisioVault โ†’ Reveals hidden message โœ…

Scanning QR Codes (Extract Hidden Data)

  1. Pick QR Code mode โ†’ Scan & Extract tab
  2. Option 1 - Camera Scan:
    • Click "Start Camera Scan"
    • Point camera at QR code
    • Automatic detection + extraction
  3. Option 2 - Upload:
    • Click "Upload QR Image"
    • Select QR code image
  4. If password-protected, enter password
  5. See both public data AND hidden secret message!

๐Ÿ› ๏ธ Tech Stack

Backend: Flask, Pillow, Cryptography, Pyzipper, Segno (QR), Pyzbar (QR scanning)
Frontend: React, Vite, Axios
Special Sauce: LSB Steganography, AES-256 Encryption, URL Fragment Encoding


๐Ÿ”’ Security Features

  • โœ… File validation (no sneaky stuff)
  • โœ… Size limits (64 MB max)
  • โœ… Rate limiting (100 req/hour - we bumped it for the capacity calculator!)
  • โœ… Password encryption (Fernet + AES-256)
  • โœ… Auto cleanup (we're tidy)
  • โœ… Path traversal prevention

๐Ÿ’ก Feature Highlights

Interactive Capacity Calculator

Our real-time calculator shows you before hiding if your file will fit!

  • ๐Ÿ“ˆ Visual progress bar with color coding
  • โœ… Green: "File will fit comfortably"
  • ๐ŸŸก Yellow: "High capacity, but you're good"
  • ๐Ÿ”ด Red: "Nope, too big buddy"
  • ๐Ÿงฎ Shows exact sizes and percentages
  • โšก Smart debouncing (500ms) to prevent API spam

No more trial-and-error! The calculator tells you upfront if your secret will fit in your carrier.

QR Code Steganography - How It Works

The Magic Behind the Scenes:

When you generate a QR code with InvisioVault, we use URL fragment encoding to hide your secret:

Public QR Data: https://yourwebsite.com/#IVDATA:encrypted_secret_here

Why This Works:

  • ๐Ÿ“ฑ Normal Scanners: See the URL, open browser, fragments (#) are ignored by browsers โ†’ Your website loads perfectly
  • ๐Ÿ” InvisioVault: Reads the full QR data including the fragment โ†’ Decrypts and displays your hidden message
  • ๐Ÿ›ก๏ธ Robust: Survives photos, screenshots, compression, anything! (Unlike LSB steganography)

Technical Implementation:

  1. AES-256 Encryption (optional) - Your secret is encrypted with PBKDF2 key derivation
  2. Base64 Encoding - Encrypted data is encoded for QR compatibility
  3. Fragment Embedding - Appended to public URL with #IVDATA: prefix
  4. Camera Scanning:
    • Progressive camera fallback (5 configs for 95%+ device compatibility)
    • Dual-canvas processing (original for extraction, enhanced for detection)
    • 2x upscaling + grayscale + 50% contrast boost
    • Adaptive scan intervals with exponential backoff
    • MD5-based request deduplication (60-80% cache hit rate)

Performance:

  • ๐ŸŽฏ 80%+ QR detection rate in good lighting
  • ๐Ÿ“ท 95%+ device compatibility
  • โšก 60-80% reduction in backend load via caching

๐Ÿ“ Project Structure

InvisioVault/
โ”œโ”€โ”€ backend/              # Flask API
โ”‚   โ”œโ”€โ”€ api/             # Routes (steganography, polyglot, QR)
โ”‚   โ”œโ”€โ”€ utils/           # Core logic
โ”‚   โ”‚   โ”œโ”€โ”€ steganography.py  # LSB hiding/extraction
โ”‚   โ”‚   โ”œโ”€โ”€ polyglot.py       # Polyglot file creation
โ”‚   โ”‚   โ””โ”€โ”€ qr_stego.py       # QR generation & extraction
โ”‚   โ””โ”€โ”€ app.py           # Main app
โ”œโ”€โ”€ frontend/            # React SPA
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ”œโ”€โ”€ components/  
โ”‚       โ”‚   โ”œโ”€โ”€ HideFile.jsx          # Image steganography
โ”‚       โ”‚   โ”œโ”€โ”€ ExtractFile.jsx       # Extraction
โ”‚       โ”‚   โ”œโ”€โ”€ Polyglot.jsx          # Polyglot creation
โ”‚       โ”‚   โ”œโ”€โ”€ QRCode.jsx            # QR generation & scanning
โ”‚       โ”‚   โ””โ”€โ”€ CapacityIndicator.jsx # Real-time capacity
โ”‚       โ”œโ”€โ”€ hooks/
โ”‚       โ”‚   โ””โ”€โ”€ useQRScanner.js       # Camera scanning logic
โ”‚       โ””โ”€โ”€ App.jsx
โ””โ”€โ”€ run.bat             # Easy start script (Windows)

๐Ÿค Contributing

Pull requests welcome! Just:

  1. Fork it
  2. Make it better
  3. Send a PR with a funny commit message (we appreciate the vibes)

๐Ÿ“œ License

MIT License - do whatever you want with it!


๐Ÿ‘จโ€๐Ÿ’ป Author

Rolan
๐Ÿ“ง [email protected]
๐Ÿ™ @Mrtracker-new


โš ๏ธ Disclaimer

Use responsibly! This is for educational and personal use. Don't hide illegal stuff. The author is not responsible for your shenanigans.


๐ŸŽ‰ Thank You!

Star โญ this repo if you find it useful!

May your files stay hidden and your secrets stay secret! ๐Ÿคซ


๐ŸŽญ Fun Fact

This was my first ever repo! Looking back at the original code is... an experience. Let's just say past-me had enthusiasm and caffeine, but not much else.

After learning how to actually code, I came back and gave this thing a complete makeover:

  • Separated frontend/backend (revolutionary!)
  • Added polyglot files (because why not)
  • Threw in encryption (security!)
  • Made it dark mode (my eyes say thanks)
  • Added the capacity calculator (no more guessing games!)
  • Built QR code steganography with camera scanning (spy mode activated! ๐Ÿ•ต๏ธ)

If you're a beginner: keep building! Your first project doesn't need to be perfect. Mine definitely wasn't. Just code, break things, and learn! ๐Ÿ’ช

P.S. - If you find any ancient code artifacts from the Before Times, just... look away. Thanks. ๐Ÿ˜…

Latest Update (Jan 2026): Added live camera QR scanning! You can now scan QR codes directly with your webcam to extract hidden messages. Features dual-canvas processing, adaptive scan intervals, and works with 95%+ of devices. Normal phone cameras still work perfectly with the generated QR codes!

Releases

No releases published

Packages

No packages published