Мегаобучалка Главная | О нас | Обратная связь


Исходный код и windows-окна программного обеспечения



2015-11-27 469 Обсуждений (0)
Исходный код и windows-окна программного обеспечения 0.00 из 5.00 0 оценок




Практическое занятие № 1

МОДЕЛИРОВАНИЕ ПАРОЛЬНОЙ ЗАЩИТЫ

И ГЕНЕРАЦИЯ ПАРОЛЕЙ

Данное практическое занятие предусматривает создание студентом в среде программирования Borland Delphi 7 программного обеспечения моделирования парольной защиты и генерации паролей, а также изучение реализованных в этом программном обеспечении основных математических моделей парольной защиты при организации защиты информации.

 

Описание программного обеспечения генерации паролей

Функциональные возможности. Данное программное обеспечение (генератор паролей) реализует следующие функции.

1. Задание параметров базового алфавита посредством установки или снятия флажков для следующих групп символов: прописные латинские буквы, строчные латинские буквы, прописные русские буквы без «Ё», строчные русские буквы без «ё», буква «Ё», буква «ё», цифры, специальные символы стандартной клавиатуры компьютера. Установленный флажок указывает, что данная группа символов подлежит включению в базовый алфавит. В соответствии с заданными параметрами выводится объем (количество символов) базового алфавита в соответствующую строку редактирования. Если, например, не установлен ни один флажок, то объем равен нулю. Напротив, если установлены все восемь флажков, то объем равен 160 (по 26 прописных и строчных латинских букв, по 33 прописных и строчных русских букв, включая «Ё» и «ё», 10 цифр и 32 специальных символа).

2. Генерация базового алфавита в соответствии с заданными его параметрами (см. п. 1). Сгенерированный базовый алфавит выводится в соответствующую таблицу с тремя столбцами. Первая строка таблицы является ее заголовком. Любая другая строка служит для вывода информации о взаимнооднозначно соответствующем ей символе базового алфавита. В первом столбце отображается номер очередного символа по порядку от одного до величины объема базового алфавита, во втором – код символа в кодировке ANSI, в третьем – сам символ. Предполагается, что пароль генерируется в виде случайной последовательности символов базового алфавита фиксированной длины.

3. Исследование стойкости паролей по трем критериям в зависимости от длины (количества символов) пароля. Первый критерий – полное число вариантов пароля для данного базового алфавита и данной длины пароля. Второй критерий – среднее число вариантов пароля для данного базового алфавита и данной длины пароля, которое необходимо перебрать для вскрытия пароля. Третий критерий – среднее время, которое необходимо затратить на вскрытие пароля для данного базового алфавита и данной длины пароля при известной скорости перебора паролей. Скорость перебора паролей в смысле количества вариантов пароля, перебираемых в единицу времени, вводится в числе исходных данных в соответствующую строку редактирования окна выполняемой программы. Результаты проведенного исследования стойкости паролей выводятся в соответствующую таблицу с четырьмя столбцами. Первая строка таблицы является ее заголовком. Любая другая строка служит для вывода информации о взаимнооднозначно соответствующей ей длине пароля. В первом столбце отображается длина пароля, начиная с единичной и кончая известной максимальной для данного исследования. В остальных трех столбцах отображается величина стойкости пароля, измеренная по вышеуказанным трем критериям соответственно. Предполагается, что максимальная длина пароля вводится в числе исходных данных в соответствующую строку редактирования окна выполняемой программы.

4. Определение и вывод в соответствующую строку редактирования минимальной длины пароля, достаточной для обеспечения требуемой стойкости по выбранному критерию из вышеуказанных трех (см. п. 3). Предполагается, что величина требуемой стойкости вводится в числе исходных данных в соответствующую строку редактирования окна выполняемой программы после указания выбранного критерия.

5. Генерация с выводом в соответствующую строку редактирования пароля минимальной длины, обеспечивающего требуемую стойкость по выбранному критерию из вышеуказанных трех (см. п. 3). Предполагается, что длина генерируемого пароля выводится заранее (см. п. 4).

Исходные данные.

1. Параметры базового алфавита, задаваемые посредством флажков для групп символов.

2. Критерий стойкости паролей, выбираемый из трех возможных, описанных выше.

3. – максимальная длина пароля при исследовании.

4. V – скорость перебора паролей.

5. K – величина требуемой стойкости пароля.

Расчетные формулы. Полное число Р вариантов пароля для данного базового алфавита объема А и данной длины n пароля (значение первого критерия) определяется по формуле: . Среднее число S вариантов пароля для данного базового алфавита объема А и данной длины n пароля, которое необходимо перебрать для вскрытия пароля, (значение второго критерия) определяется по формуле: . Среднее время T, которое необходимо затратить на вскрытие пароля для данного базового алфавита объема А и данной длины n пароля при известной скорости V перебора паролей, (значение третьего критерия) определяется по формуле: . Минимально необходимое количество n символов пароля, обеспечивающего требуемую стойкость K по первому критерию, определяется по формуле: . Минимально необходимое количество n символов пароля, обеспечивающего требуемую стойкость K по второму критерию, определяется по формуле: . Минимально необходимое количество n символов пароля, обеспечивающего требуемую стойкость K по третьему критерию, определяется по формуле: . Квадратные скобки везде обозначают целую часть числа.

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

1. A – объем базового алфавита.

2. Базовый алфавит, выводимый в форме описанной выше таблицы.

3. – полное число вариантов пароля для данного базового алфавита объема А и данной длины n пароля (значение первого критерия).

4. – среднее число вариантов пароля для данного базового алфавита объема А и данной длины n пароля, которое необходимо перебрать для вскрытия пароля, (значение второго критерия).

5. – среднее время, которое необходимо затратить на вскрытие пароля для данного базового алфавита объема А и данной длины n пароля при известной скорости V перебора паролей, (значение третьего критерия).

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

7. Пароль минимальной длины, обеспечивающий требуемую стойкость по выбранному критерию.

 

Исходный код и windows-окна программного обеспечения

 

Математические модели парольной защиты при организации защиты информации реализованы в среде программирования Borland Delphi 7. Windows-окно выполняемой программы непосредственно после запуска представлено на рис. 1. Windows-окно выполняемой программы по окончании вычислений представлено на рис. 2. Код программы парольной защиты приведен ниже.


Рис. 1. Windows-окно выполняемой программы парольной защиты при организации защиты информации непосредственно после запуска

 

Рис. 2. Windows-окно выполняемой программы парольной защиты при организации защиты информации по окончании вычислений

program Project1; {Программа генератора паролей}

uses Forms, Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

Application.Initialize; Application.CreateForm(TForm1, Form1);

Application.Run;

end.

unit Unit1;

{Программный модуль генератора паролей}

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls, Menus;

type TForm1 = class(TForm)

GroupBox1: TGroupBox;{Панель параметров базового алфавита}

CheckBox1: TCheckBox;{Включать строчные латинские буквы}

CheckBox2: TCheckBox;{Включать прописные латинские буквы}

Label2: TLabel;{Включение латинских букв}

Label3: TLabel;{Включение русских букв}

CheckBox3: TCheckBox;{Включать прописные русские буквы}

CheckBox4: TCheckBox;{Включать строчные русские буквы}

CheckBox5: TCheckBox;{Включать Ё}

CheckBox6: TCheckBox;{Включать ё}

Label4: TLabel;{Включение других символов}

CheckBox7: TCheckBox;{Включать цифры}

CheckBox8: TCheckBox;{Включать специальные символы}

Label5: TLabel;{Количество символов базового алфавита}

Edit1: TEdit;{Количество символов базового алфавита}

Button1: TButton;{Генерация базового алфавита}

StringGrid1: TStringGrid;{Базовый алфавит}

GroupBox2: TGroupBox;{Исследование стойкости паролей}

Label1: TLabel;{Введите максимальную длину пароля}

Edit2: TEdit;{Ввод максимальной длины пароля}

Label6: TLabel;{Введите скорость перебора паролей}

Edit3: TEdit;{Ввод скорости перебора паролей}

Button2: TButton;{Пуск}

StringGrid2: TStringGrid;{Рез-ты исслед-ия стойкости паролей}

GroupBox3: TGroupBox;{Генерация пароля}

RadioGroup1: TRadioGroup;{Задайте треб. стойк. пароля в виде}

Label7: TLabel;{Введите требуемую стойкость пароля}

