Защита данных от несанкционированного доступа

Автор: Пользователь скрыл имя, 26 Декабря 2011 в 13:54, курсовая работа

Краткое описание

При создании и использовании ПЭВМ возникает целый ряд взаимосвязанных теоретических и практических проблем. В коммерческих и военных областях одной из основных является проблема защиты информации. Так можно выделить следующие объективные причины, определяющие важность проблемы защиты информации:
высокие темпы роста парка ПЭВМ, находящихся в эксплуатации;
широкое применение ПЭВМ в самых различных сферах человеческой деятельности;
высокая степень концентрации информации в ПЭВМ;
совершенствование способов доступа пользователей к ресурсам ПЭВМ;
усложнение вычислительного процесса в ПЭВМ.

Оглавление

Введение . . . . . . . . . . . 3
1. Постановка задачи . . . . . . . . . 4
1. 1. Организационно-экономическая сущность задачи . . . . 4
1. 2. Входные данные . . . . . . . . . 6
1. 3. Постоянная информация . . . . . . . . 6
1. 4. Выходная данные . . . . . . . . . 6
2. Вычислительная система . . . . . . . . 7
2. 1. Операционная система . . . . . . . . 7
2. 2. Технические средства реализации задачи . . . . . . 8
2. 3. Программные средства . . . . . . . . 8
3. Алгоритм задачи . . . . . . . . . 10
4. Описание программы . . . . . . . . . 14
5. Описание применения программы . . . . . . 16
6. Заключение . . . . . . . . . . 17

Файлы: 1 файл

KP_MAX.DOC

— 201.50 Кб (Скачать)

          DirInput^.Data^ := CurDir;

          DirInput^.DrawView;

        end;

    end;

end; 

function TMyChDirDialog.Valid(Command: Word): Boolean;

var

  P: PathStr;

begin

  Valid := True;

  if Command = cmOk then

    begin

      P := FExpand(DirInput^.Data^);

      if (Length(P) > 3) and (P[Length(P)] = '\') then

        Dec(P[0]);

      {$I-}

      ChDir(P);

      if IOResult <> 0 then

        begin

          MyMessageBox('      Неправильный каталог!',

            nil, mfError + mfOkButton);

          Valid := False;

        end;

      {$I+}

    end;

end; 
 

{Инициализировать рабочее поле}

constructor TMyBackground.Init(var Bounds: TRect; AText: TTitleStr);

begin

  inherited Init(Bounds, ' ');

  Text := AText;

  while Length(Text) < SizeOf(TTitleStr) - 1 do

    Text := Text + AText;

end; 

procedure TMyBackground.Draw;

var

  DrawBuffer: TDrawBuffer;

begin

  MoveStr(DrawBuffer, Text, GetColor(1));

  WriteLine(0, 0, Size.X, Size.Y, DrawBuffer);

end; 

procedure TMyDesktop.InitBackground;

var

  R: TRect;

begin

  GetExtent(R);

  Background := New(PMyBackground, Init(R, '___'));

end; 

{Изменить стандартную палитру}

function TMyStaticText.GetPalette: PPalette;

const

  {Синяя палитра}

  CMyCluster     = #64#65#66#67#68#69#70#71#72#73#74#75#76#77#78#79#80#81#82+

                   #83#84#85#86#87#88#89#90#91#92#93#94#95;

  P: string [32] = CMyCluster;

begin

  GetPalette := @P;

end; 
 

{Окно "О Программе"}

constructor TAboutBox.Init;

var

  R: TRect;

begin

  R.Assign(0, 0, 30, 16);

  inherited Init(R, 'О программе');

  Options := Options or ofCentered; 

  R.Assign(10, 13, 20, 15);

  Insert(New(PButton, Init(R, '~А~га', cmOK, bfDefault))); 

  R.Assign(11, 2, 19, 3);

  Insert(New(pMyStaticText, Init(R, 'Sub Rosa'))); 

  R.Assign(1, 4, 29, 5);

  Insert(New(pStaticText, Init(R, 'Система защиты данных от НСД'))); 

  R.Assign(5, 5, 29, 6);

  Insert(New(pStaticText, Init(R, 'выполнена  учащимися'))); 

  R.Assign(10, 6, 29, 7);

  Insert(New(pStaticText, Init(R, 'гр. 4641'))); 

  R.Assign(6, 7, 29, 8);

  Insert(New(pStaticText, Init(R, 'Егановым  Максимом'))); 

  R.Assign(14, 8, 22, 9);

  Insert(New(pStaticText, Init(R, 'и'))); 

  R.Assign(6, 9, 29, 10);

  Insert(New(pStaticText, Init(R, 'Юзефовичем Артемом'))); 

  R.Assign(6, 11, 29, 12);

  Insert(New(pStaticText, Init(R, 'МГВРК, Минск, 1996')));

end; 

{Работа программы начинается здесь...}

constructor TMyApp.Init;

var

  ReturnVal, i                : Word;

  DirInfo, DirInfo1, DirInfo2 : SearchRec;

  DirInfo3, DirInfo4, DirInfo5: SearchRec;

  Pas                         : string;

  st                          : char;

begin

  OptInd := 1;

  {Инициализировать файл ресурсов}

  MyRes.Init(New(PBufStream, Init('Setup.res', stOpen, 1024)));

  if MyRes.Stream^.Status <> stOK then

    begin

      Write('Нарушение целостности!');

      halt(1);

    end;

  RegisterType(RMenuBar);

  {Проверить целостность системы}

  MainDir := GetCurDir;

  FindFirst('plus',    AnyFile, DirInfo);

  FindFirst('passw',   AnyFile, DirInfo1);

  FindFirst('block',   AnyFile, DirInfo2);

  FindFirst('keydisk', AnyFile, DirInfo3);

  FindFirst('setup.res',   AnyFile, DirInfo4);

  if (DOSError = 0) and (DirInfo.Size = 1068) and (DirInfo1.Size = 204) and

     (DirInfo2.Size = 617) and (DirInfo3.Size = 2118) and

     (DirInfo4.Size = 522) then

    begin

      {Получить пароль}

      Assign(FilePass, 'system.res');

      Reset(FilePass);

      Pass := '';

      while not EOF(FilePass) do

        begin

          read(FilePass, st);

          Pass := Pass + st;

        end;

      Close(FilePass);

      {Инициализировать систему}

      TApplication.Init;

      Pas := '';

      ReturnVal := ExecuteDialog(New(PAboutBox, Init), nil);

      InputBox('П А Р О Л Ь', 'Введите пароль:', Pas, 255);

      for i:= 1 to length(Pas) do Pas[i] :=chr(ord(Pas[i]) xor 27);

      if Pas <> Pass then

        begin

          MyMessageBox('        Неверный пароль!!!', nil, mfError+mfOkButton);

          ClrScr;

          writeln('Несанкционированный доступ!');

          Halt;

        end;

    end

  else

    begin

      writeln('Нарушение целостности!');

      Halt;

    end;

end; 

{Завершение работы}

destructor TMyApp.Done;

begin

  TApplication.Done;

  MyRes.Done;

end; 
 

{Обработка событий}

procedure TMyApp.HandleEvent(var Event: TEvent);

  procedure ChangeDir;

  var

    D: PMyChDirDialog;

  begin

    D:= New(PMyChDirDialog, Init(cdNormal, 101));

    ExecuteDialog(D, nil);

  end; 

var

  ReturnVal: Word;

  regs     : Registers;

  R        : TRect;

begin

  inherited HandleEvent(Event);

  case Event.What of

    evCommand:

      begin

        case Event.Command of

          cmAboutBox  : ReturnVal :=

                          ExecuteDialog(New(PAboutBox, Init), nil);

          cmOpen      : FileOpen('*.*');

          cmChangeDir : ChangeDir;

          cmSetPass   : Plus(SetPass);

          cmKeyDisk   : Plus(KeyDisk);

          cmCode      : Shifr(FName);

          cmDeCode    : DeShifr(FName);

          cmLockDisk  : LockDisk;

          cmOptions   : ReturnVal :=

                          ExecuteDialog(New(POptions, Init), @OptFile);

          cmPasswords : Passwords

        end;

        ClearEvent(Event);

      end;

  end;

end; 

{Инициализировать меню}

procedure TMyApp.InitMenuBar;

var

  R: TRect;

begin

  {Получить меню из файла ресурсов по ключу "Config" - функция получения}

  {даты BIOS; модуль SetConf}

  MenuBar := PMenuBar(MyRes.Get(Config));

  if MenuBar = nil then

    begin

      Write(' Нелегальная копия!!!');

      halt(1);

    end;

end; 

{Инициализировать рабочее поле}

procedure TMyApp.InitDesktop;

var

  R: TRect;

begin

  GetExtent(R);

  R.Grow(0, -1);

  Desktop := New(PMyDesktop, Init(R));

end; 

{Инициализировать строку состояния}

procedure tMyApp.InitStatusLine;

var

  R: tRect;

begin

  GetExtent(R);

  R.A.Y:= R.B.Y - 1;

  StatusLine:= New(pStatusLine, Init(R,

  NewStatusDef(0, $FFFF,

    NewStatusKey('~F1~ О программе', kbF1, cmAboutBox,

    NewStatusKey('~F3~ Файл', kbF3, cmOpen,

    NewStatusKey('~F5~ Пароль', kbF10, cmMenu,

    NewStatusKey('~F9~ Настройки', kbF9, cmOptions,

    NewStatusKey('~F10~ Меню', kbF10, cmMenu,

    NewStatusKey('~Alt-X~ Выход', kbAltX, cmQuit,

Информация о работе Защита данных от несанкционированного доступа