Смекни!
smekni.com

Автоматизированная система контроля знаний специалистов по дефектоскопии (стр. 11 из 15)


Рис. 3.13 Сообщение о завершении тестирования

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

Рис. 3.14 Подтверждение выхода

3.4.3 Просмотр результатов тестирования

После получения ответов на все вопросы теста будет выведено окно с результатами теста. Вид окна приведён на рис. 3.15.

В верхней части окна приведено соотношение правильных и неправильных ответов. В секции «Просмотр» есть возможность выбрать тип информации для просмотра в нижнем окне. При нажатии на кнопку «Отправить в Word» будет произведена передача текста в редактор MSWord. При нажатии на кнопку «Сохранить в файле» текст будет сохранён в простом текстовом файле.


Рис. 3.15 Окно результатов теста.

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

Рис. 3.16 Окно вопроса о повторном тестировании.

3.5 Отладка. Контроль использования динамической памяти

Утилита «Мониторинг памяти» написана для осуществления контроля использования динамической памяти в программе. Для получения информации о состоянии памяти используется системная функция GetMemoryStatus. Она возвращает информацию о текущем состоянии разных логических видов памяти. Считывание этой информации происходит через определённые промежутки времени. Вид программы приведён на рис. 3.17.


Рис. 3.17 Утилита мониторинга динамической памяти

Данная утилита позволяет отслеживать резервирование и освобождение динамической памяти указателями, динамическими списками и объектами программы. Особенно это необходимо при использовании динамического создания объектов. Фиксируемые последние изменения измеряемых величин, позволяют точно определить размер резервируемой и освобождаемой памяти.

Окно настройки параметров вызывается при нажатии на кнопку «Параметры». Оно позволяет оптимизировать работу утилиты при отладке программы. Вид окна представлен на рис. 3.18.

Рис. 3.18 Настройка параметров

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

3.6 Защита информации

3.6.1 Защита от несанкционированного использования

Защита от несанкционированного использования имеет цель сделать невозможной несанкционированную работу с административной программой. Это связано с тем, что, во-первых, именно эта программа оперирует с данными, которые могут представлять интерес для злоумышленника, а во-вторых, эта программа является ядром системы тестирования и имеет коммерческую ценность. Все клиентские программы без неё теряют свой смысл. В связи с этим встаёт задача её защиты от компьютерного пиратства.

В программе применена двухуровневая система защиты.

Первый уровень – это проверка правильности введённого пароля. После ввода пользователем пароля, он сравнивается с правильным. Работа с программой возможна лишь в том случае, если введённый пароль соответствует правильному. Для хранения правильного пароля реализован алгоритм стегографии. Цель этого алгоритма – скрыть пароль в файле точечного рисунка формата bmp. При этом размер файла не меняется и рисунок не разрушается. Я решил это следующим способом. Каждая точка описывается 3 компонентами R, G и B (для 24-битных рисунков, а другие конвертируются в этот режим). Если яркость какой-либо из этих компонент изменится на 1/255, этого никто не заметит. Что и требуется. Скрываемая информация по битам записывается в младшие биты RGB-компонент. При считывании, наоборот, из младшего бита RGB-компонент собираем данные. Рисунок, в котором хранится пароль, отображается в диалоговом окне «О программе…». Перед записью в рисунок пароль необходимо закодировать при помощи ключевого слова. Принцип кодирования следующий:

1) вычисляется контрольная сумма ключевого слова;

2) вычисляется контрольное произведение ключевого слова;

3) кодируемый пароль представляется как массив байтов;

4) вычитается из каждого байта данных байт контрольной суммы ключевого слова

5) с результатом предыдущего вычисления выполняется операция «исключающее или» с байтом контрольного произведения пароля;

6) к результату предыдущего вычисления прибавляется код соответствующего символа ключевого слова. Как только ключевое слово заканчивается, проход по нему начинается с его начала.

Простого наложения маски, как описано в шаге 6, недостаточно - так как в этом случае ключевое слово можно вычислять по частям с помощью лингвистического анализатора, а благодаря предыдущим пунктам этот процесс будет крайне затруднен. Возможно применение дополнительно к этому метод "Иголки вперед" – сложение кода текущего со следующим, затем следующего (до его изменения) со следующими после него и так далее, но, я считаю, что это в данном случае будет излишним, вследствие того, что несмотря на описанные выше меры, этот пароль не способен оказать серьёзную защиту. Дело в том, что код исполняемого модуля программы можно дизассемблировать. После этого, пароль снимается путём изменения всего лишь двух символов. Условный переход на языке ассемблера (jne), который стоит в программе на месте сравнения введённого пользователем пароля с правильным, заменяется на безусловный – jmp. В результате чего, войти в программу можно, набрав любые символы. На рис. 3.19 приведён отрывок алгоритма, где производится ввод и проверка пароля. Также, там показан безусловный переход, который делается взломщиком программы. Из рисунка видно, что в данном случае эффективность защиты не зависит от надёжности процедуры проверки правильности введённого пароля.

В качестве дополнительной защиты можно было бы упаковать исполняемый файл упаковщиком типа ExePack, но это не намного увеличит её эффективность, так как ко многим распространённым упаковщикам уже разработан метод их «вскрытия».

Учитывая приведённые выше факты, целесообразно подключить второй уровень защиты – защиту на логическом уровне. Суть её заключается в следующем. В процессе проверки правильности пароля вычисляются определённые числовые значения. Они используются в качестве констант при построении профиля личности. При добавлении безусловного перехода в дизассемблированный код программы числовые значения не будут вычислены, а это повлечёт за собой грубые ошибки в построении профиля, то есть программа будет работать неправильно. Как правило, компьютерный пират не компетентен в предметной области, поэтому, вероятно, не заметит ошибочной работы программы. Благодаря этому, защищаются ключевые алгоритмы административной программы, без которых будет непригоден к использованию весь пакет программ системы психологического обследования.

Таким образом, стоит отметить очевидное преимущество такой системы защиты. Она является пассивной, то есть в данном случае не обнаруживает себя в явном виде, что создаёт у взломщика иллюзию примитивности защиты программы и затрудняет её нейтрализацию.

Рис. 3.19 Алгоритм защиты от несанкционированного доступа


3.6.2 Защита данных

Выше, при описании подсистем, упоминалось, что файл с данными зашифрован. В этом разделе отдельно будет рассмотрен вопрос защиты данных теста.

Текст кодируется ключевым словом. Для этого к коду каждого символа прибавляется код символа ключевого слова, взятого по порядку. Когда очередь доходит до последнего символа, проход по ключевому слову начинается сначала. В итоге, происходит сопоставление каждой букве исходного текста буквы-заменителя закодированного текста. На рис. 3.20 обозначен метод кодирования текста.

Рис. 3.20. Метод кодирования текста

Вообще, для обеспечения более эффективной защиты требуется разработка целой подсистемы защиты. Но это сильно увеличило бы сложность программного изделия и повысило бы его рыночную стоимость. Поэтому, я считаю, что дополнительно целесообразно использование внешней защитной системы. Для защиты программы и данных от несанкционированного доступа можно использовать программное средство, реализующее защиту информации криптоалгоритмом DES, Blowfish или советским ГОСТ 28147-89. Одна из таких программ – Best Crypt 6.04. При помощи неё в операционной системе создаётся контейнер – зарезервированное место заданным объёмом. Этот контейнер система видит как обычный съёмный диск. На него можно записать административную программу, список обследованных и регистрационные листы. Получить доступ к контейнеру можно только после введения пароля. Сам контейнер представляет собой файл, который находится в корневом каталоге и зашифрован устойчивым криптографическим алгоритмом.