Edit4: TEdit;{Ввод требуемой стойкости пароля}

Button3: TButton;{Генерировать пароль}

Label8: TLabel;{Количество символов пароля}

Edit5: TEdit;{Ввод количества символов пароля}

Label9: TLabel;{Результат генерации пароля}

Edit6: TEdit;{Результат генерации пароля}

procedure CheckBox2Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure CheckBox3Click(Sender: TObject);

procedure CheckBox4Click(Sender: TObject);

procedure CheckBox5Click(Sender: TObject);

procedure CheckBox6Click(Sender: TObject);

procedure CheckBox7Click(Sender: TObject);

procedure CheckBox8Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private {Private declarations} public {Public declarations}

end;

const Amax=160; {число символов, пригодных для баз. алф.}

var Form1: TForm1;

A:byte; {количество символов базового алфавита}

ArrA:array[1..Amax] of Char; {массив символов баз. алфавита}

Dmax:byte; {максимальная длина пароля}

D:byte; {длина пароля}

V:extended; {скорость перебора паролей}

T:extended; {время перебора паролей}

ArrT:array[1..256] of extended;{массив времени переб. паролей}

Dp:extended; {полное число вариантов паролей}

ArrDp:array[1..256] of extended; {массив полн. числа вариантов}

Ds:extended; {среднее число перебора паролей}

ArrDs:array[1..256] of extended;{массив среднего числа перебора}

GP:string; {генерируемый пароль}

implementation

{$R *.dfm}

procedure TForm1.CheckBox2Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. проп. лат. букв}

begin A:=StrToInt(Edit1.Text);

if CheckBox2.Checked then A:=A+26 else A:=A-26;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. стр. лат. букв}

begin A:=StrToInt(Edit1.Text);

if CheckBox1.Checked then A:=A+26 else A:=A-26;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox3Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. проп. рус. букв}

begin A:=StrToInt(Edit1.Text);

if CheckBox3.Checked then A:=A+32 else A:=A-32;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox4Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. стр. рус. букв}

begin A:=StrToInt(Edit1.Text);

if CheckBox4.Checked then A:=A+32 else A:=A-32;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox5Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. буквы "Ё"}

begin A:=StrToInt(Edit1.Text);

if CheckBox5.Checked then A:=A+1 else A:=A-1;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox6Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. буквы "ё"}

begin A:=StrToInt(Edit1.Text);

if CheckBox6.Checked then A:=A+1 else A:=A-1;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox7Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. цифр}

begin A:=StrToInt(Edit1.Text);

if CheckBox7.Checked then A:=A+10 else A:=A-10;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.CheckBox8Click(Sender: TObject);

{коррекция числа симв. баз. алф. по призн. вкл. спец. симв.}

begin A:=StrToInt(Edit1.Text);

if CheckBox8.Checked then A:=A+32 else A:=A-32;

Edit1.Text:=IntToStr(A)

end;

procedure TForm1.Button1Click(Sender: TObject);

{генерация базового алфавита}

var Ns,Nc:byte;{текущие кол-во симв. баз. алф. и № кода симв.}

begin Ns:=0; {базовый алфавит пуст}

{возможное добавление символов с кодом 33-47}

if CheckBox8.Checked then {включать спец. симв. с кодом 33-47}

for Nc:=33 to 47 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 48-57}

if CheckBox7.Checked then {включать цифры с кодом 48-57}

for Nc:=48 to 57 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 58-64}

if CheckBox8.Checked then {включать спец. симв. с кодом 58-64}

for Nc:=58 to 64 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 65-90}

if CheckBox2.Checked then {включать проп. латинские буквы}

for Nc:=65 to 90 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 91-96}

if CheckBox8.Checked then {включать спец. симв. с кодом 91-96}

for Nc:=91 to 96 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 97-122}

if CheckBox1.Checked then {включать стр. латинские буквы}

for Nc:=97 to 122 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 123-126}

if CheckBox8.Checked then {включ. спец. симв. с кодом 123-126}

for Nc:=123 to 126 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символа с кодом 168 (Ё)}

if CheckBox5.Checked then {включать "Ё"}

begin {добавление символа с кодом 168 (Ё)}

Ns:=Ns+1; ArrA[Ns]:=Chr(168);

end; {добавление символа с кодом 168 (Ё)}

