INHOUDSOPGAWE:

Hierdie PNG is 'n geheime kompartement: 4 stappe
Hierdie PNG is 'n geheime kompartement: 4 stappe

Video: Hierdie PNG is 'n geheime kompartement: 4 stappe

Video: Hierdie PNG is 'n geheime kompartement: 4 stappe
Video: Gesichtsbehandlung zu Hause nach 50 Jahren. Beratung der Kosmetikerin. 2024, Julie
Anonim
Hierdie is 'n geheime kompartement
Hierdie is 'n geheime kompartement
Hierdie is 'n geheime kompartement
Hierdie is 'n geheime kompartement

U uitdaging, liewe leser, is om uit te vind watter boodskap verborge is in die output-p.webp

Die twee prente hier lyk identies, maar dit is nie. Dit is die greenman.png- en output-p.webp

Hierdie instruksie is geïnspireer deur 'n wonderlike YouTube -video. Nadat ek eendag hierdie video laataand gekyk het en gesukkel het om aan 'n gawe lesing en tussentydse eksamen vir 'n gevorderde Java -programmeringsklas te dink, is hierdie projek gebore. Die foto's hierbo, saam met die kode wat in hierdie instruksie beskryf word, is gratis op Github.

Voorrade

U benodig 'n rekenaar en u moet weet hoe u 'n Java -program kan saamstel en uitvoer. Hierdie program is slegs twee kort lêers en u moet dit op die opdragreël laat loop.

Stap 1: Wat is Steganografie

U moet die YouTube -video kyk wat ek in die vorige stap gekoppel het, maar hier is die opsomming:

As u 'n geheime boodskap vir 'n vriend moet verberg, is dit 'n goeie manier om dit met Steganography te doen. Die idee van beeld Steganografie is eenvoudig; rekenaarbeelde bestaan uit pixels, en elke pixel is 'n kombinasie van rooi, groen en blou. In baie rekenaarbeeldformate word die hoeveelhede rooi, groen en blou in elke pixel uitgedruk as waardes van 0-127. Byvoorbeeld, 'n baie rooi pixel het 'n rooi waarde van 127 en groen en blou waardes van nul. Die truuk is die volgende: 'n rooi intensiteit van 126 is ononderskeibaar van 'n rooi intensiteit van 127 (vir 'n menslike oog). En so kan ons stukkies in pixels wegsteek deur te pluis of minus een in elke rooi pixel. As ons 'n skelm manier vind om die stukkies weer bymekaar te maak, kan ons die data wat ons in die prentjie ingesluip het, ophaal!

Wees kreatief! Steganografie kan met enige digitale media gedoen word! U kan byvoorbeeld met stukkies in musiek- of videolêers speel, maar dit vereis dat u meer navorsing moet doen buite die omvang van hierdie instruksies.

Stap 2: Hoe teks op rekenaars gekodeer word

Hoe teks op rekenaars gekodeer word
Hoe teks op rekenaars gekodeer word

Wat hier volg, kan 'n graad in CS of baie stokperdjie -passie vereis om dit te verstaan. Rekenaars stoor data in bisse as 1s en 0s. Hierdie 1's en 0'e word tipies in groepe van 8 gegroepeer en word 'bytes' genoem. Soos hier en hier verduidelik word, is daar min maniere waarop ons 'n rekenaar kan vertel om grepe as teks te interpreteer. Om die meeste uit hierdie steganografie -lesing/instruksies te haal, moet u ASCII en UTF8 min of meer verstaan. Dit is twee algemene maniere om taaldata in 'n reeks grepe te kodeer.

As u 'n idee het oor hierdie onderwerp, sal u dit verstaan: In ASCII en UTF8 word die woord "die" voorgestel deur die volgende grepe (in hex) 0x74 0x68 0x65. In binêre is hierdie grepe: 01110100b 01101000b 01101101b

Verder sal u verstaan dat in UTF8 'n Grinning Face Emoji voorgestel word deur die volgende grepe (in heks) 0xF0 0x9F 0x98 0x80. In binêre is hierdie grepe 11110000b 10011111b 10011000b 10000000b.

U sal in elk geval op die aangehegte skermkiekie sien dat my rekenaar iets met hierdie grepe doen. Ek het hulle uitgelig in die programuitset met pyle en 'n groot "LOOK!".

Stap 3: Hoe die program werk

Die opstel van die program vanaf github is maklik. Kry die afkorting hier en dan op die voorblad

Die program word so uitgevoer vanaf die opdragreël: java Main input-p.webp

in die aangehegte voorbeelde sal u sien dat ek java Main greenman-p.webp

U sal dieselfde ding doen.

As u na Main.java kyk, sal u sien dat dit is wat gebeur:

  1. Die program lees die prent in 'n 2D -skikking
  2. Die program verander die boodskap wat u verskaf het in 'n byte -skikking (byte )
  3. Die program gebruik dan 'n MessageHider -klas om die boodskapgrepe in die beeldreeks te verberg.
  4. Die program skryf dan die beeld 2d -skikking na 'n lêer (output.png) met die verborge data daarin. As u na hierdie beeld kyk, kan dit nie van die oorspronklike onderskei word nie
  5. Die program lees dan output-p.webp" />

Die kode werk dus amper soos ons verwag.

Stap 4: Gevolgtrekking

Ek het u dus 'n werkskode gegee, 'n bewys dat dit in die vorm van 'n beeld werk, en 'n paar lesingsnotas wat ek aan my universiteitstudente gee. Ek het jou ook 'n uitdaging gegee! Ek het 'n paar uur lank die kode geskryf en lesingsnotas voorberei, so ek is jammer dat hierdie instruksies nie baie foto's het nie. As u dink dat steganografie interessant is, aanvaar dan my uitdaging!

Aanbeveel: