«
»
WEBWEB - PHP

Image Steganography: Скрытие текста в изображениях при помощи PHP

Стеганография – это искусство и наука написания скрытого сообщения таким образом, чтобы никто, кроме отправителя и предполагаемого получателя, не подозревал о существовании сообщения.

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

Связанная теория:

Изображения состоят из маленьких точек, называемых пикселями. Каждый пиксель представлен 3 байтами: один для красного, один для зеленого и один для синего. Композиция этих трех цветов определяет фактический цвет, который показывает пиксель.

Красный:

Двоичный код: 11001001

Десятичное число: 201

Зеленый цвет:

Двоичный код: 11111000

Десятичное число: 201

Синий:

Двоичный код: 00000011

Десятичное число: 3

Эта композиция рождает оранжевый цвет.

Основная идея Image Steganography заключается в том, что изменение наименьшего значащего бита (LSB) не обнаруживается человеческим глазом. Поэтому мы модифицируем младший бит значения RGB, чтобы сохранить скрытое сообщение в сообщении, не влияя на цвет изображения.

В этом примере мы меняем только LSB синего компонента. Но мы можем изменить LSB всех компонентов Red, Green и Blue, если захотим. Поскольку мы меняем только младший бит синего компонента, количество информации, которое мы можем скрыть, уменьшается. Мы также можем сохранить длину скрытого сообщения в изображении, которое не было сделано в этом руководстве.

Предположим, мы хотим скрыть 1101 в изображении.

Сначала мы получаем значение RGB каждого пикселя в изображении. Поскольку мы скрываем 4-битные данные и меняем синий компонент, поэтому нам нужно 4 пикселя изображения.

Предположим, мы получили следующие значения RGB в первых 4 пикселях изображения:

11001100 10010001 00101011

00011000 11110000 11111110

11100010 00100101 01010101

11111101 00001010 01000011

Теперь мы заменим последний бит значения RGB каждого пикселя на 1101 последовательно.

Итак, новое значение RGB становится:

11001100 10010001 00101011

00011000 11110000 11111111

11100010 00100101 01010100

11111101 00001010 01000011

Выделенный бит представляет сообщение, которое мы скрываем на изображении.

Теперь мы устанавливаем новое значение RGB в пиксель. Это изменение не обнаружено человеческим глазом, и изображение выглядит одинаково.

Зелье шифрования завершено, и теперь мы расшифруем скрытое сообщение на картинке.

Для этого мы выбираем значение RGB каждого пикселя, а затем соединяем LSB, чтобы получить наше скрытое сообщение.

Реализация с PHP

Нам нужно одно изображение и три php-скрипта для реализации базовой стеганографии изображения.

  • encrypt.php
  • decrypt.php
  • functions.php
  • 1.jpg

encrypt.php

<?php include('functions.php'); $message_to_hide = 'hello'; $binary_message = toBin($message_to_hide); $message_length = strlen($binary_message); $src = '1.jpg'; $im = imagecreatefromjpeg($src); for($x=0;$x<$message_length;$x++){ $y = $x; $rgb = imagecolorat($im,$x,$y); $r = ($rgb >>16) & 0xFF; $g = ($rgb >>8) & 0xFF; $b = $rgb & 0xFF; $newR = $r; $newG = $g; $newB = toBin($b); $newB[strlen($newB)-1] = $binary_message[$x]; $newB = toString($newB); $new_color = imagecolorallocate($im,$newR,$newG,$newB); imagesetpixel($im,$x,$y,$new_color); } echo $x; imagepng($im,'simple.png'); imagedestroy($im); ?>

decrypt.php

<?php include('functions.php'); $src = 'simple.png'; $im = imagecreatefrompng($src); $real_message = ''; for($x=0;$x<40;$x++){ $y = $x; $rgb = imagecolorat($im,$x,$y); $r = ($rgb >>16) & 0xFF; $g = ($rgb >>8) & 0xFF; $b = $rgb & 0xFF; $blue = toBin($b); $real_message .= $blue[strlen($blue)-1]; } $real_message = toString($real_message); echo $real_message; die; ?>

functions.php

<?php function toBin($str){ $str = (string)$str; $l = strlen($str); $result = ''; while($l--){ $result = str_pad(decbin(ord($str[$l])),8,"0",STR_PAD_LEFT).$result; } return $result; } function toString($binary){ return pack('H*',base_convert($binary,2,16)); } ?>

Источник записи: https://thedebuggers.com

Связанные записи
Chrome DevToolsGoogleGoogle ChromeWEB

Запускайте фрагменты JavaScript на любой странице с помощью Chrome DevTools

WEBПолезные сайты

50 бесплатных сайтов для ваших проектов графического дизайна в 2020 году | Бесплатные Графика, Фото и Видео стоки, Шрифты, Макеты и не только

JoomlaWEBWordPressПлагиныПолезные сайты

Обзор уникального конструктора страниц Nicepage 2020 (WordPress, Joomla, HTML и не только)

CSSWEBПримеры

Мистический inline-flex и что он делает - Stas Bagretsov - Medium