Kazalo:

Ta PNG je skrivni predal: 4 koraki
Ta PNG je skrivni predal: 4 koraki

Video: Ta PNG je skrivni predal: 4 koraki

Video: Ta PNG je skrivni predal: 4 koraki
Video: Заработай $ 850 в день на автопилоте бесплатно (WORLDWIDE) Зар... 2024, November
Anonim
Ta je skrivni predal
Ta je skrivni predal
Ta je skrivni predal
Ta je skrivni predal

Vaš izziv, dragi bralec, je ugotoviti, kakšno sporočilo je skrito v sliki output.png, ki sem vam jo dal na github. Za odstranitev sporočila lahko uporabite tam kodo MessageHider. Če ste zmedeni, komentirajte spodaj in pomagal vam bom dobiti odgovor! Takoj lahko celo prenehate z branjem, pojdite na github, vzemite kodo in začnite s steganografijo. Dovolj je bilo povedanega, a prosim, držite se in povedal vam bom več.

Tu sta sliki enaki, vendar nista. To sta sliki greenman-p.webp

Ta pouk je navdihnjen z odličnim video posnetkom na YouTubu. Ko smo si nekega dne pozno zvečer ogledali ta videoposnetek in se trudili, da bi si omislili kul predavanje in vmesni izpit za napredni razred programiranja Java, se je rodil ta projekt. Zgornje slike skupaj s kodo, opisano v tem navodilu, so na Githubu brezplačne.

Zaloge

Potrebovali boste računalnik in vedeti morate, kako sestaviti in zagnati program Java. Ta program je samo dve kratki datoteki in ga boste morali zagnati v ukazni vrstici.

1. korak: Kaj je steganografija

Morali bi si ogledati videoposnetek youtube, ki sem ga povezal v prejšnjem koraku, vendar je tukaj povzetek:

Če morate prijatelju skriti skrivno sporočilo, je to super način s steganografijo. Ideja slikovne steganografije je preprosta; računalniške slike so narejene iz slikovnih pik, vsak piksel pa je kombinacija rdeče, zelene in modre barve. V mnogih oblikah računalniških slik so količine rdeče, zelene in modre barve v vsaki slikovni piki izražene kot vrednosti od 0 do 127. Tako bi na primer zelo rdeč piksel imel rdečo vrednost 127 in zeleno -modro vrednost nič. Trik je naslednji: rdeča jakost 126 se ne razlikuje od rdeče jakosti 127 (za človeško oko). Tako lahko s poigravanjem s plusom ali minusom ena v vsaki rdeči slikovni piki skrijemo bite v slikovnih pikah. Če najdemo skriven način za zbiranje kosov nazaj, lahko pridobimo podatke, ki smo jih vtaknili v sliko!

Bodi ustvarjalen! Steganografijo lahko naredite s katerim koli digitalnim medijem! Lahko se na primer igrate z delčki v glasbenih ali video datotekah, vendar to zahteva, da opravite več raziskav zunaj obsega tega navodila.

2. korak: Kako se besedilo kodira v računalnikih

Kako se besedilo kodira v računalnikih
Kako se besedilo kodira v računalnikih

Kar sledi tukaj, bo morda zahtevalo diplomo iz CS ali veliko hobistične strasti za razumevanje. Računalniki shranjujejo podatke v bitih kot 1s in 0s. Te številke 1 in 0 so običajno združene v skupine po 8 in jih imenujemo "bajti". Kot je pojasnjeno tukaj in tukaj, obstaja nekaj načinov, kako lahko računalniku rečemo, da razlaga bajte kot besedilo. Če želite kar najbolje izkoristiti to predavanje/navodila za steganografijo, morate bolj ali manj razumeti ASCII in UTF8. To sta dva pogosta načina kodiranja jezikovnih podatkov v nizu bajtov.

Ko boste imeli predstavo o tej temi, boste razumeli to: V ASCII in UTF8 je beseda "the" predstavljena z naslednjimi bajti (v šestnajstikih) 0x74 0x68 0x65. V binarnem formatu so ti bajti: 01110100b 01101000b 01101101b

Poleg tega boste razumeli, da so emoji nasmejanega obraza v UTF8 predstavljeni z naslednjimi bajti (v šestnajstikih) 0xF0 0x9F 0x98 0x80. V binarnem formatu so ti bajti 11110000b 10011111b 10011000b 10000000b.

V vsakem primeru boste na priloženem posnetku zaslona videli, da moj računalnik nekaj počne s temi bajti. V izhodu programa sem jih označil s puščicami in velikim "POGLED!".

3. korak: Kako program deluje

Sestavljanje programa iz githuba je preprosto. Tu in tam dobite repo, prikazan na naslovnici

Program se tako zažene iz ukazne vrstice: java Main input-p.webp

v priloženih primerih boste videli, da sem vodil javo Main greenman-p.webp

Naredili boste isto stvar.

Če pogledate Main.java, boste videli, da se to zgodi:

  1. Program prebere sliko v 2D matriko
  2. Program spremeni sporočilo, ki ste ga vnesli, v bajtni niz (bajt )
  3. Program nato uporabi razred MessageHider za skrivanje bajtov sporočila v matriki slik.
  4. Program nato zapiše sliko 2d matriko v datoteko (output.png) s skritimi podatki. Če pogledate to sliko, se ne razlikuje od originala
  5. Program nato prebere output-p.webp" />

Koda torej deluje tako, kot pričakujemo.

4. korak: Zaključek

Zato sem vam dal nekaj delovne kode, dokaz, da deluje v obliki slike, in nekaj zapiskov s predavanj, ki jih dam svojim študentom. Tudi jaz sem vam dal izziv! Nekaj ur sem pisal kodo in pripravljal zapiske s predavanj, zato mi je žal, da ta navodila nimajo veliko slik. Če menite, da je steganografija zanimiva, sprejmite moj izziv!

Priporočena: