Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
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
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:
- Program načíta obrázok do 2D poľa
- Program zmení vami zadanú správu na bajtové pole (bajt )
- Program potom použije triedu MessageHider na skrytie bajtov správy v obrazovom poli.
- 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
- 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!