ID.nl logo
Zo maak je van foto's gecodeerde berichten
© Reshift Digital
Huis

Zo maak je van foto's gecodeerde berichten

Coderen en decoderen spreekt altijd tot de verbeelding. Al in de oudheid verzon men manieren om boodschappen in het geheim te kunnen verzenden. Spiegelschrift, codeboeken, Enigma-machines, onzichtbare inkt, noem het maar op. In dit artikel gaan we daar een variant op bouwen, waarbij we slim gebruik maken van het RGB-mechanisme van digitale foto’s. Zo maak je van foto's gecodeerde berichten.

We sturen je direct naar www.visualstudio.microsoft.com/vs voor de zogeheten Community Edition van Visual Studio 2019. En daarna breng je een bezoekje aan de website van onze dochtersite Computer Idee, waar je van de pagina Downloads het bestand Steganography.zip downloadt. Dit bestand bevat het Steganography-project waarmee we hier aan de slag gaan; het voorzetje van dit project vind je op de website www.codeproject.com. Wil je meer weten over steganografie (= het verbergen van informatie in onschuldig ogende objecten, een vorm van cryptografie), dan is dít een mooie Wikipedia-pagina die je helemaal bijpraat.

Rgb-kleuren

We gaan dus informatie verbergen in onschuldig ogende objecten. En wat is er, om in computertermen te blijven, nóg onschuldiger dan een digitale foto? Als we over digitale foto’s praten, dan praten we over resolutie en kleur. Resolutie is het aantal pixels waaruit de digitale foto bestaat. Kleur kennen we in meerdere varianten, van zwart/wit naar grijs naar 16,7 miljoen kleuren, enzovoort. De meest gebruikte kleurvariant (in onder andere bmp, jpg en png) is rgb, met steeds een byte per kleurwaarde. Een byte heeft 256 als maximale waarde dus dat is 256 keer r(ood), 256 keer g(roen) en 256 keer b(lauw). En 256 x 256 x 256 = 16.777.216 dus dat is waar dat getal 16,7 miljoen vandaan komt.

Componenten en bits

Elke pixel van een digitale foto wordt neergezet door 3 bytes: 1 rood-byte, 1 groen-byte en 1 blauw-byte. Elke afzonderlijke byte kan een waarde tussen 0 en 255 bevatten. Dat komt omdat een byte gebruik maakt van het binaire talstelsel, waarbij we werken met nullen en enen. Daarbij bestaat 1 byte uit 8 bits. Die 8 bits kunnen afzonderlijk de waarde 0 of 1 bevatten. Als de bit op 0 staat, dan is de bijbehorende waarde ook 0. Als de bit op 1 staat, dan is de bijbehorende waarde afhankelijk van de bit-positie in de byte. De laagste (of eerste) bit is dan 1. De hoogste (of laatste) bit is dan 128. Kijk maar eens naar de onderstaande tabellen, dan zie je hoe dat in zijn werk gaat:

©PXimport

LSB en MSB

En zoals je kunt zien, hebben we weinig aan bit 1. De waarde is immers maximaal 1. Daarom wordt Bit 1 ook wel de LSB genoemd oftewel de Least Significant Bit; de bit die er het minst toe doet. Bit 8 daarentegen, kan – binnen een byte – de waarde 128 bevatten. Bit 8 is dus belangrijk en heet daarom de MSB (Most Siginificant Bit); inderdaad, de bit die er het meest toe doet! Met voor de niet-hoofdrekenaars nog even een link naar een handige online conversieservice.

Kleuren kijken

De bovenstaande byte-filosofieën nemen we mee als we daadwerkelijk naar kleuren gaan kijken. We doen dat om inzicht te krijgen in het effect van de getallen tussen 0 en 255. Daarbij gaan we uit van rgb-waarden en we zetten wat bekende standaardkleuren voor je op een rijtje:

©PXimport

De bovenstaande tabel vertelt sowieso ons al één ding: “Hoe meer bits op 1, hoe meer kleur.” En door de afzonderlijke rgb-waarden te veranderen ontstaan dan die verschillende 16,7 miljoen kleuren. En ook voor die theorie hebben we een leuke link.

Een 1 is geen 1

Waarmee we bij de essentie van deze workshop zijn aanbeland: “Het feit dat de eerste bit, de LSB, er eigenlijk niet toe doet.” Die eerste bit kan 0 of 1 zijn en dat blijft het ook. En in termen van kleurbelevenis moet je van goeden huize komen om het verschil tussen 255,0,0 en 254,0,0 te kunnen zien. Kortom, een 1 is geen 1. En dáár gaan we gebruik van maken! Dat wil zeggen, we gaan die LSB gebruiken om onze geheime boodschap letterlijk en volledig in het zicht te bewaren. Hij is er wel, maar je ziet het lekker niet…

©PXimport

WinForms

Nu terug naar het begin, terug naar Visual Studio 2019 en het zip-bestand dat je bij de website van Computer Idee hebt opgehaald. Pak dat bestand uit en start aansluitend Visual Studio 2019. Kies voor de optie Open a project or solution en ga op zoek naar de map waarin je de zip zojuist hebt uitgepakt. In die map zie je een SLN-bestand dat door Visual Studio 2019 kan worden geopend, waarna je ziet dat ons WinForms-project is geopend. Als je dat wilt, dan kun je meteen op de Start-knop drukken om daarmee het mini-programma Steganography te laten starten.

Steganography

Begin met een druk op de knop Open Afbeelding om een plaatje naar keuze in te lezen. In het tekstvak Geheime Boodschap kun je dan de te verstoppen boodschap intypen. Als dat is gebeurd, klik je op de knop Verstoppen om die ingetypte boodschap ‘in’ de afbeelding op te nemen. En je zult moeten toegeven: “Daar is helemaal niets van te zien!” Om te controleren of dat verstoppen is geslaagd, klik je op de knop Leeg en daarna op de knop Onthullen. Voilà! De volgende stap is dan het bewaren van het ‘nieuwe’ plaatje via de knop Bewaar Afbeelding, om het daarna via e-mail te versturen naar de beoogde ontvanger. Die beoogde ontvanger moet dan uiteraard ook een versie van Steganography hebben draaien, om je boodschap tevoorschijn te kunnen halen. Interessant, niet?

©PXimport

Programma-opties

Intussen is Steganography nog voorzien van enkele programma-opties. Een van die opties is Sleutel Voor Encryptie. Als je die gebruikt wordt de geheime boodschap nog eens extra versleuteld. Dat betekent wel dat je die sleutel, uiteraard apart van de bewerkte afbeelding, naar de ontvanger moet versturen. Een andere optie is Gebruik MSB. Weet je nog, de Most Siginificant Bit die binnen goed is voor de waarde 0 of 128. Welnu, als we de afbeelding niet via de LSB maar via de MSB coderen dan is wél direct zichtbaar dat er iets aan de hand is. Dit om je een idee te geven van het zwaarteverschil tussen de verschillende bits!

Stukje code bekijken

Tot slot willen we je nog even meenemen naar Visual Studio en wel om een stukje code te bekijken. Als je  Steganography hebt laten draaien, dan is het WinForms-project al geopend. Rechts in beeld vind je de zogeheten Solution Explorer en de C#-programmacode waar het om draait bevindt zich in het bestand SteganographyHelper.cs. Daarbij gaat het feitelijk om vier functies:

EncryptString. Dit zorgt ervoor dat de geheime tekst – indien nodig – wordt versleuteld.

DecryptString. Dit ontsleutelt een geheime tekst, iets wat alleen mogelijk is als de ontvanger over de juiste sleutel beschikt.

EmbedText. Hier wordt de al dan niet versleutelde tekst in de afbeelding opgenomen, waarbij gebruik wordt gemaakt van óf de LSB óf de MSB. Elk teken heeft 3 pixels oftwel 9 rgb-bits nodig.

ExtractText. De tekst wordt nu weer uit de afbeelding gehaald. Met als opties natuurlijk een extra sleutel en de keuze tussen LSB en MSB.

©PXimport

▼ Volgende artikel
Review Poco F8 Ultra – Toptoestel zodra de prijs zakt
© Wesley Akkerman
Huis

Review Poco F8 Ultra – Toptoestel zodra de prijs zakt

De smartphones van Poco zijn over het algemeen goed geprijsd als je kijkt naar wat je ervoor terugkrijgt. De nieuwe Poco F8 Ultra heeft een prijskaartje van minimaal 800 euro. Gaat die regel ook hier op?

Uitstekend
Conclusie

De Poco F8 Ultra oogt uniek, vindt in de subwoofer een handige toevoeging en voelt stevig aan. De door ons geteste Denim Blue-uitvoering heeft bovendien een faux denimlaagje op de achterkant voor extra grip (wat deze variant een paar gram zwaarder maakt dan de zwarte versie). Wel plaatsen we wat kanttekeningen bij de software- en camera-ervaring. De prijs is misschien gevoelsmatig nog wat hoog, zeker voor dit merk. Maar zakt de prijs richting de 600 euro, dan krijg je een toptoestel dat zijn prijs meer dan waarmaakt en waar je langdurig plezier van hebt.

Plus- en minpunten
  • Bose-subwoofer
  • Faux denim achterop
  • Stevig, handzaam en licht
  • Vlotte en overzichtelijke software
  • Gemiddeld tot goed softwarebeleid
  • Batterijduur
  • Kleuren kunnen beter
  • Camera laat te wensen over
  • Bloatware en advertenties
CategorieSpecificatie
Display6,9 inch Amoled-display, 120Hz (adaptief), 3500 nits maximale helderheid
ProcessorSnapdragon 8 Elite Gen 5 (3nm)
Geheugen12 GB of 16 GB LPDDR5X (9600 Mbps)
Opslag256 GB of 512 GB (UFS 4.1)
Batterij6500 mAh met 100W HyperCharge en 50W draadloos laden
Camera achter50 MP hoofdcamera (OIS), 50 MP periscooptelelens (OIS), 50 MP ultragroothoek
Camera voor32 MP met autofocus
VideoTot 8K op 30 fps (achter) / 4K op 60 fps (voor)
SoftwareXiaomi HyperOS 3
BouwIP68 waterbestendig, POCO Shield Glass, 218 (Black) - 220 gram (Denim Blue)
Connectiviteit5G, Wifi 7, Bluetooth 6.0, NFC
Extra'sUltrasone vingerafdrukscanner, Infrarood (IR-blaster), Bose audio

Want wat voor smartphone kun je precies aanbieden als je er net wat meer geld tegenaan gooit? Dat idee heeft een unieke telefoon opgeleverd, voorzien van een denimlook én een extra subwoofer achterop. Gewaagde keuzes, maar in een wereld waarin smartphones steeds meer naar elkaar toe groeien, en in hun identiteitscrisis meer en meer op iPhones gaan lijken, geen verkeerde ontwikkeling. Alleen daarom al zijn we enthousiast over de Poco F8 Ultra (Blue Denim-uitvoering).

Het helpt dan ook zeer dan de subwoofer daar niet alleen voor de show zit. Dit compacte speakertje geeft geluiden en audio meer dan genoeg ruimte om beter tot hun recht te komen vergeleken met reguliere smartphonespeakers. Weg is dat blikkige geluid, dat nu ruimte maakt voor warmere tonen en een bredere soundstage. Klinkt de muziek perfect? Dat kun je niet verwachten, maar we zijn desondanks onder de indruk van de Bose-luidspreker.

©Wesley Akkerman

Uniek en tof

De Poco F8 Ultra ligt prettig in de hand en voelt solide aan dankzij het aluminium frame. Met 220 gram is hij ook niet overdreven zwaar. Het fauxdenim op de achterkant draagt daarbij merkbaar bij aan de grip, waardoor hij niet snel uit je handen glipt. Juist door dat eigenzinnige uiterlijk is dit zo'n smartphone die je liever zonder hoesje gebruikt, ook al loop je daarmee iets meer risico op valschade.

Het grote amoled-paneel van 6,9 inch stelt evenmin teleur. Met zijn hoge resolutie (1.200 bij 2.608 pixels) en verversingssnelheid (120 Hertz) kom je niets tekort en oogt alles scherp en vlot. Het contrast is breed en zwartwaarden zijn diep, maar de kleuren kunnen soms net even wat flets ogen. Dat valt alleen op in directe vergelijkingen met andere smartphones; de kans is heel klein dat dit je hier iets van merkt in het dagelijkse gebruik of als je een minder geoefend oog hebt.

