Obsah:

Tento PNG je tajný priestor: 4 kroky
Tento PNG je tajný priestor: 4 kroky

Video: Tento PNG je tajný priestor: 4 kroky

Video: Tento PNG je tajný priestor: 4 kroky
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Tento je tajný priestor
Tento je tajný priestor
Tento je tajný priestor
Tento je tajný priestor

Vašou úlohou, drahý čitateľ, je zistiť, aká správa sa skrýva v obrázku output.png, ktorý som pre vás vložil na github. Tam môžete použiť kód MessageHider na extrahovanie správy. Ak ste zmätení, napíšte komentár nižšie a ja vám pomôžem získať odpoveď! Môžete dokonca prestať čítať hneď teraz, jednoducho choďte na github, získajte kód a začnite sa venovať steganografii. Dosť bolo rečí, ale prosím, držte sa a poviem vám viac.

Dva obrázky tu vyzerajú identicky, ale nie sú to Obrázky, ktoré som prepojil vyššie, sú obrázky greenman-p.webp

Tento návod je inšpirovaný skvelým videom na YouTube. Potom, čo som sa jedného dňa pozeral na toto video a snažil som sa vymyslieť skvelú prednášku a strednodobú skúšku pre pokročilú triedu programovania v jazyku Java, vznikol tento projekt. Vyššie uvedené obrázky spolu s kódom popísaným v tomto návode sú na Github bezplatne.

Zásoby

Budete potrebovať počítač a budete musieť vedieť zostaviť a spustiť program Java. Tento program sú len dva krátke súbory a budete ho musieť spustiť na príkazovom riadku.

Krok 1: Čo je to steganografia

Mali by ste si pozrieť video youtube, ktoré som prepojil v predchádzajúcom kroku, ale tu je zhrnutie:

Ak potrebujete skryť tajnú správu priateľovi, cool spôsob, ako to urobiť, je Steganografia. Myšlienka imidžovej steganografie je jednoduchá; počítačové obrázky sú vyrobené z pixelov a každý pixel je kombináciou červenej, zelenej a modrej. V mnohých počítačových obrazových formátoch je množstvo červenej, zelenej a modrej v každom pixeli vyjadrené ako hodnoty od 0 do 127. Napríklad veľmi červený pixel by mal červenú hodnotu 127 a zelené a modré hodnoty nula. Trik je v tom, že červená intenzita 126 je nerozoznateľná od červenej intenzity 127 (pre ľudské oko). A tak tým, že sa v každom červenom pixeli budeme zaoberať plusom alebo mínusom jedným, môžeme skryť bity v pixeloch. Ak nájdeme záludný spôsob zhromažďovania bitov späť, môžeme načítať údaje, ktoré sme vpichli do obrazu!

Buď kreatívny! Steganografiu je možné vykonávať s akýmikoľvek digitálnymi médiami! Môžete sa hrať napríklad s bitmi v hudobných alebo video súboroch, ale to vyžaduje, aby ste sa podrobili ďalšiemu výskumu mimo rozsahu tohto pokynu.

Krok 2: Ako je text kódovaný v počítačoch

Ako sa kóduje text v počítačoch
Ako sa kóduje text v počítačoch

To, čo nasleduje, môže vyžadovať pochopenie v odbore CS alebo veľa vášne pre fanúšikov. Počítače ukladajú údaje v bitoch ako 1 s a 0 s. Tieto 1 a 0 sú typicky zoskupené do zväzkov po 8 a označujú sa ako „bajty“. Ako je vysvetlené tu a tu, existuje niekoľko spôsobov, ako môžeme počítaču povedať, aby interpretoval bajty ako text. Aby ste z tejto steganografickej prednášky/inštrukcie vyťažili maximum, musíte viac -menej porozumieť ASCII a UTF8. Toto sú dva bežné spôsoby kódovania jazykových údajov v sérii bajtov.

Keď získate predstavu o tejto téme, pochopíte to: V kódoch ASCII a UTF8 je slovo „the“reprezentované nasledujúcimi bajtmi (v hexadecimálnom formáte) 0x74 0x68 0x65. V binárnom formáte sú tieto bajty: 01110100b 01101000b 01101101b

Ďalej pochopíte, že v UTF8 sú Emoji s úškrnom predstavované nasledujúcimi bajtmi (v hexadecimálnom formáte) 0xF0 0x9F 0x98 0x80. V binárnom formáte sú tieto bajty 11110000b 10011111b 10011000b 10000000b.

V každom prípade na priloženom obrázku obrazovky uvidíte, že môj počítač s týmito bytmi niečo robí. Vo výstupe programu som ich zvýraznil šípkami a veľkým „POZRI!“.

Krok 3: Ako program funguje

Zostavenie programu z github je jednoduché. Získajte repo zobrazené na titulnej stránke tu a potom

Program sa spúšťa takto z príkazového riadka: java Main input-p.webp

v priložených príkladoch uvidíte, že som spustil javu Main greenman-p.webp

Urobíte to isté.

Ak sa pozriete na Main.java, uvidíte, že sa to deje:

  1. Program načíta obrázok do 2D poľa
  2. Program zmení vami zadanú správu na bajtové pole (bajt )
  3. Program potom použije triedu MessageHider na skrytie bajtov správy v obrazovom poli.
  4. Program potom zapíše pole 2d obrázka do súboru (output.png) so skrytými údajmi vo vnútri. Ak sa pozriete na tento obrázok, je na nerozoznanie od originálu
  5. Program potom načíta output-p.webp" />

Kód do značnej miery funguje tak, ako očakávame.

Krok 4: Záver

Dal som vám teda pracovný kód, dôkaz, že funguje, vo forme obrázku a niekoľko poznámok z prednášky, ktoré dávam svojim vysokoškolákom. Tiež som ti dal výzvu! Strávil som niekoľko hodín písaním kódu a prípravou prednášok, takže mi je ľúto, že tento návod nemá veľa obrázkov. Ak si myslíte, že steganografia je zaujímavá, prijmite moju výzvu!

Odporúča: