Innholdsfortegnelse:

Denne PNG er hemmelig rom: 4 trinn
Denne PNG er hemmelig rom: 4 trinn

Video: Denne PNG er hemmelig rom: 4 trinn

Video: Denne PNG er hemmelig rom: 4 trinn
Video: Я никогда не ел такой вкусной курицы в соусе!!! Рецепт за 10 минут! 2024, November
Anonim
Denne er hemmelig rom
Denne er hemmelig rom
Denne er hemmelig rom
Denne er hemmelig rom

Din utfordring, kjære leser, er å finne ut hvilket budskap som er skjult i output-p.webp

De to bildene her ser identiske ut, men de er ikke Dette er greenman.png- og output-p.webp

Denne instruksen er inspirert av en flott youtube -video. Etter å ha sett denne videoen sent på kvelden en dag og slitt med å tenke på en kul foredrag og midtveiseksamen for en avansert Java -programmeringstime, ble dette prosjektet født. Bildene ovenfor, sammen med koden beskrevet i denne instruksjonsboken, er gratis på Github.

Rekvisita

Du trenger en datamaskin, og du må vite hvordan du kompilerer og kjører et Java -program. Dette programmet er bare to korte filer, og du må kjøre det på kommandolinjen.

Trinn 1: Hva er Steganography

Du bør se YouTube -videoen jeg lenket til i forrige trinn, men her er sammendraget:

Hvis du trenger å skjule en hemmelig melding til en venn, er det en kul måte å gjøre det på med Steganography. Ideen om image Steganography er enkel; datamaskinbilder er laget av piksler, og hver piksel er en kombinasjon av rødt, grønt og blått. I mange datamaskinformat er mengdene rødt, grønt og blått i hver piksel uttrykt som verdier fra 0-127. Så for eksempel vil en veldig rød piksel ha en rød verdi på 127 og grønne og blå verdier på null. Trikset er dette: en rød intensitet på 126 kan ikke skilles fra en rød intensitet på 127 (til et menneskelig øye). Og så ved å fikle med pluss eller minus en i hver rød piksel, kan vi skjule biter i piksler. Hvis vi finner en lurig måte å samle bitene på igjen, kan vi hente dataene vi snek inn i bildet!

Vær kreativ! Steganografi kan gjøres med alle digitale medier! Du kan for eksempel spille med biter i musikk- eller videofiler, men det krever at du må gjøre mer forskning utenfor omfanget av denne instruerbare.

Trinn 2: Hvordan tekst er kodet på datamaskiner

Hvordan tekst er kodet på datamaskiner
Hvordan tekst er kodet på datamaskiner

Det som følger her kan kreve en grad i CS eller mye hobbyist lidenskap for å forstå. Datamaskiner lagrer data i biter som 1s og 0s. Disse 1 -ene og 0 -ene er vanligvis gruppert i grupper på 8 og referert til som "byte". Som forklart her og her er det få måter vi kan fortelle en datamaskin å tolke byte som tekst. For å få mest mulig ut av denne steganografiforelesningen/instruerbare må du mer eller mindre forstå ASCII og UTF8. Dette er to vanlige måter å kode språkdata i en serie byte.

Når du har en ide om dette emnet, forstår du dette: I ASCII og UTF8 er ordet "the" representert med følgende byte (i hex) 0x74 0x68 0x65. I binær er disse byte: 01110100b 01101000b 01101101b

Videre vil du forstå at i UTF8 er en Grinning Face Emoji representert med følgende byte (i hex) 0xF0 0x9F 0x98 0x80. I binær er disse byte 11110000b 10011111b 10011000b 10000000b.

Uansett vil du se på det vedlagte skjermbildet at datamaskinen min gjør noe med disse byte. Jeg har markert dem i programutgangen med piler og en stor "LOOK!".

Trinn 3: Hvordan programmet fungerer

Å kompilere programmet fra github er enkelt. Få repoen vist på forsiden her og da

Programmet kjøres slik fra kommandolinjen: java Main input-p.webp

i de vedlagte eksemplene ser du at jeg har kjørt java Main greenman-p.webp

Du vil gjøre det samme.

Hvis du ser på Main.java vil du se at dette er det som skjer:

  1. Programmet leser bildet inn i et 2D -array
  2. Programmet gjør meldingen du leverte til en byte -matrise (byte )
  3. Programmet bruker deretter en MessageHider -klasse for å skjule meldingsbytes i bildearrayet.
  4. Programmet skriver deretter bilde 2d -arrayet ut til en fil (output.png) med de skjulte dataene inne. Hvis du ser på dette bildet, kan det ikke skilles fra originalen
  5. Programmet leser deretter output-p.webp" />

Så stort sett fungerer koden som vi forventer.

Trinn 4: Konklusjon

Så jeg har gitt deg en arbeidskode, et bevis på at den fungerer i form av et bilde, og noen forelesningsnotater jeg gir til universitetsstudentene mine. Jeg ga deg også en utfordring! Jeg brukte noen timer på å skrive koden og forberede forelesningsnotater, så jeg beklager at denne instruksen ikke har mange bilder. Hvis du synes steganografi er interessant, kan du godta min utfordring!

Anbefalt: