Tekst verbergen in een afbeelding
Verberg een geheim tekstbericht in een afbeelding met LSB-steganografie, eventueel versleuteld met AES-256-GCM, en lees het later terug. Lokaal, zonder upload.
Zo verberg je een bericht in een afbeelding
- Sleep een afbeelding naar het uploadvlak, of klik erop om er een te kiezen. PNG werkt het best, maar elke afbeelding die je browser kan openen is goed: het resultaat wordt altijd als nieuwe PNG opgeslagen.
- Typ onder Bericht verbergen je tekst in Geheim bericht. De regel Capaciteit toont hoeveel bytes het bericht inneemt en hoeveel de afbeelding kan bevatten.
- Wil je het vertrouwelijk houden, vink dan Bericht versleutelen met een wachtwoordzin (AES-256-GCM) aan en typ een Wachtwoordzin. Met Wachtwoordzin tonen controleer je wat je hebt getypt.
- Klik op Bericht verbergen en PNG downloaden. Het bestand wordt opgeslagen als
naam-hidden.png, en de statusregel vertelt hoeveel kleurwaarden zijn gewijzigd.
Zo onthul je een verborgen bericht
- Sleep de PNG naar hetzelfde uploadvlak. Bevat ze een bericht dat met deze tool is verborgen, dan meldt een opmerking dat zodra de afbeelding is geladen.
- Was het bericht versleuteld, typ de wachtwoordzin dan in Wachtwoordzin (alleen als het bericht versleuteld is).
- Klik op Verborgen bericht onthullen. De tekst verschijnt onder Verborgen bericht, klaar om te kopiëren.
Alles gebeurt in je browser: de afbeelding, het bericht en de wachtwoordzin worden nooit geüpload.
Hoe het werkt: de minst significante bit (LSB)
Elke pixel bevat een rode, een groene en een blauwe waarde tussen 0 en 255. Deze tool vervangt de laatste bit (de minst significante bit) van die drie waarden door één bit van je bericht, pixel na pixel in leesvolgorde. Een roodwaarde van 200 is bijvoorbeeld 11001000 in binair; met de bit 1 erin wordt dat 11001001, oftewel 201. Een kleurwaarde verandert dus nooit meer dan 1, een verschil dat het oog niet ziet.
Alleen volledig ondoorzichtige pixels worden gebruikt, en het alfakanaal blijft altijd onaangeroerd. Halftransparante pixels worden overgeslagen, omdat browsers hun laagste bits niet exact kunnen bewaren. Vóór het bericht schrijft de tool een header van 13 bytes: een handtekening, een vlag die aangeeft of het bericht versleuteld is, de lengte en een CRC-32-controlesom die beschadigde gegevens opspoort.
De Capaciteit is ongeveer (aantal ondoorzichtige pixels × 3 ÷ 8) − 13 bytes. Een foto van 1000 × 1000 kan zo’n 375.000 bytes bevatten, veel meer dan welk tekstbericht ook. Versleuteling voegt 49 bytes toe (versie, aantal iteraties, salt van 16 bytes, IV van 12 bytes en authenticatietag van 16 bytes). Met versleuteling wordt de sleutel uit je wachtwoordzin afgeleid met PBKDF2-SHA-256 (600.000 iteraties) en wordt de tekst versleuteld met AES-256-GCM, dat ook elke manipulatie opmerkt.
Wat steganografie niet doet
Steganografie verbergt dát er een bericht is; op zichzelf is het geen sterke beveiliging. Opeenvolgende LSB-inbedding zoals hier is met steganalysetools (chi-kwadraattoetsen, analyse van het LSB-vlak) eenvoudig op te sporen, en iedereen die de afbeelding in deze tool opent, kan een onversleuteld bericht lezen. Moet de inhoud privé blijven, gebruik dan de versleutelingsoptie met een lange, unieke wachtwoordzin: de bescherming is maar zo sterk als die wachtwoordzin. Ook dan beschermt versleuteling de inhoud, niet het feit dat er iets verborgen is.
De verborgen bits zijn bovendien kwetsbaar. Nieuwe JPEG- of WebP-compressie, verkleinen, bijsnijden, screenshots, filters en de meeste sociale netwerken en chatapps (die afbeeldingen opnieuw comprimeren en vaak omzetten) vernietigen het bericht. Deel de PNG als bestand: als bijlage in een e-mail, via een link naar cloudopslag of met “als document verzenden” in een chatapp.
Verantwoord gebruik
Goede toepassingen zijn puzzels, escape rooms en CTF-uitdagingen, je eigen afbeeldingen markeren, uitleggen hoe digitale afbeeldingen werken en privénotities bewaren. Gebruik het niet om regels op het werk of op school of de wet te omzeilen, en respecteer de afbeeldingen en het auteursrecht van anderen.
Veelgestelde vragen
Kunnen anderen zien dat mijn afbeelding een bericht bevat?
Niet met het blote oog: elke kleurwaarde verandert hooguit met 1. Maar een steganalysetool kan LSB-inbedding vaak opsporen, en deze tool meldt zelf dat er een bericht in zit zodra de afbeelding is geladen.
Waarom is mijn verborgen bericht verdwenen?
De afbeelding is waarschijnlijk opnieuw gecomprimeerd, verkleind of omgezet, bijvoorbeeld door een sociaal netwerk, een chatapp of een fotobewerkingsprogramma. Alleen het exacte PNG-bestand houdt de bits intact.
Kan ik met een JPEG-foto beginnen?
Ja. De foto wordt gedecodeerd en het resultaat wordt opgeslagen als PNG, dat verliesvrij is. Bewaar het als PNG: opnieuw opslaan als JPEG wist het bericht.
Wat gebeurt er als ik de wachtwoordzin vergeet?
Dan is het bericht niet meer terug te halen. Er is geen achterdeur, en een verkeerde wachtwoordzin wordt geweigerd door de authenticatiecontrole van AES-GCM.
Waarom is het PNG-bestand groter dan het origineel?
PNG is verliesvrij en dus meestal groter dan een JPEG van dezelfde foto. Dat is de prijs voor het intact houden van elke verborgen bit.
Vergelijkbare tools
- Tekst versleutelen Versleutel en ontsleutel tekst met een wachtzin in je browser, met AES-256-GCM en PBKDF2 met 600.000 iteraties. Er wordt niets geüpload.
- EXIF-gegevens verwijderen Verwijder EXIF-gegevens en de gps-locatie uit foto's voordat je ze deelt. Verliesvrij voor JPEG en PNG, in batch, en er wordt niets geüpload.
- Afbeelding naar Base64 omzetten Zet een afbeelding om naar Base64 of een data-URI met kant-en-klare CSS en HTML, of decodeer Base64 terug naar een afbeelding met voorbeeld. Zonder upload.
- Afbeelding omzetten Zet afbeeldingen om tussen PNG, JPG, WebP, BMP en ICO in je browser. Meerdere bestanden tegelijk, faviconformaten en transparantie, zonder uploaden.