{возможное добавление символа с кодом 184 (ё)}

if CheckBox6.Checked then {включать "ё"}

begin {добавление символа с кодом 184 (ё)}

Ns:=Ns+1; ArrA[Ns]:=Chr(184);

end; {добавление символа с кодом 184 (ё)}

{возможное добавление символов с кодом 192-223}

if CheckBox3.Checked then {включать прописные русские буквы}

for Nc:=192 to 223 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{возможное добавление символов с кодом 224-255}

if CheckBox4.Checked then {включать строчные русские буквы}

for Nc:=224 to 255 do begin Ns:=Ns+1; ArrA[Ns]:=Chr(Nc) end;

{вывод базового алфавита}

StringGrid1.RowCount:=A+1;

for Ns:=1 to A do

begin

StringGrid1.Cells[0,Ns]:=IntToStr(Ns); {вывод номера символа}

StringGrid1.Cells[1,Ns]:=IntToStr(Ord(ArrA[Ns])); {вывод кода}

StringGrid1.Cells[2,Ns]:=ArrA[Ns]; {вывод символа}

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

{"Пуск"-исследование стойкости паролей}

var D:byte; {длина пароля}

begin {ввод исходных данных}

Dmax:=StrToInt(Edit2.Text); {ввод максимальной длины пароля}

V:=StrToFloat(Edit3.Text); {ввод скорости перебора паролей}

{вывод результатов}

StringGrid2.RowCount:=Dmax+1; Dp:=1;

for D:=1 to Dmax do

begin

StringGrid2.Cells[0,D]:=IntToStr(D);{вывод длины пароля}

Dp:=Dp*A; ArrDp[D]:=Dp;{расчет полного числа вар. перебора}

StringGrid2.Cells[1,D]:=FloatToStr(ArrDp[D]);{вывод полн. числа}

Ds:=(Dp+1)/2; ArrDs[D]:=Ds;{расчет сред. числа вар. перебора}

StringGrid2.Cells[2,D]:=FloatToStr(ArrDs[D]);{вывод сред. числа}

T:=Ds/V; ArrT[D]:=T; {расчет среднего времени перебора}

StringGrid2.Cells[3,D]:=FloatToStr(ArrT[D]); {вывод сред. врем.}

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

{генерировать пароль}

var i:byte; {номер символа генерируемого пароля}

begin

case RadioGroup1.ItemIndex of {учет критерия стойкости пароля}

0: {треб. стойкость пароля задается в виде полн. числа вар.}

Dp:=StrToFloat(Edit4.Text); {ввод полного числа вариантов}

1: {треб. стойкость пароля задается в виде сред. числа вар.}

begin

Ds:=StrToFloat(Edit4.Text); {ввод среднего числа вариантов}

Dp:=Ds*2-1; {расчет полного числа вариантов}

end;

2: {треб. стойкость пароля задается в виде сред. времени переб.}

begin

T:=StrToFloat(Edit4.Text); {ввод среднего времени перебора}

Ds:=T*V; {расчет среднего числа вариантов}

Dp:=Ds*2-1; {расчет полного числа вариантов}

end;

end;

D:=trunc(ln(Dp)/ln(A))+1; {расчет числа симв. генерир. пароля}

Edit5.Text:=IntToStr(D); {вывод числа симв. генерир. пароля}

GP:=''; randomize; {начальное задание генерируемого пароля}

for i:=1 to D do GP:=GP+ArrA[random(A)+1];{добавл. случ. симв.}

Edit6.Text:=GP {вывод генерируемого пароля}

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.ColCount:=3; StringGrid1.Cells[0,0]:='Номер';

StringGrid1.Cells[1,0]:='Код'; StringGrid1.Cells[2,0]:='Символ';

StringGrid2.ColCount:=4; StringGrid2.Cells[0,0]:='Длина';

StringGrid2.Cells[1,0]:='Полное число';

StringGrid2.Cells[2,0]:='Среднее число';

StringGrid2.Cells[3,0]:='Среднее время';

end;

end.

 



2015-11-27 469 Обсуждений (0)
Исходный код и windows-окна программного обеспечения 0.00 из 5.00 0 оценок









Обсуждение в статье: Исходный код и windows-окна программного обеспечения

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (469)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)