©Wesley Akkerman

©Wesley Akkerman

Wat je mag verwachten

Ook al draait de Poco F8 Ultra niet op de krachtigste processor die Qualcomm te bieden heeft, in de praktijk merk je daar weinig van. De Snapdragon 8 Elite Gen 5 voelt vlot aan bij multitasking en kan games zonder moeite aan, al moet je er wel rekening mee houden dat de Gen 5 warm (niet heet, gelukkig) kan worden wanneer je high-end spellen speelt. Niets om je zorgen over te maken, je zult hier namelijk je vingers niet aan branden.

Ook de accu stelt niet teleur. Met een capaciteit van 6.500 mAh haal je in veel gevallen probleemloos twee dagen, al hangt dat vanzelfsprekend af van hoe intensief je de smartphone gebruikt. Speel je veel games, dan loopt hij sneller leeg, maar opladen gaat razendsnel. Met een geschikte 100w-lader, die je zelf moet aanschaffen, zit de accu binnen ongeveer veertig minuten weer helemaal vol.

0,7x

1x

2x

Camera en software

Toch is niet alles goud wat er blinkt. Onder de juiste lichtomstandigheden maakt de Poco F8 Ultra kleurrijke en gedetailleerde beelden. Zoomen is geen probleem en ook de selfiecam lijkt goed om te gaan met verschillende huidtypen. De groothoeklens presteert echter minder goed: kleuren komen minder goed uit de verf en details vallen weg. De avondmodus stelt teleur, met een overdaad aan exposure, gebrekkige kleurenaccuraatheid en trage vastlegging.

Aangezien Poco een dochteronderneming is van Xiaomi, draait het toestel op HyperOS 3.0. De Poco staat daardoor vol met overbodige en dubbele apps, waaronder die van Xiaomi, waarvan je het gros kunt verwijderen. Ook kom je her en der wat reclame tegen. Verder is het besturingssysteem vlot en overzichtelijk, twee eigenschappen die we extreem belangrijk vinden. Je krijgt tot slot 'maar' vier Android-upgrades, evenals zes jaar aan beveiligingsupdates.

5x

10x

Poco F8 Ultra kopen?

Ondanks de kanttekeningen die we plaatsen bij de software- en camera-ervaringen, zijn er eigenlijk weinig redenen om niet voor de Poco F8 Ultra te kiezen. Hij oogt uniek, vindt in de subwoofer een handige toevoeging en voelt stevig aan. De door ons geteste Denim Blue-uitvoering heeft bovendien een faux denimlaagje op de achterkant voor extra grip (wat deze uitvoering wel een paar gram zwaarder maakt dan de Poco F8 Ultra Black). De prijs is misschien gevoelsmatig nog wat hoog, zeker voor dit merk. Maar zakt de prijs richting de 600 euro, dan krijg je een toptoestel dat zijn prijs meer dan waarmaakt en waar je langdurig plezier van hebt.

52137934

▼ Volgende artikel
Spatial audio: de zin en onzin van 3D-geluid
© ER | ID.nl
Huis

Spatial audio: de zin en onzin van 3D-geluid

Spatial audio, oftewel ruimtelijke audio, belooft een luisterervaring waarbij het geluid niet alleen van links en rechts komt, maar je volledig omringt. Hoewel de marketingkreten je geregeld om de oren vliegen, is de techniek niet in elke situatie even zinvol. In dit artikel ontdek je wanneer ruimtelijke audio je ervaring verrijkt en wanneer je prima zonder kunt.

Vergeet het statische geluid van je oude vertrouwde stereo-set. Met spatial audio krijgt geluid eindelijk de diepte die het verdient. Dankzij slimme algoritmes die de akoestiek van de echte wereld nabootsen, ontsnapt de audio aan je koptelefoon of soundbar. Geluid beweegt vrij door de kamer, waardoor een helikopter in een film ook echt boven je hoofd lijkt te cirkelen. Het is de overstap van een platte foto naar een hologram, maar dan voor je oren.

Bioscoopervaring thuis

De meest logische toepassing voor spatial audio is zonder twijfel de moderne filmervaring. Wanneer je een blockbuster kijkt die is gemixt in formaten zoals Dolby Atmos, komt de techniek pas echt tot leven. Een helikopter die overvliegt of regen die op een dak klatert, krijgt een verticale dimensie die voorheen onmogelijk was met een standaard hoofdtelefoon of een simpele soundbar.

