Talaan ng mga Nilalaman:

Ang PNG na Ito ay Lihim na Kompartimento: 4 na Hakbang
Ang PNG na Ito ay Lihim na Kompartimento: 4 na Hakbang

Video: Ang PNG na Ito ay Lihim na Kompartimento: 4 na Hakbang

Video: Ang PNG na Ito ay Lihim na Kompartimento: 4 na Hakbang
Video: Secret Intelligent. Paano mo Malalaman na IKAW ay LIHIM na MATALINO? 2024, Nobyembre
Anonim
Ang na Ito ay Lihim na Kompartimento
Ang na Ito ay Lihim na Kompartimento
Ang na Ito ay Lihim na Kompartimento
Ang na Ito ay Lihim na Kompartimento

Ang iyong hamon, mahal na mambabasa, ay upang malaman kung anong mensahe ang nakatago sa output-p.webp

Ang dalawang larawan dito ay magkapareho ngunit ang mga ito ay hindi Ito ang mga greenman-p.webp

Ang itinuturo na ito ay inspirasyon ng isang mahusay na video sa youtube. Matapos mapanood ang video na ito nang gabing isang araw at nagpupumilit na mag-isip ng isang cool na panayam at pagsusulit sa midterm para sa isang advanced na klase sa pagprograma ng Java, ipinanganak ang proyektong ito. Ang mga imahe sa itaas, kasama ang code na inilarawan sa itinuturo na ito, ay libre sa Github.

Mga gamit

Kakailanganin mo ang isang computer at malalaman mo kung paano mag-ipon at magpatakbo ng isang programa sa Java. Ang program na ito ay dalawang maikling file lamang at kakailanganin mong patakbuhin ito sa linya ng utos.

Hakbang 1: Ano ang Steganography

Dapat mong panoorin ang video ng youtube na na-link ko sa nakaraang hakbang, ngunit narito ang buod:

Kung kailangan mong itago ang isang lihim na mensahe sa isang kaibigan, ang isang cool na paraan upang gawin ito ay sa Steganography. Ang ideya ng imaheng Steganography ay simple; Ang mga imahe ng computer ay gawa sa mga pixel, at ang bawat pixel ay isang kumbinasyon ng pula, berde, at asul. Sa maraming mga format ng imahe ng computer ang mga bilang ng pula, berde, at asul sa bawat pixel ay ipinapakita bilang mga halagang 0-127. Kaya, halimbawa, ang isang pulang pulang pixel ay magkakaroon ng pulang halaga ng 127 at berde at asul na mga halaga na zero. Ang lansihin ay ito: ang isang pulang intensidad na 126 ay hindi mailalarawan mula sa isang pulang intensidad na 127 (sa isang mata ng tao). At sa pamamagitan ng pagkalikot ng plus o minus isa sa bawat pulang pixel maaari nating maitago ang mga piraso sa mga pixel. Kung makahanap kami ng isang palihim na paraan upang makalikom ang mga piraso, maaari naming makuha ang data na nakuha namin sa imahe!

Maging malikhain! Maaaring gawin ang steganography sa anumang digital media! Maaari mong i-play ang mga piraso sa mga file ng musika o video bilang halimbawa, ngunit nangangailangan ito sa iyo na gumawa ng mas maraming pananaliksik sa labas ng saklaw ng itinuturo na ito.

Hakbang 2: Paano Naka-encode ang Teksto sa Mga Computer

Paano Naka-encode ang Teksto sa Mga Computer
Paano Naka-encode ang Teksto sa Mga Computer

Ang sumusunod dito ay maaaring mangailangan ng isang degree sa CS o ng maraming libangan ng libangan upang maunawaan. Ang mga computer ay nag-iimbak ng data sa mga piraso bilang 1s at 0. Ang mga 1 at 0 na ito ay karaniwang pinangkat sa mga bungkos ng 8 at tinukoy bilang "bytes". Tulad ng ipinaliwanag dito at dito may ilang mga paraan na maaari nating sabihin sa isang computer na bigyang kahulugan ang mga byte bilang teksto. Upang masulit ang panayam ng steganography na ito / nagtuturo kailangan mo upang higit o mas kaunting maunawaan ang ASCII at UTF8. Ito ang dalawang karaniwang paraan upang ma-encode ang data ng wika sa isang serye ng mga byte.

Kapag mayroon kang ideya tungkol sa paksang ito mauunawaan mo ito: Sa ASCII at UTF8 ang salitang "the" ay kinakatawan ng mga sumusunod na byte (sa hex) 0x74 0x68 0x65. Sa binary, ang mga byte na ito ay: 01110100b 01101000b 01101101b

Bukod dito, mauunawaan mo na sa UTF8 ang isang Grinning Face Emoji ay kinakatawan ng mga sumusunod na byte (sa hex) 0xF0 0x9F 0x98 0x80. Sa binary ang mga byte na ito ay 11110000b 10011111b 10011000b 10000000b.

Sa anumang kaganapan makikita mo sa nakalakip na screenshot na ang aking computer ay may ginagawa sa mga byte na ito. Na-highlight ko ang mga ito sa output ng programa gamit ang mga arrow at isang malaking "TINGNAN!".

Hakbang 3: Paano Gumagana ang Program

Ang pag-iipon ng programa mula sa github ay madali. Ipakita ang repo sa harap na pahina dito at pagkatapos

Ang programa ay pinapatakbo tulad nito mula sa linya ng utos: java Pangunahing input-p.webp

sa mga nakalakip na halimbawa makikita mo na nagpatakbo ako ng java Main greenman-p.webp

Gagawin mo ang parehong bagay.

Kung titingnan mo ang Main.java makikita mo na ito ang nangyayari:

  1. Binabasa ng programa ang imahe sa isang 2D array
  2. Ginagawa ng programa ang mensahe na iyong ibinigay sa isang byte array (byte )
  3. Gumagamit ang programa ng isang klase ng MessageHider upang maitago ang mga byte ng mensahe sa larawang imahen.
  4. Sinusulat ng programa ang imahe na 2d array sa isang file (output.png) na may nakatagong data sa loob. Kung titingnan mo ang imaheng ito hindi ito makikilala mula sa orihinal
  5. Pagkatapos ay binabasa ng programa ang output-p.webp" />

Napakahusay na gumagana ang code ayon sa inaasahan namin.

Hakbang 4: Konklusyon

Kaya't binigyan ko kayo ng ilang working code, patunay na gumagana ito sa anyo ng isang imahe, at ilang tala ng panayam na ibinibigay ko sa aking mga estudyante sa unibersidad. Binigyan din kita ng hamon! Gumugol ako ng ilang oras sa pagsulat ng code at paghahanda ng mga tala ng panayam kaya't humihingi ako ng pasensya na ang itinuro na ito ay walang maraming mga larawan. Kung sa tingin mo ay nakakainteres ang steganography mangyaring tanggapin ang aking hamon!

Inirerekumendang: