
Semplice programma di steganografia basato sul metodo LSB.
Un programma per codificare informazioni in file immagine, audio e video tramite steganografia. È possibile codificare qualsiasi tipo di dato, da stringhe grezze a file, come mostrato di seguito:
A sinistra, una casa con un'immagine nascosta steganograficamente. A destra, l'immagine nascosta estratta di un gatto. Viene rivelata rimuovendo tutti i bit tranne il meno significativo di ciascuna componente di colore nell'immagine ospite.
Gli host JPEG utilizzano l'incorporamento tramite coefficienti DCT. Nella CLI, gli altri formati immagine leggibili da Pillow vengono convertiti in PNG al momento del salvataggio. L'API web accetta solo i formati elencati sopra. WAV è l'unico formato audio supportato.
Gli host video vengono decodificati con FFmpeg, incorporati frame per frame con un segnale DCT robusto e riscritti come MP4/H.264. Il decodificatore video è pensato per i file creati dal codificatore video di stegpy; video arbitrari privi di un payload stegpy non decodificheranno dati utili. L'elaborazione video è intenzionalmente disabilitata nella demo web pubblica ospitata perché può essere intensiva in termini di CPU; utilizzare la CLI o eseguire l'app web localmente per gli host video.
Il supporto video richiede anche gli strumenti da riga di comando ffmpeg e ffprobe.
Installare la release corrente da PyPI come strumento da riga di comando con uv:
uv tool install stegpy
stegpy -h
Aggiornare un'installazione esistente con:
uv tool upgrade stegpy
Per lo sviluppo, clonare il repository e creare l'ambiente con uv:
git clone https://github.com/izcoser/stegpy.git
cd stegpy
uv sync --dev
uv run stegpy -h
stegpy "Hello World!" image.png
stegpy _image.png
stegpy "Hello video!" clip.mp4
stegpy _clip.mp4
Gli input video possono essere qualsiasi contenitore supportato e leggibile da FFmpeg elencato sopra. stegpy scrive sempre l'output video codificato come MP4/H.264.
Per impostazione predefinita i dati vengono codificati senza alcuna protezione, ma possono essere crittografati con il flag -p:
stegpy "Hello World!" image.png -p
Enter password (will not be echoed):
Verify password (will not be echoed):
stegpy _image.png -p
Enter password (will not be echoed):
Hello World!
stegpy -h
Una demo live basata sul pacchetto Python è disponibile all'indirizzo https://stegpy.coseri.xyz.
Eseguire l'applicazione FastAPI e la demo nel browser localmente dal repository:
uv run uvicorn stegpy.web:app --reload
Poi aprire http://127.0.0.1:8000. I file statici in web-demo/ richiedono il
backend FastAPI /api/* e non funzionano aprendo direttamente index.html.
La demo ospitata supporta host PNG, BMP, GIF, WebP, WAV e JPEG, payload di testo o file e crittografia opzionale con password. I caricamenti di host immagine/audio e di payload file sono limitati a 20 MB, mentre i messaggi di testo sono limitati a 1 MB. La visualizzazione della capacità mostra i byte di payload utilizzabili dopo l'header di stegpy, il nome file incorporato e l'overhead di crittografia.
Gli host video sono disponibili nell'interfaccia web solo quando eseguita su localhost, perché l'elaborazione video può tenere occupata la CPU di un piccolo server per diversi minuti. L'interfaccia web locale accetta host video fino a 5 MB.
L'API espone anche GET /api/health, POST /api/capacity,
POST /api/encode e POST /api/decode. La documentazione interattiva dell'API è
disponibile all'indirizzo http://127.0.0.1:8000/docs quando eseguita localmente.
Le donazioni sono apprezzate se trovi utile questo progetto.
Ethereum / EVM: 0xfE1039ba2d4973eb6F6dd1cF3BDAF24aa6cbff96