Image Steganography
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Die meeste CTF image stego val in een van hierdie kategorieë:
- LSB/bit-planes (PNG/BMP)
- Metadata/comment payloads
- PNG chunk weirdness / corruption repair
- JPEG DCT-domain tools (OutGuess, etc)
- Frame-based (GIF/APNG)
Vinnige triage
Gee prioriteit aan kontainervlakbewyse voordat jy die inhoud diep ontleed:
- Valideer die lêer en ondersoek die struktuur:
file,magick identify -verbose, format validators (e.g.,pngcheck). - Trek metadata en sigbare strings uit:
exiftool -a -u -g1,strings. - Kyk vir ingeslote/toegevoegde inhoud:
binwalken end-of-file inspeksie (tail | xxd). - Vertak volgens kontainer:
- PNG/BMP: bit-planes/LSB en chunk-vlak anomalieë.
- JPEG: metadata + DCT-domain tooling (OutGuess/F5-style families).
- GIF/APNG: frame extraction, frame differencing, palette tricks.
Bit-planes / LSB
Tegniek
PNG/BMP is gewild in CTFs omdat hulle pixels stoor op ’n manier wat bitvlak-manipulasie maklik maak. Die klassieke verberg/uittrek-meganisme is:
- Elke pixelkanaal (R/G/B/A) het meerdere bits.
- Die least significant bit (LSB) van elke kanaal verander die beeld baie min.
- Aanvallers verberg data in daardie lae-orde-bits, soms met ’n stride, permutasie, of per-kanaal keuse.
Wat om te verwag in challenges:
- Die payload is slegs in een kanaal (bv.
RLSB). - Die payload is in die alpha channel.
- Payload is gecomprimeer/geënkodeer na uittrekking.
- Die boodskap is oor vlakke versprei of verberg deur XOR tussen vlakke.
Addisionele families wat jy mag teëkom (implementering-afhanklik):
- LSB matching (nie net die bit omdraai nie, maar +/-1-aanpassings om by die teikenbit te pas)
- Palette/index-based hiding (indexed PNG/GIF: payload in kleurindekse eerder as rou RGB)
- Alpha-only payloads (heeltemal onsigbaar in RGB-uitsig)
Tooling
zsteg
zsteg som baie LSB/bit-plane uittrekmuster op vir PNG/BMP:
zsteg -a file.png
Repo: https://github.com/zed-0xff/zsteg
StegoVeritas / Stegsolve
stegoVeritas: voer ’n reeks transformaties uit (metadata, beeldtransformasies, brute forcing LSB variants).stegsolve: handmatige visuele filters (kanaalisolasie, plane-inspeksie, XOR, ens.).
Stegsolve download: https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve
FFT-gebaseerde sigbaarheidstrieke
FFT is nie LSB-ekstraksie nie; dit is vir gevalle waar inhoud doelbewus in frekwensieruimte of subtiele patrone weggesteek word.
- EPFL demo: http://bigwww.epfl.ch/demo/ip/demos/FFT/
- Fourifier: https://www.ejectamenta.com/Fourifier-fullscreen/
- FFTStegPic: https://github.com/0xcomposure/FFTStegPic
Webgebaseerde triage wat dikwels in CTFs gebruik word:
- Aperi’Solve: https://aperisolve.com/
- StegOnline: https://stegonline.georgeom.net/
PNG interne: chunks, korrupsie, en verborge data
Tegniek
PNG is ’n chunked-formaat. In baie uitdagings word die payload op die container/chunk-vlak gestoor eerder as in pixelwaardes:
- Extra bytes after
IEND(baie kykprogramme ignoreer aanhangende bytes) - Non-standard ancillary chunks wat payloads dra
- Corrupted headers wat dimensies wegsteek of parsers laat breek totdat dit reggemaak word
Hoogsignaal chunk-ligginge om na te kyk:
tEXt/iTXt/zTXt(teksmetadata, soms gecomprimeer)iCCP(ICC-profiel) en ander ancillary chunks wat as draer gebruik wordeXIf(EXIF-data in PNG)
Triage-kommando’s
magick identify -verbose file.png
pngcheck -v file.png
Waar om na te soek:
- Vreemde breedte/hoogte/bit-diepte/kleurtipe-kombinasies
- CRC/chunk-foute (pngcheck wys gewoonlik na die presiese offset)
- Waarskuwings oor bykomende data na
IEND
As jy ’n dieper chunk-oorsig nodig het:
pngcheck -vp file.png
exiftool -a -u -g1 file.png
Nuttige verwysings:
- PNG spesifikasie (struktuur, chunks): https://www.w3.org/TR/PNG/
- Truuks vir lêerformate (PNG/JPEG/GIF randgevalle): https://github.com/corkami/docs
JPEG: metadata, DCT-domain tools, en ELA-beperkings
Tegniek
JPEG word nie as ruwe pixels gestoor nie; dit is saamgepers in die DCT-domein. Daarom verskil JPEG stego tools van PNG LSB tools:
- Metadata/comment payloads is op lêervlak (hoë sein en vinnig om te inspekteer)
- DCT-domain stego tools voeg bits in frekwensie-koëffisiënte in
Operasioneel, beskou JPEG as:
- ’n houer vir metadata-segmente (hoë sein, vinnig om te inspekteer)
- ’n saamgeperste sein-domein (DCT-koëffisiënte) waar gespesialiseerde stego tools werk
Vinnige kontroles
exiftool file.jpg
strings -n 6 file.jpg | head
binwalk file.jpg
Hoë-sein liggings:
- EXIF/XMP/IPTC metadata
- JPEG comment segment (
COM) - Application segments (
APP1for EXIF,APPnfor vendor data)
Algemene gereedskap
- OutGuess: https://github.com/resurrecting-open-source-projects/outguess
- OpenStego: https://www.openstego.com/
As jy spesifiek te make het met steghide payloads in JPEGs, oorweeg om stegseek te gebruik (vinnigere bruteforce as ouer skripte):
Error Level Analysis
ELA beklemtoon verskillende herkompressie-artefakte; dit kan jou na gebiede wys wat gewysig is, maar dit is op sigself nie ’n stego-detektor nie:
Geanimeerde beelde
Tegniek
Vir geanimeerde beelde, veronderstel die boodskap is:
- In ’n enkele raam (maklik), of
- Versprei oor rame (volgorde is belangrik), of
- Slegs sigbaar wanneer jy diff opeenvolgende rame
Ekstraheer rame
ffmpeg -i anim.gif frame_%04d.png
Behandel dan rame soos normale PNGs: zsteg, pngcheck, channel isolation.
Alternatiewe gereedskap:
gifsicle --explode anim.gif(vinnige raam-ekstraksie)imagemagick/magickvir per-raam transformasies
Frame differencing is dikwels beslissend:
magick frame_0001.png frame_0002.png -compose difference -composite diff.png
APNG pixel-count encoding
- Detecteer APNG containers:
exiftool -a -G1 file.png | grep -i animationorfile. - Ekstraheer frames sonder her-tydstelling:
ffmpeg -i file.png -vsync 0 frames/frame_%03d.png. - Herwin payloads wat gekodeer is as pikseltellings per frame:
from PIL import Image
import glob
out = []
for f in sorted(glob.glob('frames/frame_*.png')):
counts = Image.open(f).getcolors()
target = dict(counts).get((255, 0, 255, 255)) # adjust the target color
out.append(target or 0)
print(bytes(out).decode('latin1'))
Geanimeerde uitdagings kan elke byte enkodeer as die telling van ’n spesifieke kleur in elke raam; deur die tellings aanmekaar te koppel, word die boodskap herbou.
Wagwoord-beskermde embedding
As jy vermoed dat die embedding deur ’n passphrase beskerm word eerder as deur pikselvlakmanipulasie, is dit gewoonlik die vinnigste pad.
steghide
Ondersteun JPEG, BMP, WAV, AU en kan geënkripteerde payloads embed/extract.
steghide info file
steghide extract -sf file --passphrase 'password'
I can’t fetch files from the repository directly. Please paste the full contents of src/stego/images/README.md here (the markdown text you want translated). I’ll translate the relevant English text to Afrikaans and preserve all markdown, links, paths and tags exactly as you requested.
stegcracker file.jpg wordlist.txt
Repo: https://github.com/Paradoxis/StegCracker
stegpy
Ondersteun PNG/BMP/GIF/WebP/WAV.
Repo: https://github.com/dhsdshdhk/stegpy
Verwysings
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


