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
Direct-voorspellingen - Bonuslevel
Huis

Direct-voorspellingen - Bonuslevel

De volgende Nintendo Direct wordt waarschijnlijk een... Partner Showcase. Cody en Jacco bespreken wat dit betekent voor de line-up van Nintendo dit jaar, en welke games we dan verwachten.

Ook: censuur in Dispatch, Rayman-klassiekers, NSO-strategie, Beast of Reincarnation.

Kom bij onze Discord. Via ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠deze link⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ ⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠kan je met ons en andere luisteraars kletsen over games, deals, nieuws en meer.

Wil je zelf ook een vraag insturen of heb je iets leuks om te melden? Dat kan! Stuur een mailtje naar bonuslevelcast@gmail.com (of bonuslevelkast@gmail.com of bonuslevelqast@gmail.com) en wellicht hoor je jezelf terug in de volgende aflevering!

▼ Volgende artikel
Gratis cursussen: zo gebruik je YouTube als online docent
© ID.nl
Huis

Gratis cursussen: zo gebruik je YouTube als online docent

YouTube staat vol met uitstekende cursussen, maar zonder plan van aanpak raak je al snel verdwaald in het woud aan losse video's, autoplay en aanbevelingen. De oplossing is leren aanpakken als project. Maakt eigen afspeellijsten, plan kijktijd alsof het lesuren zijn en combineer video's met slimme notities. Met onze tips wordt YouTube je ideale onlinedocent.

In dit artikel

Je maakt van YouTube een echte leeromgeving door te beginnen met een concreet doel en daar één duidelijke playlist per onderwerp aan te koppelen. Daarna leer je sneller door slim te kijken: ondertiteling en transcript gebruiken om termen terug te vinden, hoofdstukken als navigatie, en de afspeelsnelheid aanpassen aan de moeilijkheid. Je plant je kijktijd als studieblokken met ruimte voor notities en herhaling, zodat je niet blijft hangen in 'even kijken'. Tot slot blijf je het algoritme voor door gericht te zoeken, Later bekijken als buffer te gebruiken en jezelf actief te toetsen, zodat de kennis ook echt blijft hangen. 

Lees ook: Een leven lang leren? Zo breid je je kennis uit of houd je het op peil

Gestructureerd leren betekent dat je YouTube gebruikt als lesomgeving met duidelijke doelen en vaste leerroutes, in plaats van willekeurig te klikken van video naar video. Je bouwt aan één doorlopend cursustraject per onderwerp, zodat je elke sessie precies weet wat je gaat kijken, waarom dat relevant is en hoe je de informatie onthoudt.

YouTube kent naast losse instructiefilmpjes ook complete series met hoofdstukken, tijdcodes en zelfs volwaardige cursussen. Via YouTube Studio kunnen mensen hele cursussen publiceren. Als kijker is dat fijn, want ze bestaan uit overzichtelijke reeksen met duidelijke titels en een logische volgorde. Zoek je bijvoorbeeld naar 'Python course' of 'Excel cursus', dan kun je selectief kiezen voor kanalen die een complete serie aanbieden. Als een video verdeeld is in losse hoofdstukken, zie je die als markeringen in de voortgangsbalk en kun je gericht naar andere onderdelen springen. Dat maakt een lange les behapbaar en navigeerbaar.

YouTube Studio is de centrale plek waar mensen hun video's publiceren.

Wat wil je leren?

Log in op YouTube en begin met een concreet leerdoel. Denk aan iets als formules in Excel toepassen of websites leren maken. Noteer het resultaat dat je wilt bereiken en de tijd die je per week eraan kunt besteden. Open daarna YouTube en zoek op het onderwerp in combinatie met woorden als cursus, beginner of playlist. Klik bij een veelbelovend resultaat op de pagina en controleer of er afspeellijsten zijn die logisch geordend zijn. Kijk of er recente uploads zijn, of de beschrijving bronnen bevat en of er ondertiteling of transcripts (uitgeschreven teksten) beschikbaar zijn.

Zet eventueel ondertiteling aan door linksboven te klikken op de drie streepjes, en klik dan op Instellingen / Afspelen en prestaties / Altijd ondertiteling tonen; zo kun je meelezen en lastige termen terugzoeken. Je opent de beschrijving van de video door in de grijze balk eronder te klikken op Meer. Klik op Transcript tonen in de beschrijving om de volledige tekst met tijdcodes te zien; met de zoekbalk boven het transcript spoor je trefwoorden snel op en spring je naar het juiste moment in de video. Deze functie werkt overigens bij lang niet alle video's.

