Доклад

Доклад

ss

1 слайд

Темой своего проекта я выбрал "Стеганография в wav файлах".

2 слайд

Целью же проекта являлось создание программы, которая позволила бы автоматизировать стеганографическую запись в файлы звукового содержания расширения .wav. Данный формат был выбран из-за его удобной структуры, которая позволяет совершить скрытую запись в файл с данным расширением, в отличие от более популярного .mp3. Из минусов .wav файла можно отметить только его чересчур (по сравнению с тем же .mp3) большой вес. Например, .mp3 файл весом в 5,80 МБ конвертированный в .wav будет весить более 25 МБ, что и позволяет распоряжаться большим пространством для записи.

К слову стоит уточнить что вообще есть такое "Стеганография". Это, как точно и коротко дает определение Википедия, способ передачи или хранения информации с учетом сохранения в тайне самого факта такой передачи (хранения). Ну в нашем случае эта информация будет хранится в аудио файле.

3 слайд

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

Первая область представляет из себя стандартную RIFF-структуру, которая группирует содержимое файла из отдельных чанков (секций) и занимает всего 44 байта.

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

На слайде представлена сама структура в виде таблицы. Последнее поле "data" и является областью данных, в которой хранятся звуки. Именно с ней и работает моя программа. Но об этом чуть позже.

Если перевести всю эту табличку на более понятный для обычного человека язык, то из заголовков WAV файла мы получим:

* Размер файла

* Количество каналов

* Частота дискретизации.

* Количество бит в сэмпле (эту величину еще называют глубиной звучания)

Ну и соответственно саму область данных.

4 слайд

Теперь о самом методе записи. В интернете их нашлось крайне мало и они были весьма сложны по реализации и все которые переводились на язык программирования в основном переводились на c++/c. Ну а моя программа написана на c#. В общем годных алгоритмов в интернете я не нашел, поэтому решил воспользоваться старым алгоритмом, по которому записывал текст в картинки. Рассказывать его сейчас не буду т.к. в него достаточно долго вникать. Я попытался нормально описать его в своем реферате.

Итак, при создании алгоритма мной должны были быть соблюдены следующие требования:

* Должен быть простым и линейным (не обязательно, но в моем случае этого хватит).

* Не должен портить само звучание файла.

* Не должен прибавлять ни байта к весу файла.

* Должен обеспечивать защиту от обнаружения скрытой информации.

* Не должен взаимодействовать с заголовками.

*click*

В чем заключается сам алгоритм:

  • Текст переводится в бинарный код
  • Бинарный код по битам записывается в область данных
  • Создается новый файл, в который записываются старые заголовки и новая область данных.

Т.е. на 1 бит будет приходится 10 000 кб.

Алгоритм считывания:

  • Цикл собирает биты по 8 штук
  • Если из восьми собранных бит не получилось 00000000 (восемь нулей), то отправляет эти восемь бит в общую кучу, иначе прекращает работу цикла.
  • Переводит бинарный код в текст
  • Выводит текст в программу.

И к слову про третий пункт, путем недолгих размышлений и тестирований был выбран промежуток в 10 000 кб. Это минимальная дистанция при которой звуки не искажаются. Т.е. на один бит придется 10 000 байт.

Но возникает еще одна проблема. Программе нужен флаг, который бы сигнализировал о том, что пора прекращать считывать данные. Таковым был выбран символ NOP состоящий из 8 нулей. То есть когда программа при считывании текста из файла встретит этот символ она остановится в считывании и выведет текст.

И составление алгоритма наверное было самым сложным в процессе создания. Само написание кода не вызвало никаких трудностей.

5 слайд

Сейчас на слайде представлены классы из программы. Я бы с удовольствием подробно объяснил как что тут работает, но боюсь что это затянется на минут 10, поэтому увы я могу лишь показать вам этот код. Если кто-то что-то поймет, то я буду рад, если же нет, то я не растроюсь.

6 слайд.

Вот что получилось в конечном результате. Кнопка с троеточием открывает сам файл для записи или считывания. Кнопка Read считывает из файла текст, если он конечно был записан, а кнопка write записывает текст в файл. Стоит отметить два минуса этой программы. Во-первых вы не сможете дважды записать разный текст в один и тот же файл и во-вторых место для записи тут ограничивается размером файла.

*Если получится то продемонстрировать работу на компе*

7 слайд.

Ну а на этом все. Спасибо за внимание.

Report Page