Случайный контейнер. Метод Гаусса

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:44, 1 июня 2017.
Open book.svg Авторство
Я.А. Кадилов
Согласовано: 2011

Руководство пользователя

Задача

В контейнере в виде файла управляемого объема, содержащего реализацию случайного гауссовского сигнала, полученной с помощью функции rnorm(.) записать произвольно выбранное стего методом LSB.

Исходные файлы

Решение разработано в среде Mathcad 14. Предназначено для сокрытия произвольного сообщения стенографическим алгоритмом LSB (Least Significant Bit) в случайном изображении, формируемом решением при помощи встроенной функции Mathcad rnorm(), предназначенной для получения случайных величин, имеющих нормальное распределение. Решение включает:

  • Настоящее руководство пользователя
  • lsb_rnorm.xmcd (решение среды Mathcad 14)
  • stego.txt (файл, содержащий сообщение для сокрытия)
  • container.bmp (файл изображения без стего)
  • output.bmp (выходной файл изображения со стего)

Порядок выполнения решения

1. Задать исходное сообщение произвольного размера в файле stego.txt.
2. Открыть при помощи среды Mathcad 14 решение lsb_rnorm.xmcd.
3. Запустить решение, используя комбинацию клавиш Ctrl+F9. Сравнить восстановленное в конце решения стего с исходным. Закрыть решение.
4. В папке с решением будет сформирован результат работы – файл output.bmp, содержащий изображение с записанным стего по алгоритму LSB.

Промежуточный контейнер, в который было записано сообщение, содержится в файле output.bmp. Зрительно изображения из output.bmp и container.bmp не отличаются, их объемы равны и имеют линейную зависимость от длины скрываемого сообщения.

Текст выполненной программы

краткое описание решения

1. Обработка стего, перевод в битовую последовательность.
2. В зависимости от объема сообщения создание контейнера в виде файла изображения, реализующего случайный сигнал, полученный с помощью функции rnorm().
3. Запись стего по алгоритму LSB: последовательная замена последего бита каждого байта контейнера на бит стего.
4. Восстановление стего. Проверка корректности работы решения.
5. Выводы.

Решение

1. Обработка стего, перевод в битовую последовательность.

stego:=READBIN("stego.txt","byte") //чтение стего из файла Vec2str.png

перевод стего в битовую последовательность и добавление вектора, обозначающего конец сообщения "11111111":

Stego bit.PNG


= 0 1 2 3 4 5 6 7 8 9
0 83 116 101 103 97 110 111 103 114 ...

проверка корректности перевода

= 0 1 2 3 4 5 6 7 8 9
0 0 1 0 1 0 0 1 1 0 ...
2.В зависимости от объема сообщения создание контейнера в виде файла изображения, реализующего случайный сигнал, полученный с помощью функции rnorm().
size:=8(rows(stego_bit)+8)=4.915 //получение размера стего в количестве бит
side:=floor()+1=222 //нахождение минимальной стороны квадратной матрицы, содержащей элементы в количестве, большем, чем size
R_signal:=floor(rnorm(,128,24))
G_signal:=floor(rnorm(,128,24)) //получение случайного сигнала с нормальным распределением для каждого цвета
B_signal:=floor(rnorm(,128,24))

перевод случайных сигналов в квадратные матрицы:

Perevodvmatrix.PNG

распределение цветов по всей области будущего изображения:

Raspcolor.PNG

container:=augment(R,G,B) //получение контейнера для стего из матриц распределения цветов Container.PNG WRITERGB("container.bmp"):=container //запись контейнера в файл

3. Запись стего по алгоритму LSB: последовательная замена последего бита каждого байта контейнера на бит стего.

последовательная запись стего в последние биты байтов контейнера:

Outputgaus.PNG WRITERGB("output.bmp"):=output //запись полученного изображения со стего в файл

4. Восстановление стего. Проверка корректности работы решения.

container_with_stego:=READRGB("output.bmp") //чтение контейнера со стего из файла восстановление стего из изображения при помощи чтения последних бит байтов до встречи с послеовательностью, обозначающую конец сообщения "11111111":

Restored stego.PNG

Restoredstego.png

Выводы

Восстановленное стего не содержит ошибок, изображения контейнера со стего и без него зрительно не отличаются, следовательно алгоритм LSB реализован верно. Объем контейнера, содержащего случайный сигнал, полученный при помощи функции rnorm(), зависит от размера передаваемого сообщения и является минимальным необходимым для его записи в квадратное изображение.

Файлы

stego.txt – исходное стегосообщение.