Tot slot controleer je of de video hoofdstukken heeft; zie je horizontale streepjes in de voortgangsbalk onder de video, dan kun je per onderdeel navigeren.

Ook als je goed Engels of een andere taal spreekt, zijn ondertitels handig tijdens een cursus.

Maak lijsten

Je hebt nu je cursus gekozen; tijd om je leeromgeving te bouwen. Open de eerste les en klik onder de video op de drie puntjes, dan op Opslaan/Nieuwe playlist. Geef je playlist een duidelijke naam, en kies de zichtbaarheid. Open de playlist via een klik op het rondje rechtsboven (waar je foto wellicht in staat) en Je kanaal bekijken. Dan klik je op Playlists en de betreffende aangemaakt afspeellijst om nieuwe video's toe te voegen en de volgorde aan te passen door video's te verslepen; zo bewaak je de opbouw.

Alles wat je wel interessant lijkt, maar nog niet op de hoofdlijn past, parkeer je in Later bekijken. Dat is de plek met materiaal om later te sorteren. Je voegt nieuwe video's eraan toe tijdens het kijken door te klikken op Opslaan / Later bekijken.

Werk dit onderdeel wekelijks bij: wat echt bij de cursus hoort, verplaats je naar je leerplaylist, de rest gaat weg. Zo blijft je cursus schoon en maak je het jezelf eenvoudig om snel te bekijken video's te scheiden van video's die misschien voor later interessant zijn.

Je kunt ook video's markeren om achter elkaar te worden afgespeeld. Dat doe je door in het overzicht van video's te klikken op de drie puntjes rechts van de video. Kies dan voor je Toevoegen aan wachtrij.

Een playlist is een goede methode om al je leervideo's te verzamelen.

Is een serie cursuswaardig?

Je tijd is kostbaar. Beoordeel daarom in enkele minuten of een serie cursuswaardig is. Start bij de kanaalpagina en kijk of de maker een duidelijke afspeellijst aanbiedt die logisch is geordend. Een goede playlist heeft oplopende titels (Les 1, Les 2) en een beschrijving met leerdoelen. Open de eerste video en schakel de ondertiteling in om te zien of je kunt meelezen; in de beschrijving vind je Transcript tonen, waarmee je kunt zoeken op kernwoorden als het transcript beschikbaar is. Kijk kort in de reacties: inhoudelijke vragen en antwoorden van de maker zijn een plus. Tot slot: voeg alleen de eerste twee video’s toe aan je leerplaylist en zet de rest in Opslaan / Later bekijken.

Lees ook: Van kijken tot streamen: zo gebruik je YouTube voor jouw wensen

Van kijktijd naar studieblokken

Nu je playlist er staat, maak je een realistisch studierooster. Behandel de totale kijktijd als lesuren en plan daarnaast verwerkingstijd voor pauzes, aantekeningen en oefeningen. Open je playlist en bekijk hoelang de video's duren. Bepaal per sessie een doel, zoals de eerste twee video's bekijken en samenvatten. Streef naar blokken van 25 tot 45 minuten, gevolgd door een korte pauze.

Op de computer kunt je met de eerdergenoemde optie Toevoegen aan wachtrij een reeks video's klaarzetten. Je slaat deze tijdelijke playlist op via een klik op de drie puntjes naast de video in het overzicht en dan op Opslaan in playlist. Zo heb je voor elk moment een 'pakket' klaarstaan.

Slaat YouTube je rij niet op, dan gebruik je Opslaan in Later bekijken als wachtkamer en sleep je de selectie daarna in je leerplaylist. Houd rekening met herhaling: plan per twee of drie kijkblokken één blok om terug te spoelen, lastige stukken in lagere snelheid te herbekijken en je notities bij te werken.

Later bekijken is een goede manier om video's op te slaan die niet in je basis-afspeellijst thuishoren.

Slimmer kijken

Tijdens het kijken wil je ook echt begrijpen wat je ziet en hoort. Klik rechtsonder in de speler op afbeelding van een tandwiel en dan op Ondertiteling om ondertitels in te schakelen; kies eventueel een andere stijl of grotere letters in de ondertitelingsopties. Past het tempo niet, kies dan Instellingen / Afspeelsnelheid en schakel bijvoorbeeld naar 1.25x voor bekende stof of 0.75x bij complexe uitleg.

Heeft de video hoofdstukken, dan zie je streepjes in de voortgangsbalk; beweeg de muis over de balk om titels te lezen en spring gericht naar het juiste onderdeel. Op een mobiel apparaat kun je met 'precies zoeken' nauwkeurige miniatuurbeelden oproepen door vanaf de voortgangsbalk iets omhoog te vegen; dat helpt bij het exact terugvinden van een stuk.

