Программа корреляционного анализа звуковых файлов с помощью вейвлет-преобразования

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

Техническое задание

Назначение программы

Назначением программного продукта является внесение произвольных данных в контейнер звука WAV таким образом, что без знаний методов внесения данных было невозможно получить сообщение из звука.

Условия применения

Условия, необходимые для функционирования программы

Данный программный продукт работает на ПК с ОС Windows.
Система состоит из следующих компонентов:

  1. Модуль внесения данных в аудио- файл WAV
  2. Модуль получения данных из аудио- файла WAV

Модули реализованы в среде MathCAD 15.

Требования к техническим средствам

MathCAD 14, требует:

  • X86 совместимый процессор – 700 МГц и выше
  • 512 МБ RAM и более.

Требования к программному обеспечению

Требуется установленный программный продукт MathCAD 14, а так же сопутствующее программное обеспечение:

  • Windows XP (Home или Professional), Windows XP Professional x64, Windows Vista, Windows 7; рекомендуется Windows XP SP3, XP-x64 SP2, или Vista.
  • Windows Installer 3.0 или старше.
  • Microsoft .NET Framework® 3.5 или старше
  • MSXML 4.0 SP2 Parser and SDK
  • Microsoft Data Access Components (MDAC) 2.8 или старше
  • Internet Explorer 5.0 или старше.
  • Adobe Reader 5.0 или старше.

Описание задачи

Решаемые задачи

Сокрытие и извлечение информации в/из контейнера WAV – программа позволяет определить количество возможной скрытой информации в контейнере и позволяет подобрать оптимальное ее количество, а так же произвести ее извлечение из контейнера. Алгоритм ограничен тем, что для каждого бита шифруемой информации берется 10000 пар байтов звука.

Используемые решения

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

Входные и выходные данные

Входные данные

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

Выходные данные

На выходе алгоритма кодирования получаем ключ шифрования и контейнер с зашифрованными данными. На выходе алгоритма декодирования получаем, с использованием ключа, зашифрованные данные.

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

  • Программа требует исходные данные в виде двух файлов, лежащих в папке проекта:
  1. audioIn.wav – аудио файл в формате wav (контейнер для сообщения);
  2. dataIn.txt – текстовый файл (содержит исходное сообщение).
  • Результатом работы программы также являются 2 файла, которые будут созданы в папке проекта:
  1. audioOut.wav – аудио файл с записанным в него стегосообщением;
  2. dataOut.txt – текстовый файл с восстановленным стегосообщением.

Занесение стего в звуковой контейнер и извлечение стегосообщения

Задание:

  • Разработать программу корреляционного анализа звуковых файлов с помощью вейвлет-преобразования.
  1. В произвольно выбранном контейнере в виде сэмпла звукового файла управляемого объема записать произвольно выбранное стего методом LSB.
  2. Восстановить стего по известному ключу.
  3. Определить вейвлет-спектры «пустого» контейнера и контейнера со стегосообщением с использованием вейвлетов Дебеши
  4. Промоделировать процедуру стегоанализа корреляционным методом. Вычисляется автоковариационная функция для "пустого" контейнера и функция взаимной ковариации для "пустого" контейнера и контейнера со стегосообщением. Для выполнения задания использовать процедуру БПФ.

wavln := READWAV("audioIn.wav") // чтение wav файла infoIn := GETWAVINFO("audioIn.wav") Data := READBIN("dataIn.txt","byte") //чтение файла со стего сообщением N := rows(wavIn) M := rows(data) n := 1...N

Рис.1.исходный звуковой фаил





// исходный звуковой фаил


i := 0 j := 0 k := 0 bit := 0 key := 12345 // ключ x :=key

Рис.2.простенький самодельный ГПЧС (только для примера)



//простенький самодельный ГПЧС (только для примера)







//внесение стего сообщения побитово в //WAV файл


WRITEWAV("audioOUT.wav" ,infoIn1, infoIn2) := dataLSB

Рис.3.WAV файл со стегосообщением





//WAV файл со стегосообщением


wavOut := READWAV("audioOut.wav") infoOut := GETWAVINFO("audioOut.wav") M := 10270 N := rows(wavOut) m := 0...M dataOut(m) := 0 i := 0 j := 0 k := 0 bit := 0 key := 12345 // ключ x :=key

Рис.4.изъятие сообщения из контейнера





//изъятие сообщения из контейнера


WRITEBIN("dataOut.txt, "byte" ,0) := dataDeLSD // запись изъятого стего в текстовый файл y := rows(wavOut)

Рис.5.


j := 0...N-1 wavOut1(j) :=wavOut(j,0) вейвлет преобразование WAV файла со стего сообщением (первого канала звукового файла W := wave(wavOut1)

Рис.5.визуализация вейвлет преобразование WAV файла со стего(первого канала звукового файла)





//визуализация вейвлет преобразование WAV файла со стего(первого канала звукового файла)


OiRS Dementyev spektr lsb wavelet coeffs.png


n1 := 12 j := 0...N-1 k := 0...n1 вычисление семейств коэффициентов вейвлет-спектра Добеши WAV файла со стего(первого канала звукового файла)

OiRS Dementyev spektr lsb wavelet cjk.png


Рис.6.визуализация семейств коэффициентов вейвлет-спектра Добеши WAV файла со стего(первого канала звукового файла)





//визуализация семейств коэффициентов вейвлет-спектра Добеши WAV файла со стего(первого канала звукового файла)


Сj,x - здесь X - номер семейств коэффициентов вейвлет-спектра Добеши audionIn := READWAV("audion.wav") N := 2^15 j := 0...N-1 audionIn(j) := audionIn(j,0) W2 := wave(audioIn1)

Рис.7.визуализация вейвлет преобразование исходного аудио файла (первого канала звукового файла)





//визуализация вейвлет преобразование исходного аудио файла (первого канала звукового файла)


вычисление семейств коэффициентов вейвлет-спектра Добеши WAV файла со стего(первого канала звукового файла)

OiRS Dementyev spektr lsb wave dobesh wav coeffs.png


вычисление семейств коэффициентов вейвлет-спектра Добеши исходно аудио файла (первого канала звукового файла) j := 0...N-1

OiRS Dementyev spektr lsb wave dobesh wav cjk.png


Рис.8.визуализация семейств коэффициентов вейвлет-спектра Добеши WAV файла БЕЗ стего (первого канала звукового файла)





//визуализация семейств коэффициентов вейвлет-спектра Добеши WAV файла БЕЗ стего (первого канала звукового файла)


Сj,x - здесь X - номер семейств коэффициентов вейвлет-спектра Добеши

  • стегоанализ корреляционным методом

audioInFoiCor := READWAV(" audioIn.wav") //исходный аудио файл audioOutFoiCor := READWAV(" audioOut.wav") //аудио файл со стего сообщением N := rows(audioInFotCor) n := 0..N - 1 M := rows(audioInFotCor) m := 0..M - 1 fl(m) := audioInFoiCorn(m,0) f2(m) := audioInFoiCorn(m,0) audioInF CFFT(fl) //преобразование Фурье для файла со стего сообщением audioOutF := CFFT(f2) //преобразование Фурье для исходного аудио файла corAuto(m) := audioInF(m)*audioInF(m) //автокорреляция для исходного аудио файла cor(m) := audioInF(m)*audioInF(m) //взаимная корреляция для исходного файла и аудио файла со стегосообщениям с auto := ICFFT(cotAuto) //обратные преобразования Фурье сcor := ICFFT(cor) res(m):= ccor(m) - cauto(0)//сравниваем полученные результаты

Рис.9.


  • Как видно выше, стеганоанализ корреляционным методом приносит свои плоды по крайней мере в случаи применения стеганографического метода LSB и выявляет различия между аудио контейнером без сокрытого в нем сообщения и аудио файлом со стего сообщением внутри.

Аудио файлы

AudioIn.wav – контейнер


AudioOut.wav - файл c контейнером со стегосообщением




Стегосообщения