Смекни!
smekni.com

Разработка программы, генерирующей пароли пользователей (стр. 2 из 3)

В настоящее время можно считать доказанным, что главная задача проектирования интерфейса пользователя заключается не в том, чтобы рационально "вписать" человека в контур управления, а в том, чтобы, исходя из задач управления объектом, разработать систему взаимодействия двух равноправных партнёров (человек- оператор и аппаратно- программный комплекс АСУ), рационально управляющих объектом управления.

2.2 Выбор интерфейса

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

Интерфейс пользователя можно разделить на пакетный и интерактивные. Пакетные характеризуются тем, что пользователь должен сформировать пакет с заданиями, затем программа эти задания выполняет и выдаёт результат. Интерактивные характеризуются тем, что пользователь в ходе работы программы постоянно с ней взаимодействует. Существует интерфейс на базе меню, псевдографический интерфейс, интерактивно- командный интерфейс, эти интерфейсы описывать не будем, так как программа, которую необходимо создать по заданию требует графический интерфейс. Графический интерфейс следует выбирать только для многомодульных программ, которые, предположительно будут иметь массовое применение. В соответствии с заданием и для большего удобства и понятия принципа работы программы интерфейс должен содержать наименьшее количество кнопок. Вследствие чего выберем: 1 поле, в котором будем генерировать сам код, одну кнопку после нажатия, которой будет происходить генерация, и кнопку выход.

Интерфейс приведен на рисунке 1.


3. Разработка алгоритма программы

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

Прежде чем начать разработку, вводим несколько ограничений:

- программа должна исключать подбор пароля по словарю;

- программа должна обеспечивать взаимодействие с пользователем посредством графического интерфейса;

- процесс выполнения генерации паролей должен быть реализован в интегрированной среде разработки Microsoft Visual C++ v. 6.0.

- символы не должны повторяться.

После запуска программы и нажатия на клавишу “Генерировать код” должен генерироваться случайно первый символ из заранее созданного массива символов PassAlfavit[], после чего данный символ записывается в другой массив passwrd[]. Далее генерируется второй и происходит проверка, не повторяются ли символы. Если выполняется данное условие, то происходит удаление последнего символа, если же нет, то происходит запись в массив passwrd[] со следующим символом.

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

После завершения генерации пароля он должен быть выдан в специальном поле.

Структурная схема алгоритма программы, генерирующей пароли пользователей, приведена в приложении А.


4. Создание программы на базе разработанного алгоритма

В данном разделе приводится описание текста программы выполняющей генерацию паролей пользователей. Данная программа реализована на языке программирования С++ при помощи интегрированной среды обработки Visual С++.

Поскольку архитектура Windows-программ основана на принципе сообщений, все эти программы содержат некоторые общие компоненты. Обычно их приходится в явном виде включать в исходный код. Но, к счастью, при использовании библиотеки MFC это происходит автоматически; нет необходимости тратить время и усилия на их написание. Создание диалогового приложения с использованием AppWizard

Работа с элементами управления

Для начала необходимо создать поле, в котором будет выводиться сгенерированный код. Для этого в рабочую область перетаскивается элемент Edit Box (Текстовое поле). Затем регулируются ее размеры и положение.

Так же необходимо создать клавишу после, которой будет происходить генерация кода, для этого перетащим из панели инструментов элемент с названием Button.

Откроем диалоговое окно Edit Properties. В тестовое поле раскрывающего списка ID: (Идентификатор ресурса) вместо идентификатора IDC_EDIT1 введём идентификатор IDGEN, а в поле caption введём слово Generirowanie.

Клавишу Cancel которую создал MFC AppWizard оставим без изменений но укажем новое местоположение.

На этом этап формирования диалогового окна можно считать законченным. Дело в том, что одновременно с производимыми нами действиями программная оболочка Visual C++ фиксировала все вносимые изменения в файлах PassGen.rc и resource.h.

Создание класса диалога

Приступим к созданию класса диалога. Очень большую долю работы по созданию этого класса уже выполнил мастер AppWizard, а еще некоторую часть работы возьмет на себя мастер ClassWizard.

Оболочка Visual C++ сама создаст Password.cpp и Random.cpp. Далее необходимо будет заменить данные файлы, на файлы, приведённые в приложении Б и В соответственно.

Далее остаётся только сохранить и откомпилировать данную программу.

На этом создание программы на языке С++ закончилось.


5. Экспериментальная проверка количественных оценок

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

- вероятность подбора пароля P=10-3;

- мощность пространства паролей S=1,6*1012

Время, за которое данный пароль не будет скомпрометирован, вычисляется по следующей формуле: T=(P * S) / V

1 Скорость подбора пароля V, паролей /сек-1*105;

T=(10-3*1.6*1012) / 105 = 1600 секунд => 4.44 часа

2 Скорость подбора пароля V, паролей /сек-2*105;

T=(10-3*1.6*1012) / 2*105 = 8000 секунд => 2.22 часа

3 Скорость подбора пароля V, паролей /сек-2,5*105;

T=(10-3*1.6*1012) / 2,5*105 = 6400 секунд => 1.77 часа

4 Скорость подбора пароля V, паролей /сек-3*105;

T=(10-3*1.6*1012) / 3*105 = 5333 секунд => 1.48 часа

При увеличении скорости подбора паролей в два раза время, затраченное на подбор, уменьшается также в два раза.

Для того, что бы точно скомпрометировать пароль за три часа, необходима скорость подбора паролей V=1.5*108 паролей /сек. Время взлома также уменьшается от вида атаки и от степени осведомлённости злоумышленника. Так простейшая программа для взлома паролей архиватора RAR “Advanced RAR Password Recovery” предусматривает 3 типа атаки:

- перебор

- по маске

- по словарю

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


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

Для начала работы с программой необходимо запустить файл с названием PassGen. После запуска появится окно. Для генерации пароля необходимо нажать на клавишу “GENERIROVANIE”. После чего в окошке появится сгенеррированный пароль. Далее необходимо запомнить пароль и использовать по назначению. При повторном нажатии на клавишу пароль будет сгенерирован вновь. Для выхода из программы необходимо нажать на клавишу “Выход” или нажав на “крестик”.


Заключение

В процессе выполнения курсового проекта была разработана программа, генерирующая пароли пользователей. Программа была написана при помощи интегрированной среды разработки Visual C++. Программа соответствует всем функциональным требованиям, заданным на курсовое проектирование. Взаимодействие с пользователем осуществляется с помощью графического интерфейса.

Таким образом, задание на курсовое проектирование было полностью выполнено.


Список использованных источников

1 http://www.diwaxx.ru/hak/index.php

2 http://www.passwords.ru

3 Келецкий Я. Энциклопедия языка Си/ Пер. с англ.- М.: Мир, 1992. -687с.

4 Керниган Б., Ричи Д., Фьюер А. Язык программирования Си. Задачи по языку С/ Пер. с англ. - М.: Финансы и статистика, 1985.-279с.


ПРИЛОЖЕНИЕ А

Алгоритм программы


-----------[с листа2


--------------[на лист 2

Рисунок А.1. Алгоритм программы


---------------------------------------[с листа 1

------[на лист 1

Рисунок А.1. Лист №2


ПРИЛОЖЕНИЕ Б

Текст программы

// Password.cpp: implementation of the Password class.

//////////////////////////////////////////////////////////////////////

#include <afx.h>

#include "stdafx.h"

#include "PassGen.h"

#include "Password.h"