Съдържание:

Това PNG е тайно отделение: 4 стъпки
Това PNG е тайно отделение: 4 стъпки

Видео: Това PNG е тайно отделение: 4 стъпки

Видео: Това PNG е тайно отделение: 4 стъпки
Видео: Einbürgerungstest | Test Leben in Deutschland | Fragen 1-300 | mit Lösung | with subtitles مترجم 2024, Ноември
Anonim
Това е тайно отделение
Това е тайно отделение
Това е тайно отделение
Това е тайно отделение

Вашето предизвикателство, скъпи читателю, е да разберете какво съобщение е скрито в изображението output.png, което съм поставил на github за вас. Можете да използвате кода на MessageHider там, за да извлечете съобщението. Ако сте объркани, моля, коментирайте по -долу и ще ви помогна да получите отговора! Можете дори да спрете да четете в момента, просто отидете на github, вземете кода и започнете да правите стеганография. Достатъчно казано, но моля, останете и аз ще ви кажа повече.

Двете снимки тук изглеждат идентични, но не са. Това са изображенията greenman-p.webp

Тази инструкция е вдъхновена от страхотно видео в YouTube. След като изгледахме това видео късно през нощта един ден и се мъчехме да измислим готина лекция и междинен изпит за напреднал клас по програмиране на Java, този проект се роди. Изображенията по -горе, заедно с кода, описан в тази инструкция, са безплатни в Github.

Консумативи

Ще ви трябва компютър и ще трябва да знаете как да компилирате и стартирате Java програма. Тази програма е само два кратки файла и ще трябва да я стартирате в командния ред.

Стъпка 1: Какво е стеганография

Трябва да гледате видеоклипа в YouTube, който свързах в предишната стъпка, но ето резюмето:

Ако трябва да скриете тайно съобщение до приятел, готин начин да го направите е със стеганографията. Идеята за стеганографията на изображението е проста; компютърните изображения са направени от пиксели и всеки пиксел е комбинация от червено, зелено и синьо. В много компютърни формати на изображения количествата червено, зелено и синьо във всеки пиксел се изразяват като стойности от 0-127. Така например, един много червен пиксел би имал червена стойност 127 и зелени и сини стойности нула. Номерът е следният: червеният интензитет 126 не се различава от червения интензитет 127 (за човешкото око). И така, като играем с плюс или минус един във всеки червен пиксел, можем да скрием битове в пиксели. Ако намерим подъл начин да съберем битовете обратно, можем да извлечем данните, които се промъкнахме в изображението!

Бъди креативен! Стеганографията може да се прави с всякакви цифрови носители! Можете да играете с битове в музикални или видео файлове например, но това изисква да направите повече изследвания извън обхвата на тази инструкция.

Стъпка 2: Как се кодира текстът на компютрите

Как се кодира текст на компютри
Как се кодира текст на компютри

Това, което следва тук, може да изисква диплома по CS или много хобистка страст, за да се разбере. Компютрите съхраняват данни в битове като 1s и 0s. Тези 1 и 0 обикновено са групирани в групи от 8 и се наричат "байтове". Както е обяснено тук и тук, има няколко начина, по които можем да кажем на компютъра да интерпретира байтове като текст. За да извлечете максимума от тази лекция/инструкции по стеганография, трябва повече или по -малко да разбирате ASCII и UTF8. Това са два често срещани начина за кодиране на езикови данни в поредица от байтове.

След като имате представа за тази тема, ще разберете това: В ASCII и UTF8 думата „the“е представена от следните байтове (в шестнадесетичен код) 0x74 0x68 0x65. В двоичен формат тези байтове са: 01110100b 01101000b 01101101b

Освен това ще разберете, че в UTF8 емоджи с усмихнато лице е представено от следните байтове (в шестнадесетичен) 0xF0 0x9F 0x98 0x80. В двоичен формат тези байтове са 11110000b 10011111b 10011000b 10000000b.

Във всеки случай ще видите на прикачения екран, че компютърът ми прави нещо с тези байтове. Подчертал съм ги в изхода на програмата със стрелки и голямо „ГЛЕДАЙТЕ!“.

Стъпка 3: Как работи програмата

Компилирането на програмата от github е лесно. Вземете репо, показан на първа страница тук и след това

Програмата се изпълнява така от командния ред: java Main input-p.webp

в приложените примери ще видите, че съм изпълнявал java Main greenman-p.webp

Вие ще направите същото.

Ако погледнете Main.java, ще видите, че това се случва:

  1. Програмата чете изображението в 2D масив
  2. Програмата превръща съобщението, което сте предоставили, в байтов масив (байт )
  3. След това програмата използва клас MessageHider, за да скрие байтовете на съобщенията в масива с изображения.
  4. След това програмата записва изображението 2d масив във файл (output.png) със скритите данни вътре. Ако погледнете това изображение, то не се различава от оригинала
  5. След това програмата чете output-p.webp" />

Така че почти кодът работи, както очакваме.

Стъпка 4: Заключение

Затова ви дадох някакъв работен код, доказателство, че работи под формата на изображение, и няколко бележки за лекции, които давам на студентите си. Аз също ти дадох предизвикателство! Прекарах няколко часа в писане на кода и подготовка на бележки за лекции, така че съжалявам, че тази инструкция няма много снимки. Ако смятате, че стеганографията е интересна, приемете моето предизвикателство!

Препоръчано: