Sisällysluettelo:

Tämä PNG on salainen osasto: 4 vaihetta
Tämä PNG on salainen osasto: 4 vaihetta

Video: Tämä PNG on salainen osasto: 4 vaihetta

Video: Tämä PNG on salainen osasto: 4 vaihetta
Video: Curious Beginnings | Critical Role: THE MIGHTY NEIN | Episode 1 2024, Marraskuu
Anonim
Tämä on salainen osasto
Tämä on salainen osasto
Tämä on salainen osasto
Tämä on salainen osasto

Haasteesi, rakas lukija, on selvittää, mikä viesti on piilotettu output-p.webp

Nämä kaksi kuvaa näyttävät identtisiltä, mutta ne eivät ole Nämä ovat greenman.png- ja output-p.webp

Tämä ohje on inspiroitu upeasta YouTube -videosta. Kun katsoimme tämän videon myöhään illalla yhden päivän ja kamppailimme ajatellaksesi viileää luentoa ja välitestiä edistyneelle Java -ohjelmointikurssille, tämä projekti syntyi. Yllä olevat kuvat sekä tässä ohjeessa kuvattu koodi ovat ilmaisia Githubissa.

Tarvikkeet

Tarvitset tietokoneen ja sinun on tiedettävä, miten Java -ohjelma käännetään ja ajetaan. Tämä ohjelma on vain kaksi lyhyttä tiedostoa ja sinun on suoritettava se komentoriviltä.

Vaihe 1: Mikä on steganografia

Sinun pitäisi katsoa edellisessä vaiheessa linkittämäni YouTube -video, mutta tässä on yhteenveto:

Jos sinun täytyy piilottaa salainen viesti ystävällesi, hieno tapa tehdä se on Steganography. Kuvan Steganografian idea on yksinkertainen; Tietokonekuvat koostuvat pikseleistä, ja jokainen pikseli on punaisen, vihreän ja sinisen yhdistelmä. Monissa tietokoneiden kuvamuotoissa punaisen, vihreän ja sinisen määrä kussakin pikselissä ilmaistaan arvoina 0-127. Esimerkiksi hyvin punaisen pikselin punainen arvo on 127 ja vihreä ja sininen nolla. Temppu on seuraava: punaista voimakkuutta 126 ei voi erottaa punaisesta intensiteetistä 127 (ihmissilmälle). Ja niin piilottamalla plus tai miinus yksi jokaisessa punaisessa pikselissä voimme piilottaa bitit pikseleinä. Jos löydämme ovelan tavan kerätä bitit takaisin ylös, voimme noutaa tiedot, jotka olemme hiipineet kuvaan!

Ole luova! Steganografia voidaan tehdä millä tahansa digitaalisella medialla! Voit pelata esimerkiksi musiikki- tai videotiedostojen bitteillä, mutta tämä edellyttää, että lähdet tekemään enemmän tutkimusta tämän ohjeen soveltamisalan ulkopuolella.

Vaihe 2: Kuinka teksti koodataan tietokoneissa

Kuinka teksti koodataan tietokoneissa
Kuinka teksti koodataan tietokoneissa

Seuraavat asiat saattavat edellyttää tutkinnon suorittamista CS: ssä tai paljon harrastajien intohimoa ymmärtääkseen. Tietokoneet tallentavat tiedot bitteinä 1s ja 0s. Nämä 1: t ja 0: t on tyypillisesti ryhmitelty 8: n ryhmiksi ja niitä kutsutaan "tavuiksi". Kuten täällä ja täällä on selitetty, on muutamia tapoja, joilla voimme käskeä tietokoneen tulkitsemaan tavuja tekstinä. Jotta saat kaiken irti tästä steganografian luennosta/opetettavasta, sinun on ymmärrettävä enemmän tai vähemmän ASCII ja UTF8. Nämä ovat kaksi yleistä tapaa koodata kielitiedot tavusarjoihin.

Kun sinulla on käsitys tästä aiheesta, ymmärrät tämän: ASCII: ssä ja UTF8: ssa sanaa "edustavat" seuraavat tavut (heksadesimaaleina) 0x74 0x68 0x65. Binaarimuodossa nämä tavut ovat: 01110100b 01101000b 01101101b

Lisäksi ymmärrät, että UTF8: ssa Grinning Face Emoji edustaa seuraavia tavuja (heksadesimaaleina) 0xF0 0x9F 0x98 0x80. Binäärinä nämä tavut ovat 11110000b 10011111b 10011000b 10000000b.

Joka tapauksessa näet liitteenä olevassa kuvakaappauksessa, että tietokoneeni tekee jotain näiden tavujen kanssa. Olen korostanut ne ohjelman tuotoksessa nuolilla ja suurella "LOOK!".

Vaihe 3: Kuinka ohjelma toimii

Ohjelman kääntäminen githubista on helppoa. Näet repun etusivulla täällä ja silloin

Ohjelma suoritetaan näin komentoriviltä: java Main input-p.webp

oheisista esimerkeistä näet, että olen suorittanut java Main greenman-p.webp

Teet saman asian.

Jos katsot Main.javaa, näet, että näin tapahtuu:

  1. Ohjelma lukee kuvan 2D -matriisiksi
  2. Ohjelma muuttaa lähettämäsi viestin tavutaulukkoksi (tavu )
  3. Ohjelma käyttää sitten MessageHider -luokkaa piilottaakseen kuvaryhmän viestitavu.
  4. Ohjelma kirjoittaa sitten kuvan 2d -taulukon tiedostoon (output.png), jonka sisällä on piilotetut tiedot. Jos katsot tätä kuvaa, sitä ei voi erottaa alkuperäisestä
  5. Ohjelma lukee output.png: n uuteen 2D -matriisiin ja käyttää extractMessage () -funktiota poistaakseen viimeisen bitin niin monesta tavusta kuin pyydät. Nämä bitit tulostetaan näytölle 8s: n ryhmissä, joten näet binäärisen esityksen siitä, mitä tietoja on piilotettu.

Koodi toimii siis odotetusti.

Vaihe 4: Johtopäätös

Joten olen antanut sinulle jonkin toimivan koodin, todisteen siitä, että se toimii kuvan muodossa, ja joitakin luentomuistiinpanoja, jotka annan yliopisto -opiskelijoilleni. Annoin sinulle myös haasteen! Vietin muutaman tunnin koodin kirjoittamiseen ja luentomuistiinpanojen valmisteluun, joten olen pahoillani, että tässä ohjeessa ei ole paljon kuvia. Jos steganografia on mielestäsi mielenkiintoista, ota haaste vastaan!

Suositeltava: