Обнаружение вредоносных закладок
Рефераты >> Программирование и компьютеры >> Обнаружение вредоносных закладок

Запуск приложения

нет

Овал: конец

Овал: началоРис 3.2

ЗАКЛЮЧЕНИЕ

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

-пароли в системе должны храниться обязательно в зашифрованном виде;

-рядовые пользователи не должны иметь доступ к эталонной информации;

-должна быть найдена ‘золотая середина’ между легкостью запоминания пароля и его не тривиальностью.

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

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

ПРИЛОЖЕНИЕ A (ИНТЕРФЕЙС ПРОГРАММЫ)

5. ПРИЛОЖЕНИЕ B (ЛИСТИНГ ПРОГРАММЫ).

unit Unitkurs1;{главный}

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Mask;

type

TForm1 = class(TForm)

Label1: TLabel;

EditID: TEdit;

Label2: TLabel;

EditPSW: TMaskEdit;

Button1: TButton;

Button2: TButton;

Label3: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure Generator;

end;

var

Form1: TForm1;

F_Mag,

F_PSW:file of char;{переменная, связанная с файлом 'password.txt'}

i,j,l,flag,i1,f{Yo}:integer;

y:integer;{псевдослучайное число}

UserMatrix:array[1 10,1 3] of string;{массив фамилий, идентификаторов и паролей пользователей}

Surname:array[1 150] of char;{массив фамилий пользователей}

IDs:array[1 100] of char;{массив идентификаторов пользователей}

PSWs:array[1 100] of char;{массив паролей пользователей}

stroca,Ident,Psword:string;

xxx:char;

const

Yo:integer=14;

implementation

uses Unitkurs, Unitkurs3;

{$R *.DFM}

{процедура реализующая ЛИНЕЙНЫЙ КОНГУЭНТНЫЙ ГЕНЕРАТОР}

procedure Tform1.Generator;

begin

y:=(31*y+17)mod(257);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close

end;

{нажатие кнопки 'принять'}

procedure TForm1.Button1Click(Sender: TObject);

begin

if (EditID.Text='admin')and(EditPSW.Text='password')

then Form2.Visible:=true

else {если не администратор}

begin

Ident:=EditId.Text;

Psword:=EditPSW.Text;

i:=1;

repeat

if i>length(Ident) then Ident:=Ident+' ';

if i>length(Psword) then Psword:=Psword+' ';

i:=i+1;

until i>=11;

{запись в журнал аудита}

{$I-}

AssignFile(F_Mag,'audit');

Reset(F_Mag);

{$I+}

if IOResult<>0 then begin Rewrite(F_Mag); y:=Yo end

else begin

if FileSize(F_Mag)=0 then y:=Yo

else begin

y:=yo;

f:=20*round(FileSize(F_Mag)/30);

i:=1;

repeat

generator;

i:=i+1

until i>=f+1;

end;

end;

Seek(F_Mag,FileSize(F_Mag));

i:=1;

repeat

generator;

xxx:=Chr((ord(Ident[i]))xor(y));

Write(F_Mag,xxx);

i:=i+1;

until i>=11;

i:=1;

repeat

generator;

xxx:=Chr((ord(PSWord[i]))xor(y));

Write(F_Mag,xxx);

i:=i+1;

until i>=11;

{чтение информации из файла}

Y:=14;

AssignFile(F_PSW,'password.txt');

Reset(F_PSW);

{фамилии}

j:=1;

repeat

Read(F_PSW,Surname[j]);

j:=j+1

until j>=151;

{идентификаторы}

j:=1;

repeat

Read(F_PSW,IDs[j]);

generator;

ids[j]:=chr((ord(ids[j]))xor(y));

j:=j+1

until j>=101;

{пароли}

j:=1;

repeat

Read(F_PSW,PSWs[j]);

generator;

PSWs[j]:=chr((ord(PSWs[j]))xor(y));

j:=j+1

until j>=101;

CloseFile(F_PSW);

{сбор в массив UserMatrix}

i:=1;

repeat

stroca:='';

j:=1;

repeat

if Surname[(i-1)*15+j]<>' ' then stroca:=stroca+Surname[(i-1)*15+j];

j:=j+1

until j>=16;

UserMatrix[i,1]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if IDs[(i-1)*10+j]<>' ' then stroca:=stroca+IDs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,2]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if PSWs[(i-1)*10+j]<>' ' then stroca:=stroca+PSWs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,3]:=stroca;

i:=i+1

until i>=11;

{идентификация и аутентификация}

flag:=0;

i:=1;

repeat

if (EditID.Text=UserMatrix[i,2])and(EditPSW.Text=UserMatrix[i,3])and

(EditID.Text<>'') then begin

Flag:=1;

i1:=i end;

i:=i+1

until i>=11;

if flag=1 then begin

xxx:='y';

i:=1;

repeat

Write(F_Mag,xxx);


Страница: