Turinys:

Šis PNG yra slaptas skyrius: 4 žingsniai
Šis PNG yra slaptas skyrius: 4 žingsniai

Video: Šis PNG yra slaptas skyrius: 4 žingsniai

Video: Šis PNG yra slaptas skyrius: 4 žingsniai
Video: Use AI to Create Halloween KDP Coloring Books to Sell on Amazon 2024, Lapkritis
Anonim
Šis yra slaptas skyrius
Šis yra slaptas skyrius
Šis yra slaptas skyrius
Šis yra slaptas skyrius

Mielas skaitytojau, jūsų iššūkis yra išsiaiškinti, kokia žinia yra paslėpta „output.png“paveikslėlyje, kurį aš jums įdėjau į „github“. Pranešimui ištraukti galite naudoti „MessageHider“kodą. Jei esate sutrikęs, pakomentuokite žemiau ir aš padėsiu jums rasti atsakymą! Jūs netgi galite nustoti skaityti dabar, tiesiog eikite į „github“, gaukite kodą ir pradėkite daryti steganografiją. Pakanka pasakyti, bet prašau likti šalia ir aš jums papasakosiu daugiau.

Dvi nuotraukos čia atrodo identiškos, bet jos nėra Tai yra „greenman.png“ir „output.png“vaizdai, kuriuos susiejau aukščiau. Vienas iš vaizdų yra tik nuobodus žalio žmogaus paveikslas. Kitame yra pranešimas, paslėptas vaizdo taškuose.

Ši pamoka įkvėpta puikaus „YouTube“vaizdo įrašo. Vieną dieną vėlai vakare peržiūrėjus šį vaizdo įrašą ir stengiantis sugalvoti šaunią paskaitą ir vidurinės klasės egzaminą pažangiai „Java“programavimo klasei, gimė šis projektas. Aukščiau esantys vaizdai kartu su kodu, aprašytu šioje instrukcijoje, yra nemokami „Github“.

Prekės

Jums reikės kompiuterio ir turėsite žinoti, kaip kompiliuoti ir paleisti „Java“programą. Ši programa yra tik du trumpi failai ir turėsite ją paleisti komandinėje eilutėje.

1 žingsnis: kas yra steganografija

Turėtumėte žiūrėti „YouTube“vaizdo įrašą, kurį susiejau ankstesniame žingsnyje, bet čia yra santrauka:

Jei jums reikia paslėpti slaptą pranešimą draugui, puikus būdas tai padaryti yra naudojant „Steganography“. Vaizdo Steganografijos idėja paprasta; kompiuteriniai vaizdai yra sudaryti iš pikselių, o kiekvienas pikselis yra raudonos, žalios ir mėlynos spalvos derinys. Daugelyje kompiuterinių vaizdo formatų raudonos, žalios ir mėlynos spalvos kiekviename taške išreiškiamos reikšmėmis nuo 0 iki 127. Taigi, pavyzdžiui, labai raudono pikselio raudona vertė yra 127, o žalia ir mėlyna - nulis. Triukas yra toks: raudonas 126 intensyvumas nesiskiria nuo raudonojo 127 (žmogaus akiai). Taigi, paslėpdami pliuso ar minuso vienetą kiekviename raudoname taške, galime paslėpti bitus taškais. Jei rasime apgaulingą būdą surinkti bitų atsargines kopijas, galime gauti duomenis, kuriuos įtraukėme į vaizdą!

Būk kūrybingas! Steganografiją galima atlikti naudojant bet kokią skaitmeninę laikmeną! Galite žaisti, pavyzdžiui, su muzikos ar vaizdo įrašų failų bitais, tačiau tam reikia atlikti daugiau tyrimų už šios instrukcijos ribų.

2 veiksmas: kaip tekstas koduojamas kompiuteriuose

Kaip tekstas koduojamas kompiuteriuose
Kaip tekstas koduojamas kompiuteriuose

Tam, kad tai suprastumėte, gali prireikti CS laipsnio arba daug mėgėjų aistros. Kompiuteriai saugo duomenis bitais kaip 1 ir 0. Šie 1 ir 0 paprastai sugrupuojami į 8 grupes ir vadinami „baitais“. Kaip paaiškinta čia ir čia, yra keletas būdų, kaip mes galime liepti kompiuteriui interpretuoti baitus kaip tekstą. Norėdami kuo geriau išnaudoti šią steganografijos paskaitą/pamoką, turite daugiau ar mažiau suprasti ASCII ir UTF8. Tai yra du įprasti kalbos duomenų kodavimo būdai baitų serijoje.

Kai turėsite idėją apie šią temą, suprasite tai: ASCII ir UTF8 žodyje „the“vaizduojami šie baitai (šešioliktainiais) 0x74 0x68 0x65. Dvejetainiu būdu šie baitai yra: 01110100b 01101000b 01101101b

Be to, jūs suprasite, kad „UTF8“besišypsančio veido jaustuką vaizduoja šie baitai (šešioliktainiais) 0xF0 0x9F 0x98 0x80. Dvejetainiai šie baitai yra 11110000b 10011111b 10011000b 10000000b.

Bet kokiu atveju pridėtoje ekrano kopijoje pamatysite, kad mano kompiuteris kažką daro su šiais baitais. Programos išvestyje juos paryškinau rodyklėmis ir dideliu „LOOK!“.

3 veiksmas: kaip veikia programa

Sudaryti programą iš „github“yra paprasta. Čia ir tada gaukite repo, rodomą pirmame puslapyje

Programa vykdoma taip iš komandinės eilutės: java Main input-p.webp

pridėtuose pavyzdžiuose pamatysite, kad paleidžiau java Main greenman-p.webp

Jūs padarysite tą patį.

Jei pažvelgsite į Main.java, pamatysite, kad taip atsitinka:

  1. Programa nuskaito vaizdą į 2D masyvą
  2. Programa paverčia jūsų pateiktą pranešimą į baitų masyvą (baitas )
  3. Tada programa naudoja „MessageHider“klasę, kad paslėptų pranešimų baitus vaizdų masyve.
  4. Tada programa įrašo vaizdo 2d masyvą į failą (output.png) su paslėptais duomenimis. Jei pažvelgsite į šį vaizdą, jis nesiskiria nuo originalo
  5. Tada programa skaito output-p.webp" />

Taigi beveik kodas veikia taip, kaip tikimės.

4 žingsnis: Išvada

Taigi aš jums daviau tam tikrą darbo kodą, įrodymą, kad jis veikia kaip atvaizdas, ir keletą paskaitų, kurias pateikiu savo universiteto studentams. Aš taip pat pateikiau jums iššūkį! Aš praleidau kelias valandas rašydamas kodą ir ruošdamas paskaitų konspektus, todėl atsiprašau, kad šioje instrukcijoje nėra daug nuotraukų. Jei manote, kad steganografija yra įdomi, priimkite mano iššūkį!

Rekomenduojamas: