Оглавление:

Этот PNG является секретным отсеком: 4 шага
Этот PNG является секретным отсеком: 4 шага

Видео: Этот PNG является секретным отсеком: 4 шага

Видео: Этот PNG является секретным отсеком: 4 шага
Видео: ЧУДОВИЩЕ ЖЕСТОКО УБИВАЕТ СЛАБЕЙШЕГО ОХОТНИКА, НО СИСТЕМА СПАСАЕТ ЕГО И ДЕЛАЕТ СИЛЬНЕЙШИМ 2024, Ноябрь
Anonim
PNG секретный отсек
PNG секретный отсек
PNG секретный отсек
PNG секретный отсек

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

Две картинки здесь выглядят одинаково, но это не так. Это изображения greenman-p.webp

Это руководство вдохновлено отличным видео на YouTube. После того, как однажды поздно вечером посмотрели это видео и изо всех сил пытались придумать классную лекцию и промежуточный экзамен для продвинутого класса программирования Java, родился этот проект. Приведенные выше изображения вместе с кодом, описанным в этом руководстве, размещены на Github бесплатно.

Запасы

Вам понадобится компьютер, и вы должны будете знать, как скомпилировать и запустить программу Java. Эта программа представляет собой всего два коротких файла, и вам нужно будет запустить ее из командной строки.

Шаг 1. Что такое стеганография

Вы должны посмотреть видео на YouTube, которое я связал на предыдущем шаге, но вот краткое изложение:

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

Будь креативным! Стеганографию можно выполнять на любых цифровых носителях! Вы можете, например, поиграть с битами в музыкальных или видеофайлах, но это требует от вас дополнительных исследований, выходящих за рамки данного руководства.

Шаг 2. Как текст кодируется на компьютерах

Как текст кодируется на компьютерах
Как текст кодируется на компьютерах

Для понимания того, что следует здесь, может потребоваться степень в области CS или много энтузиазма. Компьютеры хранят данные в битах как единицы и нули. Эти единицы и нули обычно группируются в группы по 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. Программа превращает предоставленное вами сообщение в массив байтов (byte )
  3. Затем программа использует класс MessageHider, чтобы скрыть байты сообщения в массиве изображений.
  4. Затем программа записывает массив 2d изображений в файл (output.png) со скрытыми данными внутри. Если вы посмотрите на это изображение, оно неотличимо от оригинала.
  5. Затем программа считывает output-p.webp" />

В общем, код работает так, как мы ожидали.

Шаг 4: Заключение

Итак, я дал вам рабочий код, доказательство того, что он работает в виде изображения, и несколько конспектов лекций, которые я даю студентам моего университета. Я тоже бросил тебе вызов! Я потратил несколько часов на написание кода и подготовку конспектов лекций, поэтому мне жаль, что в этом руководстве не так много изображений. Если вы считаете, что стеганография интересна, примите мой вызов!

Рекомендуемые: