LSB шумы

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

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

Используемые функции

  • Запись данных в стего контейнер:

WRITERGB("full_container.bmp") := WRITELSB("empty_container.bmp", "text.txt"), где

  1. full_container.bmp - название заполненного контейнера
  2. empty_container.bmp - название пустого контейнера
  3. text.txt -название файла, который необходимо записать в контейнер
  • Чтение данных из стего контейнера:

WRITEBIN("text_restored.txt","byte",0) := READLSB("full_container.bmp"), где

  1. text_restored.txt - название файла с востановленным текстом
  2. full_container.bmp - название заполненного контейнера
  • Добавление шума rnd:

WRITERGB("container_noise.bmp") := AddNoise("container.bmp", noise), где

  1. container_noise.bmp - название зашумленного контейнера
  2. container.bmp - название контейнера
  3. noise - максимальное значение шума
  • Фильтрация:

image := READRGB ("container.bmp")

filter := GaussFilter(size, σ)

WRITERGB("container_filtered.bmp") := FilterImage(image, filter), где

  1. container.bmp - название контейнера
  2. size - размер фильтра
  3. σ - величина стандартного отклонения
  4. container_filtered.bmp - название отфильтрованного контейнера
  • Примечание

Все файлы должны находится в той же папке, что и lsb.xmcd. Записываемые/восстанавливаемые данные можно смотреть с помощью notepad, контейнеры - с помощью Windows Picture and Fax Viewer.

Список прилагаемых файлов (в алфавитном порядке)

  • beatles.txt - текст для записи в стегоконтейнер
  • girl.bmp - пустой контейнер
  • girl_noise_2.bmp - заполненный текстом из text.txt контейнер с шумом rnd(2)
  • girl_noise_25.bmp - заполненный текстом из text.txt контейнер c шумом rnd(25)
  • girl_stg.bmp - заполненный текстом из text.txt контейнер
  • image1.bmp - отфильтрованный контейнер image.bmp (σ=0.038)
  • image1.txt - текст, восстановленный из контейнера image1.bmp
  • image2.bmp - отфильтрованный контейнер image.bmp (σ=0.05)
  • image2.txt - текст, восстановленный из контейнера image2.bmp
  • image3.bmp - отфильтрованный контейнер image.bmp (σ=0.075)
  • image3.txt - текст, восстановленный из контейнера image3.bmp
  • image4.bmp - отфильтрованный контейнер image.bmp (σ=0.1)
  • image4.txt - текст, восстановленный из контейнера image4.bmp
  • image5.bmp - отфильтрованный контейнер image.bmp (σ=0.15)
  • image5.txt - текст, восстановленный из контейнера image5.bmp
  • image6.bmp - отфильтрованный контейнер image.bmp (σ=1)
  • image6.txt - текст, восстановленный из контейнера image6.bmp
  • image7.bmp - отфильтрованный контейнер image.bmp (σ=2)
  • image7.txt - текст, восстановленный из контейнера image7.bmp
  • image.bmp - заполненный текстом из beatles.txt контейнер
  • text.txt - текст для записи в стегоконтейнер
  • text_from_stego.txt - текст, восстановленный из контейнера girl_stg.bmp
  • text_from_stego_2.txt - текст, восстановленный из контейнера girl_noise_2.bmp
  • text_from_stego_25.txt - текст, восстановленный из контейнера girl_noise_25.bmp

Описание алгоритма

Задача

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

Описание решения

  1. Текстовый файл конвертируется в битовый вектор функцией Text2Bin. Изображение считывается в матрицы RGB. В младший бит каждого байта данной матрицы записывается бит из битого вектора. Это осуществляется с помощью функции WriteLSB. Функция WriteRGB формирует из измененной матрицы формируется новое изображение.
  2. С помощью функции ReadLSB младший бит каждого байта матриц RGB считывается в битовый поток. Затем записывается в текстовый файл встроенной функцией WriteBin.
  3. К каждому пикселю матриц RGB добавляется округленное значение функции rnd. Максимальное значение rnd задается пользователем самостоятельно.
  4. Производятся попытки восстановления стего сообщений из контейнеров с различной степенью шума.
  5. С помощью функции GaussFilter формируется фильтр с заданным размером и стандартным отклонением. Функция FilterImage расширяет изображение и применяет фильтрацию для каждого пикселя внутри границ оригинального изображения.

Производятся попытки восстановления стего сообщений из отфильтрованных контейнеров с различной степенью стандартного отклонения.


Вспомогательные функции:

  • GetBit

Параметры: data: входное число

pos: номер позиции.

Назначение :

Функция возвращает значение бита, находящегося на позиции с номером pos.

1IMAGE LSB noise.PNG
  • Text2Bin

Параметры :

file: имя входного файла.

Назначение :

Функция считывает входной файл и конвертирует его в битовый вектор. В конце вектора добавляется 8 нулевых бит. считать файл в переменную

2IMAGE LSB noise.PNG
для каждого столбца
для каждой строчки
записать каждый бит в битовый фактор сохраняя номер его позиции (8*i+j)
добавить 8 нулевых бит в конце вектора



Стеганографические функции :

  • WriteLSB

Параметры :

imgFile: имя входного изображения для записи стего.

txtFile: имя входного файла для записи в изображение.

Назначение :

Функция записывает стего в выбранное изображение посредством метода LSB.

Описание :

1 - изображение imgFile считываются с помощью функции READRGB

2 - для каждого пикселя

a - LSB устанавливается в 0

b - один бит входного файла записывается в LSB

3 - если запись стего завершена или изображение заполнено, возвращается изображение с записанным стего считать изображение в переменную

3IMAGE LSB noise.PNG
считать изображение в переменную
перевести текстовый файл в битовый вектор
для каждой строчки изображения
для каждого столбца изображения
очистить младший бит
записать в младший бит соответствующее значение из битового вектора
закончить работу функции, если стего сообщение записано целиком




  • ReadLSB

Параметры :

imgFile: имя входного изображения для чтения стего.

Назначение :

Функция считывает изображение и считывает записанное стего.

Описание :

1 - изображение imgFile считывается с помощью функции READRGB

2 - для каждого пикселя

a - считывается LSB

b - текст восстанавливается байт за байтом

c - если считывается 8 подряд идущих нулевых бит, то процесс считывания останавливается

3 - возвращается считанное сообщение


4IMAGE LSB noise.PNG
считать изображение в переменную
инициализация перменной для подсчета текущего номера бита
инициализация перменной для подсчета текущего номера извлекаемого символа
инициализация переменной, содержащей прочтенное стего сообщение
для каждой строки изображения
для каждого столбца изображения
извлечь младший бит и сохранить его в векторе
приращение текущего номера бита
если k<8,перейти к извлечению следущего бита
(в противном случае):реинициализровать k (начать извлечение следующего байта)
если встречается 8 нулевых бит подряд, то закончить извлечение



Использование стеганографических функций:

Записать стего в изображение:

6IMAGE LSB noise.PNG

text.txt:

Hello there.

How are you doing?

This is a sample text to encode into some image.

Hope it will works smoothly.

Восстановить текст из изображения :

7IMAGE LSB noise.PNG
5IMAGE LSB noise.PNG

text_from_stego.txt:

Hello there.

How are you doing?

This is a sample text to encode into some image.

Hope it will works smoothly.

Анализ влияния шума на метод LSB :

  • AddNoise

Параметры :

img: имя входного изображения.

max: максимальное значение шума (должно быть меньше 255)

Описание :

Функция добавляет случайное значение шума к каждому пикселю изображения.

8IMAGE LSB noise.PNG
считать изображение в переменную
для каждой строки изображения
для каждого столбца
добавить к каждому биту округленное до целого rnd

Для анализа выбрано максимальное значение шума, равное 2 и 25.

9IMAGE LSB noise.PNG
10IMAGE LSB noise.PNG

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

11IMAGE LSB noise.PNG
12IMAGE LSB noise.PNG

Ни один из стего контейнеров не был успешно восстановлен.

text_from_stego_2.txt:

жSoВ‹!ђA«<$и) —oВ°Ґ°™онSЋЗXP5и№њЇЗІЯЗE)ЗџRЁЇЏФ:п…c”/Ѓ@X­N&Z3w8РќbXТњИOґДў®І}п3И·$НЛА Ґ©Жь…Й·d/м$MВЧЛйБЯ'3Оf™йiЇШ\f`\‘?ы}.;+iьvB?WЇwџрТ?­\РЃ|UЛ‘w? Б&OЂlЦp7Я`ТчҐ3Ц»Ч—П_$–dШєySjн†^О#4і±Іљ>qO,Tt[в`<O®Бпs]«в;}«РiIоМьрћоfu°Ѕѓ+'*­ЮTz†эЎь fbH~6ђ|ѓJw(CМЏ‘…уЅATћx†¶УAq}— egЋ | і^(В?нhZwK’Hи-AZУjЊдsxY­щуЈ9јsмyяњМДђ<в}·¬“S·Й€тej]юt=FЉSl˜¤з”µxEђСFЈ§

text_from_stego_25.txt:

€GГiПЛ®Ґ°пu7]…Y.pжЈш*wё,¦0§Ћ}•v_QЌЯgiІRv™RT8Щ8,П1‹„‡я^Ў\Џ§љћFй№:FФpтIK№Я} •™tЊ‰¦‚eцс]`oУЌ‘:/O6„iwЈ;2ймМ+СЪXc6L‘‡|sУ5sЗQюќ ѕуЛЏ—zњ¦#Ы–лGу4Ґ·?;Хц°

girl_noise_2.bmp
girl_noise_25.bmp


Вывод: Метод LSB не устойчив даже к незначительному шуму.

Функции фильтрации

Двумерная гауссоида

15IMAGE LSB noise.PNG
  • GaussFilter

Параметры:

n: размер фильтра

 : стандартное отклонение

Описание: Функция создает матрицу для фильтрации

17IMAGE LSB noise.PNG
вернуть -1, если n - четное
округленное значение n/2
для каждой строки изображения
для каждого столбца изображения
посчитать коэффициент в зависимости от размерности и стандартного отклонения
  • FilterImage

Параметры:

image: входное изображение

filter: входная матрица фильтрации

Описание:

Функция отфильтровывает входное изображение с помощью входной матрицы и возвращает измененное изображение.

18IMAGE LSB noise.PNG
размер матрицы
половина размера матрицы
посчитать сумму коэффициентов фильтра для нормализации
высота изображения
ширина изображения
расширить изображение с каждой стороны
если текущий элемент лежит внутри границ оригинального изображения, то скопировать его
для каждого элемента внутри границ оригинального изображениязаменить пиксель на "отфильтрованный"



Анализ возможности восстановления информации из отфильтрованного стего контейнера

Произведем запись текста в пустой контейнер.

19IMAGE LSB noise.PNG
21IMAGE LSB noise.PNG
image.bmp


Применим к заполненному контейнеру фильтры с различным значением стандартного отклонения и попробуем восстановить записанные данные.


24IMAGE LSB noise.PNG
27IMAGE LSB noise.PNG
37IMAGE LSB noise.PNG
33IMAGE LSB noise.PNG
42IMAGE LSB noise.PNG
40IMAGE LSB noise.PNG
image1.bmp, =0.038, восстановлено 98% текста
image2.bmp, =0.05, восстановлено 43% текста


28IMAGE LSB noise.PNG
22IMAGE LSB noise.PNG
34IMAGE LSB noise.PNG
30IMAGE LSB noise.PNG
41IMAGE LSB noise.PNG
39IMAGE LSB noise.PNG
image3.bmp, =0.075, восстановлено 8% текста
image4.bmp, =0.1, восстановлено 5% текста




23IMAGE LSB noise.PNG
25IMAGE LSB noise.PNG
29IMAGE LSB noise.PNG
31IMAGE LSB noise.PNG
35IMAGE LSB noise.PNG
36IMAGE LSB noise.PNG
image5.bmp, =0.15, восстановлено 3% текста
image6.bmp, =1, восстановлено 0.1% текста




26IMAGE LSB noise.PNG
32IMAGE LSB noise.PNG
38IMAGE LSB noise.PNG
image5.bmp, =2, восстановлено 0% текста