Voor filmliefhebbers die niet de ruimte hebben voor een volledige surround-installatie met fysieke speakers in het plafond, biedt spatial audio een overtuigend en compact alternatief dat de zogenaamde immersie aanzienlijk vergroot.

Spatial audio in de praktijk

Je komt ruimtelijke audiotechnieken op steeds meer plekken tegen, vaak zonder dat je er specifiek naar hoeft te zoeken. In de filmwereld is Dolby Atmos de absolute standaard, waarbij streamingdiensten zoals Netflix en Disney+ deze techniek inzetten om geluidseffecten via een soundbar dwars door je kamer te laten bewegen.

Muziekliefhebbers vinden soortgelijke ervaringen bij Apple Music en Tidal, waar speciale mixes van bekende albums een breder en dieper geluidsveld bieden dan de originele stereoversie. Ook in de gamingwereld is het inmiddels de norm; Sony gebruikt de Tempest 3D-technologie voor de PlayStation 5 om spelers midden in de actie te plaatsen, terwijl Microsoft met Windows Sonic en Dolby Atmos for Headphones vergelijkbare resultaten behaalt op de Xbox en pc.

©ER | ID.nl

Muziek met een extraatje

Voor muziek is het nut van ruimtelijke audio iets genuanceerder en sterk afhankelijk van de productie. Bij klassieke concerten of live-opnames kan de techniek je het gevoel geven dat je midden in de concertzaal zit, waarbij de akoestiek van de ruimte tastbaar wordt. Ook bij moderne popmuziek die specifiek voor dit formaat is geproduceerd, kunnen artiesten creatiever omgaan met de plaatsing van instrumenten of subtiele geluidseffecten.

Toch blijft voor de purist die zweert bij een eerlijke, ongefilterde weergave van een studio-album de traditionele stereomix vaak de voorkeur genieten, omdat spatial audio de oorspronkelijke balans soms onnatuurlijk kan veranderen.

Gaming en de functionele voorsprong

In de wereld van gaming verschuift de waarde van spatial audio van puur esthetisch naar functioneel. Vooral in competitieve shooters is het horen van de exacte positie van een tegenstander een serieus dingetje. Door gebruik te maken van ruimtelijke audio kun je voetstappen boven, onder of achter je nauwkeurig lokaliseren. Dat geeft niet alleen een intensere spelervaring waarbij je volledig wordt opgeslokt door de spelwereld, maar biedt ook een tactisch voordeel dat met standaard audio simpelweg niet te evenaren is. Hierdoor is de techniek voor fanatieke gamers bijna onmisbaar geworden.

Wanneer kun je het beter uitschakelen?

Ondanks de indrukwekkende demonstraties is spatial audio niet altijd de beste keuze. Voor dagelijks gebruik, zoals het luisteren naar podcasts of het kijken van het journaal, voegt de extra ruimtelijkheid weinig toe en kan het de verstaanbaarheid van stemmen zelfs negatief beïnvloeden. Ook bij oudere opnames die door softwarematige kunstgrepen naar ruimtelijk geluid worden omgezet, ontstaat er vaak een hol en onnatuurlijk resultaat. In dergelijke gevallen is een zuivere stereoweergave nog altijd de meest betrouwbare weg naar een prettige luisterervaring.

Populaire merken voor spatial audio

Verschillende fabrikanten lopen voorop in de adoptie van ruimtelijke audiotechnieken. Apple heeft met de integratie in de AirPods Max en AirPods Pro in combinatie Apple Music de techniek toegankelijk gemaakt voor de massa, terwijl Sony met hun 360 Reality Audio een sterk eigen ecosysteem heeft gebouwd dat vooral schittert bij gaming en specifieke streamingdiensten. Daarnaast is Sonos een dominante speler op het gebied van home-entertainment met soundbars die Dolby Atmos ondersteunen. Bose en Sennheiser zijn eveneens belangrijke namen die met hun geavanceerde algoritmes en hoogwaardige hardware zorgen dat de ruimtelijke beleving ook voor de veeleisende luisteraar geloofwaardig blijft.