
Einfaches Steganographie-Programm basierend auf der LSB-Methode.
Ein Programm zum Kodieren von Informationen in Bild-, Audio- und Videodateien mittels Steganographie. Jede Art von Daten kann kodiert werden, von reinen Zeichenketten bis hin zu Dateien, wie unten gezeigt:
Links ein Haus mit einem steganographisch versteckten Bild. Rechts das extrahierte verborgene Bild einer Katze. Es wird sichtbar, indem alle Bits außer dem niederwertigsten jeder Farbkomponente im Wirtsbild entfernt werden.
JPEG-Wirte verwenden DCT-Koeffizienten-Einbettung. In der CLI werden andere von Pillow lesbare Bildformate beim Speichern in PNG konvertiert. Die Web-API akzeptiert nur die oben aufgeführten Formate. WAV ist das einzige unterstützte Audioformat.
Video-Wirte werden mit FFmpeg dekodiert, Frame für Frame mit einem robusten DCT-Signal eingebettet und als MP4/H.264 zurückgeschrieben. Der Video-Decoder ist für Dateien gedacht, die vom Video-Encoder von stegpy erstellt wurden; beliebige Videos ohne stegpy-Nutzlast dekodieren keine brauchbaren Daten. Die Videoverarbeitung ist in der gehosteten öffentlichen Web-Demo absichtlich deaktiviert, da sie CPU-intensiv sein kann; verwenden Sie für Video-Wirte die CLI oder führen Sie die Web-App lokal aus.
Die Video-Unterstützung erfordert außerdem die Kommandozeilenwerkzeuge ffmpeg und ffprobe.
Installieren Sie die aktuelle Version von PyPI als Kommandozeilenwerkzeug mit uv:
uv tool install stegpy
stegpy -h
Aktualisieren Sie eine bestehende Installation mit:
uv tool upgrade stegpy
Für die Entwicklung klonen Sie das Repository und erstellen die Umgebung mit 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
Video-Eingaben können ein beliebiges unterstütztes, von FFmpeg lesbares Containerformat aus der obigen Liste sein. stegpy schreibt kodierte Video-Ausgaben immer als MP4/H.264.
Daten werden standardmäßig ohne jeglichen Schutz kodiert, können aber mit dem -p-Flag verschlüsselt werden:
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
Eine Live-Demo auf Basis des Python-Pakets ist unter https://stegpy.coseri.xyz verfügbar.
Führen Sie die FastAPI-Anwendung und die Browser-Demo lokal aus dem Repository aus:
uv run uvicorn stegpy.web:app --reload
Öffnen Sie dann http://127.0.0.1:8000. Die statischen Dateien in web-demo/ benötigen das FastAPI-Backend unter /api/* und funktionieren nicht, wenn index.html direkt geöffnet wird.
Die gehostete Demo unterstützt PNG-, BMP-, GIF-, WebP-, WAV- und JPEG-Wirte, Text- oder Datei-Nutzlasten sowie optionale Passwortverschlüsselung. Uploads von Bild-/Audio-Wirten und Datei-Nutzlasten sind auf 20 MB begrenzt, Textnachrichten auf 1 MB. Die Kapazitätsanzeige zeigt die nutzbaren Nutzlast-Bytes nach dem stegpy-Header, dem eingebetteten Dateinamen und dem Verschlüsselungs-Overhead.
Video-Wirte sind in der Web-Oberfläche nur verfügbar, wenn sie auf localhost läuft, da die Videoverarbeitung einen kleinen Server minutenlang mit CPU-Last beschäftigen kann. Die lokale Web-Oberfläche akzeptiert Video-Wirte bis 5 MB.
Die API stellt außerdem GET /api/health, POST /api/capacity,
POST /api/encode und POST /api/decode bereit. Eine interaktive API-Dokumentation ist bei lokaler Ausführung unter http://127.0.0.1:8000/docs verfügbar.
Spenden sind willkommen, wenn Sie dieses Projekt nützlich finden.
Ethereum / EVM: 0xfE1039ba2d4973eb6F6dd1cF3BDAF24aa6cbff96