Een langzamere of juist snellere afspeelsnelheid kan je helpen de video beter te begrijpen.

Tip: maak een weekplanning

Reken per uur video minstens dertig extra minuten voor pauzes, notities en een korte herhaalronde met lagere snelheid. Houd het haalbaar: plan liever drie blokken van veertig minuten dan één marathonsessie. Kies per blok een doel, wat je precies wilt onthouden van de betreffende video. Sluit elk blok af met twee eigen quizvragen in je notities en een markering van lastige onderdelen die je nogmaals wilt bekijken. Aan het eind van de week verplaats je de playlist van die week naar je archief en maak je een nieuwe voor de volgende week. Zo voorkom je dat je afspeellijst onhandelbaar lang wordt en houd je overzicht over je echte voortgang.

View post on TikTok

Verwerken van de lesstof

Wat je onthoudt, hangt af van wat je met de informatie doet. Gebruik tijdstempels in je notities, zodat je altijd terug kunt naar het juiste moment. Pauzeer op een belangrijk moment, klik met de rechtermuisknop in de speler en kies Video-URL kopiëren vanaf huidig tijdstip en plak die link in je notities; veel apps maken er automatisch een klikbare link van. Zet boven elk kopje je leerdoel van dat fragment in één zin en noteer daarna in je eigen woorden wat je ervan begrepen hebt.

Tijdens het terugkijken helpt het toetsenbord: pauzeer met de spatiebalk of een druk op K, spoel 10 seconden terug met J of vooruit met I, ga sneller met / en langzamer met <, ga naar de volgende hoofdstukken met Ctrl+PijltjeRechts (Windows) of Option+PijltjeRechts (Mac) en open de sneltoetsenlijst met Shift+?. Zo wissel je razendsnel tussen kijken en noteren zonder je muis te hoeven gebruiken.

Je kunt een video-link zo kopiëren dat hij begint te spelen vanaf een bepaald tijdstip.

Blijf het algoritme de baas

YouTube geeft bij video's aanbevelingen voor andere filmpjes. Voer daarom gerichte zoekopdrachten uit en voeg alleen video's toe die je doel ondersteunen. Als je op de resultaatpagina staat, gebruik je de beschikbare filters en klik je pas daarna een video open; zo voorkom je dat je impulsief iets anders bekijkt.

Omdat YouTube regelmatig functies test en verplaatst, kan de exacte plek van knoppen of filters variëren; laat je daardoor niet uit het veld slaan en controleer de helpteksten wanneer iets ineens anders werkt.

Houd je startpagina schoon door doelbewust te kijken, ongepaste suggesties te markeren en vooral je Later bekijken-inbox te blijven opschonen. Blijkt een rij video's toch waardevol, sla die op als nieuwe afspeellijst via de drie puntjes en Opslaan in playlist. En als je echt de rust in je overzicht wilt bewaren, overweeg dan om een apart Google-account te gebruiken om in te loggen, zodat je 'studie-algoritme' niet wordt beïnvloed door de andere video's die je bekijkt.

Een apart Google-account is handig om je zoekresultaten vrij van ruis te houden.

Test jezelf

Passief kijken voelt efficiënt, maar de informatie blijft slecht hangen. Actief kennis ophalen uit je geheugen in plaats van alleen te herlezen, werkt vele malen beter. Combineer YouTube's transcript met zelftoetsing: kijk een hoofdstuk, sluit de video en schrijf uit het hoofd de kernstappen op. Check daarna in het transcript of je alles hebt meegenomen, voeg ontbrekende details toe en maak twee oefenvragen. Spreid je sessies: herhaal dezelfde stof later nog eens kort; verspreid oefenen werkt beter dan alles achter elkaar kijken. In de praktijk betekent dit dat je een langzame tweede kijkronde plant met Afspeelsnelheid op 0.75x, terwijl je quizvragen beantwoordt. Met deze combinatie van transcript, gespreid herhalen en korte zelftoetsen maak je van elke les een blijver.

Kennis onderhouden

Als je alle tips toepast, ontwikkel je een routine om optimaal te profiteren van de kennis die je opdoet tijdens het bekijken van de video, de stof samenvatten en herhalen en jezelf toetsen. Een logische vervolgstap is om één nieuw onderwerp te kiezen en de aanpak van dit artikel precies één maand vol te houden; evalueer daarna en schaaf je format bij. Zo groeit YouTube mee met jouw vaardigheden, in plaats van andersom.

Je vorderingen (ook) op papier bijhouden?

Shop collegeblokken