Obsah:

Tento PNG je tajný oddíl: 4 kroky
Tento PNG je tajný oddíl: 4 kroky

Video: Tento PNG je tajný oddíl: 4 kroky

Video: Tento PNG je tajný oddíl: 4 kroky
Video: 100 КНОПОК НА ХЭЛЛОУИН! В ДОМЕ УЧИЛКИ МАЛЕНЬКИХ КОШМАРОВ! 100 кнопок в реальной жизни! 2024, Listopad
Anonim
Tento je tajný oddíl
Tento je tajný oddíl
Tento je tajný oddíl
Tento je tajný oddíl

Vaším úkolem, drahý čtenáři, je zjistit, jaká zpráva se skrývá v obrázku output.png, který jsem pro vás vložil na github. Zde můžete použít kód MessageHider k extrahování zprávy. Pokud jste zmatení, napište prosím níže komentář a já vám pomůžu získat odpověď! Můžete dokonce přestat číst právě teď, prostě přejděte na github, získejte kód a začněte dělat steganografii. Dost bylo řečí, ale prosím vydržte a řeknu vám víc.

Dva obrázky zde vypadají shodně, ale nejsou. Jedná se o obrázky greenman-p.webp

Tento návod je inspirován skvělým videem na YouTube. Poté, co jsem se jednoho dne díval na toto video pozdě v noci a snažil jsem se vymyslet skvělou přednášku a zápočtovou zkoušku pro pokročilou třídu programování v Javě, se zrodil tento projekt. Výše uvedené obrázky spolu s kódem popsaným v tomto pokynu jsou na Githubu zdarma.

Zásoby

Budete potřebovat počítač a budete muset vědět, jak zkompilovat a spustit program Java. Tento program jsou jen dva krátké soubory a budete jej muset spustit na příkazovém řádku.

Krok 1: Co je to steganografie

Měli byste se podívat na video z YouTube, které jsem propojil v předchozím kroku, ale zde je shrnutí:

Pokud potřebujete skrýt tajnou zprávu příteli, skvělý způsob, jak to udělat, je Steganography. Myšlenka image Steganografie je jednoduchá; počítačové obrázky jsou tvořeny pixely a každý pixel je kombinací červené, zelené a modré. V mnoha formátech počítačových obrazů je množství červené, zelené a modré v každém pixelu vyjádřeno jako hodnoty od 0 do 127. Například velmi červený pixel by měl červenou hodnotu 127 a zelené a modré hodnoty nula. Trik je v tom: červená intenzita 126 je nerozeznatelná od červené intenzity 127 (pro lidské oko). A tak tím, že si v každém červeném pixelu pohrajeme s plus nebo mínus jedním, můžeme skrýt bity v pixelech. Pokud najdeme záludný způsob shromažďování bitů zpět, můžeme načíst data, která jsme vklouzli do obrazu!

Být kreativní! Steganografii lze provádět s jakýmikoli digitálními médii! Můžete si hrát například s bity v hudebních nebo video souborech, ale to vyžaduje, abyste se vydali na další průzkum mimo rámec tohoto pokynu.

Krok 2: Jak je text kódován na počítačích

Jak se kóduje text na počítačích
Jak se kóduje text na počítačích

To, co zde následuje, může vyžadovat titul v CS nebo spoustu vášně pro nadšence k pochopení. Počítače ukládají data v bitech jako 1 s a 0 s. Tyto 1 a 0 jsou obvykle seskupeny do svazků po 8 a označovány jako „bajty“. Jak je vysvětleno zde a zde, existuje několik způsobů, jak můžeme počítači říci, aby interpretoval bajty jako text. Abyste z této steganografické přednášky/instruktáže vytěžili maximum, musíte více či méně rozumět ASCII a UTF8. Toto jsou dva běžné způsoby kódování jazykových dat v sérii bajtů.

Jakmile získáte představu o tomto tématu, pochopíte toto: V ASCII a UTF8 je slovo „the“reprezentováno následujícími bajty (v hexadecimálním formátu) 0x74 0x68 0x65. V binárním formátu jsou tyto bajty: 01110100b 01101000b 01101101b

Kromě toho pochopíte, že v UTF8 je emoji s úsměvem představována následujícími bajty (v hexadecimálním formátu) 0xF0 0x9F 0x98 0x80. V binárním formátu jsou tyto bajty 11110000b 10011111b 10011000b 10000000b.

V každém případě na přiloženém snímku obrazovky uvidíte, že můj počítač s těmito bajty něco dělá. Zvýraznil jsem je ve výstupu programu pomocí šipek a velkého „LOOK!“.

Krok 3: Jak program funguje

Kompilace programu z githubu je snadná. Získejte repo na úvodní stránce zde a poté

Program se spouští takto z příkazového řádku: java Main input-p.webp

v přiložených příkladech uvidíte, že jsem spustil java Main greenman-p.webp

Uděláš to samé.

Když se podíváte na Main.java, uvidíte, že se to stane:

  1. Program načte obrázek do 2D pole
  2. Program změní vámi zadanou zprávu na bajtové pole (byte )
  3. Program poté pomocí třídy MessageHider skryje bajty zpráv v poli obrázku.
  4. Program poté zapíše obrazové pole 2d do souboru (output.png) se skrytými daty uvnitř. Když se podíváte na tento obrázek, je k nerozeznání od originálu
  5. Program poté načte output-p.webp" />

Kód tedy funguje tak, jak očekáváme.

Krok 4: Závěr

Dal jsem vám tedy nějaký pracovní kód, důkaz, že funguje ve formě obrázku, a několik poznámek z přednášky, které dávám svým studentům vysokých škol. Také jsem ti dal výzvu! Strávil jsem několik hodin psaním kódu a přípravou poznámek z přednášky, takže se omlouvám, že tento návod nemá mnoho obrázků. Pokud si myslíte, že je steganografie zajímavá, přijměte moji výzvu!

Doporučuje: