После того, как были реализованы основные алгоритмы, благодаря которым происходит сокрытие и извлечение информации в звуковых файлах, встал вопрос об организации удобного, понятного интерфейса, чтобы пользователь, будучи не знакомый с программным продуктом, мог легко, без затруднений его освоить.
В ходе разработки интерфейс программы менялся, пока не приобрел конечный вид:
Рисунок 3.4 - Интерфейс программы
Работа в программе происходит в одной форме. Это сделано для удобства работы, так как пользователь не отвлекается на переход с одной формы на другой. Управление программой осуществляется посредством ниспадающего меню, с помощью дерева управления, а так же с помощью кнопок управления на стартовой панели (далее меню программы). Каждому из пунктов управления соответствует своя панель (компонент Panel), которая появляется в рабочей области при выборе соответствующего пункта меню. По сути, переход от одной смысловой локации (например, сокрытие информации) в другую осуществляется путем переключения панелей, т.е. одна панель видна, все остальные нет. Данный способ управления очень удобен и практичен.
Смысловая нагрузка программы разбита на две части:
− функционально-целевое исполнение;
− справочный материал.
Первый пункт охватывает весь инструментарий и методологию назначения разработки:
− сокрытие файла, где осуществляется сам процесс внедрения любого файла в файлы контейнеры;
− извлечение файла, где происходит извлечение скрытой информации из фалов контейнеров;
− настройки, подразумевает ряд опций и способов для сокрытия и извлечения информации.
Второй пункт охватывает справочный материал, который поможет пользователю освоить интерфейс и управление программой.
|
В программе применялись три основных стиля взаимодействия с пользователем:
1. Прямое манипулирование. К преимуществам относится быстрое и интуитивно понятное взаимодействие и легкость в изучении.
2. Выбор из меню. Данный стиль взаимодействия позволяет сократить количество ошибок пользователя и лишить ввода с клавиатуры.
3. Заполнение форм. Простой ввод данных и легкость в изучении.
Придерживаясь данных стилей взаимодействия с пользователем, удалось создать программу с удобным, дружественным интерфейсом.
Для удобной организации интерфейса программы использовались следующие компоненты:
1. Компонент TreeView представлен на рисунке 3.5.
Рисунок 3.5 - Элемент управления TreeView
Данный компонент предназначен для отображения данных в виде дерева. То есть элементы представления начинаются с корня дерева и отображаются вглубь. Данный компонент обладает расширенным списком возможностей: установка пиктограмм для каждого элемента списка, отображение данных в виде дерева, несколько стилей представления элементов списка. Дерево дает более широкий спектр представления информации. Каждый узел дерева может быть встроен в другой узел. Данный компонент очень удобно использовать в качестве меню, так как он хорошо отображает всю структуру программы [15].
Компонент menuStrip представлен на рисунке 3.6.
Рисунок 3.6 - Элемент управления menuStrip
Создание головного меню приложения (menuStrip) является фактически альтернативой выполнения команд элементами управления на форме в соответствии с программным кодом процедур, написанных для этих элементов.
|
Однако, в отличие от элементов управления, которые осуществляют выполнение различных процедур при совершении различных событий над элементом управления, головное меню приложения позволяет создавать иерархию вложенных друг в друга меню команд любой степени сложности.
Особенно эффективно создание головного меню приложения в том случае, когда в приложении необходимо выполнять множество различных команд. При этом команды, выполняющиеся из головного меню, будут собраны в одной строке головного меню, которое можно раскрыть в любой нужный момент для выполнения требуемой команды, не занимая много места в окне приложения на экране дисплея, где происходит основная обработка информации.
2. Компонент WebBrowser.
Данный компонент является удобным средством для отображения html документов. Его назначение - это отображение всех страниц справочного материала. Данный компонент содержит ряд простых методов, которые с легкостью позволяют отобразить страницу на панели. Для этого необходимо создать переменную типа Uri и передать ее в качестве свойства объекту WebBrowser:
uri = new Uri(exesh + @"/Proghelp/Options.htm", UriKind.RelativeOrAbsolute);
webBrowser1.Url = uri;
3. Компонент ImageList.
Компонент ImageList можно отнести к списку невидимых элементов управления. Однако это будет неправильно. Скорее ImageList является вспомогательным компонентом, который хранит изображения, отображаемые другими элементами управления. ImageList в разработке используется такими компонентами, как TreeView, Button, Panel, pictureBox. ImageList содержит список изображений. Если какому-либо объекту необходимо отобразить изображение, то необходимо задать для соответствующего свойства лишь индекс элемента в списке изображений. ImageList может содержать изображения в формате BMP, JPG, GIF, PNG,ICO, WMF, EMF [15].
|
Данный компонент дополняет программу графическими пиктограммами, которые в совокупности помогают пользователю в правильности выбора дальнейших действий. Компонент ImageList использовался для создания аффордансов.
4. Компонент RichTextBox.
Данный элемент управления дает возможность пользователю вводить и обрабатывать большие объемы информации (более 64 кБайт). Кроме того, RichTextBox позволяет редактировать цвет текста, шрифт, добавлять изображения. RichTextBox включает все возможности текстового редактора Microsoft Word.
Данный компонент очень удобен для работы с генерацией секретного ключа и вектора инициализации. Он работает со строковым типом данных, что обеспечивает легкую запись и чтения данных. Пример генерации ключа и вектора инициализации с использованием компонента RichTextBox, представлен на рисунке 3.7.
Рисунок 3.7 - Пример генерации ключа и вектора инициализации с использованием компонента RichTextBox
5. Компонент TrackBar.
В программе предусмотрена возможность замены целевого бита в зависимости от старшинства, в который будет происходить сокрытие информации - это младший, средний и старший бит. Для изменения этих параметров был применен компонент TrackBar. TrackBar может использоваться в различных режимах: в горизонтальном или вертикальном положении, с включенными черточками или без. Компонент TrackBar, представлен на рисунке 3.8 [16].
Рисунок 3.8 - Использование компонента TrackBar в программе
12.1.1 Поэтапная эксплуатация программы
При запуске программы необходимо выбрать пункт «Настройки», в элементе управления treeview, либо в ниспадающем меню, либо при помощи нажатия соответствующей кнопки на рабочем поле программы (см. рисунок 3.9).
Рисунок 3.9 - Выбор настройки программы
При соответствующем выборе появляется панель, на которой необходимо задать настройки, которыми в дальнейшем будет руководствоваться программа.
Настройки предусматривают следующие изменения:
− сокрытие в старшие биты;
− сокрытие в средние биты;
− сокрытие в младшие биты.
Данная опция позволяет задать старшинство бит в файлах контейнерах, в которые будет, происходить скрытие секретного файла. Данные изменения несут чисто демонстрационный характер, так как сокрытие в более старшие биты противоречит принципам стеганографии.
Следующей опцией является способность сохранения файлов контейнеров в новые файлы, либо в прежние.
Для того, чтобы воспользоваться алгоритмом шифрования, необходимо выбрать соответствующую опцию. Далее необходимо нажать на кнопку «Генерировать», чтобы сгенерировать новые секретный ключ и вектор инициализации, необходимые для участия в алгоритме симметричного шифрования Rijndael. Все настройки хранятся в файле настроек. Сохранение текущих опций, происходит при выходе из программы, а загрузка при входе в программу. В ходе записи/чтения настроек происходит проверка на ошибки и на исключительные ситуации. За загрузку и сохранение опций отвечают две процедуры:
void MainForm_Load(object sender, EventArgs e)
void MainForm_FormClosed(object sender, FormClosedEventArgs e)
Файл настроек хранится в корневом каталоге программы.
Внешний вид панели настроек представлен на рисунке 3.10.
Рисунок 3.10 - Внешний вид панели настроек
После того, как были заданы первоначальные настройки, можно приступать непосредственно к сокрытию, либо к извлечению секретных файлов.
Для того чтобы начать сокрытие необходимо выбрать пункт «Сокрытие файла» в элементе управления treeview, либо в ниспадающем меню при нажатии на кнопку «Файл», либо при помощи нажатия соответствующей кнопки на рабочем поле программы.
При соответствующем выборе, появляется панель, на которой необходимо выбрать файлы контейнеры. Выбор файлов контейнеров осуществляется при нажатии на кнопку «Открыть» из файлового диалога. Имя каждого выбранного файла заносится в элемент listbox, а сам файл вносится в лист элементов wRiff через функцию:
open =WaveFile.OpenWavFile(Dlg.FileName, tek).
В качестве параметров передается имя файла и номер его добавления в лист wRiff. Данная функция возвращает значение истина, если файл внесен в лист wRiff и ложь в противном случае.
В случае если был выбран неудачно файл контейнер, можно воспользоваться кнопками «Очистить» или «Удалить».
После того, как был сформирован лист, в котором хранятся необходимые файлы контейнеры, необходимо в нижней части панели, путем нажатия кнопки «Открыть», выбрать файл, который необходимо скрыть.
И на заключительном этапе нажимается кнопка «Сокрыть», в результате чего начнется процесс сокрытия. После нажатия на эту кнопку вызывается процедура обработки нажатия, в которой вызывается процедура сокрытия файла:
WaveFile.OpenAnyFile(StegoFile, newMDIChild.LoadProc, bits, howsave, useShifer, key, IV);
В качестве параметров передается имя файла, который необходимо сокрыть, переменную - делегат, номер бита, в которое будет происходить скрытие, параметр сохранения конечных файлов, параметр использования шифрования, секретный ключ и вектор инициализации.
Панель сокрытия файла представлена на рисунке3.11
Рисунок 3.11 - Панель сокрытия файла
В ходе выполнения сокрытия включается режим блокировки программы и вызов дочерней формы, на которой отображается процесс сокрытия, в виде передвижения полосы загрузки компонента progressBar (рисунок 3.12).
Рисунок 3.12 - Сокрытие файла
Для того чтобы начать извлечение файла, необходимо выбрать пункт «Извлечение файла» в элементе управления treeview, либо в ниспадающем меню при нажатии на кнопку «Файл», либо при помощи нажатия соответствующей кнопки на рабочем поле программы
При соответствующем выборе появляется панель, на которой необходимо выбрать файлы контейнеры для извлечения. Выбор файлов контейнеров осуществляется при нажатии на кнопку «Открыть» из файлового диалога. Имя каждого выбранного файла заносится в элемент listbox, а сам файл вносится в лист элементов wRiff, через функцию:
open =WaveFile.OpenWavFile(Dlg.FileName, tek).
В качестве параметров передается имя файла и номер его добавления в лист wRiff. Данная функция возвращает значение истина, если файл внесен в лист wRiff, и ложь в противном случае.
В случае, если был выбран неудачно файл контейнер, можно воспользоваться кнопками «Очистить» или «Удалить».
После того, как был сформирован лист, в котором хранятся файлы контейнеры, необходимо, если в настройках программы задана опция шифрования, внести секретный ключ и вектор инициализации. Если в опциях не было заданно использование симметричного шифрования, то эти данные, касаемые шифрования вносить не надо.
После выбора нужных данных, происходит нажатие кнопки «Извлечь», при этом вызывается процедура нажатия кнопки (событие OnClick), в которой происходит жесткая проверка на соответствие ключа и вектора инициализации истеностным значениям (т.е. ключ должен быть длинной 32 байта, вектор инициализации 16 байт т.д.). Далее вызывается функция:
WaveFileEn.OpenStegoFile(bits)
Данная функция возвращает истинное значение, если извлечение файла произошло успешно. В качестве параметров ей передается номер бита, из которого необходимо извлекать скрытый файл. Затем происходит дешифровка извлеченного файла путем вызова процедуры:
WaveFileEn.SaveFile(key1, IV1, useShifer);
Параметрами, передаваемыми данной процедуре, являются секретный ключ и вектор инициализации, а так же использование алгоритма шифрования. На рисунке 3.13 показана панель извлечения файла.
Рисунок 3.13 - Панель извлечения секретного файла
Для того чтобы просмотреть справку, необходимо выбрать один из пунктов, относящиеся к ветке «Справка» в элементе управления treeview, либо при выборе подменю, по нажатию соответствующей кнопки.
Выводы по разделу 3
В программе были реализованы возможности:
− сокрытие файла;
− извлечение файла;
− настройки;
− справочная информация.
В ходе проектирования программа прошла несколько этапов разработки. Первый этап это реализация алгоритма сокрытия и извлечения в одном звуковом файле, второй этап - реализация алгоритма сокрытия и извлечения в нескольких звуковых файлах, третий этап - внедрение алгоритма симметричного шифрования для более эффективной защиты скрываемых данных, а так же добавление ряда мелких опций, которые позволили расширить возможности программы. Разработанная программа полностью удовлетворяет предъявленным требованиям.