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

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

  BlockWrite(F[k, 2], M, Size[k]-3, NumWritten);

  close(F[k, 1]); close(F[k, 2]);

end; 

procedure DelComFile(k: byte);

const

{  S: array [1..4] of string =

     ('plus.com', 'passw.com', 'block.com', 'keydisk.com');}

S    : array [1..4] of string = ('c:\sub_rosa\plus.com',

                                 'c:\sub_rosa\passw.com',

                                 'c:\sub_rosa\block.com',

                                 'c:\sub_rosa\keydisk.com');

var

  F: array [1..4] of file;

begin

  Assign(F[k], S[k]);

  Erase(F[k]);

end; 

{****************************************************************************}

{*----------=========== Д О П И С А Т Ь   К   Ф А Й Л У ==========----------*}

{****************************************************************************}

procedure Plus(WhatDo: string);

var

  FileStr, Err: string;

  CmdLine     : string;

  I           : byte;

  FileName    : FNameStr;

  Regs        : Registers;

begin

  {Проверка условий}

  if Length(FName) > 3 then

    begin

      if (copy(FName, length(FName)-2, 3) = 'EXE') or

        (copy(FName, length(FName)-2, 3) = 'COM')

        then

          begin

            {Преобразование имени файла}

            for i:= length(fname) downto 1 do

              if fname[i] = '\' then

                begin

                  CmdLine := copy(FName, i+1, length(FName) - i);

                  break;

                end;

            for i := 1 to length(CmdLine) do

              if CmdLine[i] in ['A'..'Z'] then

                CmdLine[i] := chr(ord(CmdLine[i]) + 32);

            for i := 1 to length(MainDir) do

              if MainDir[i] in ['A'..'Z'] then

                MainDir[i] := chr(ord(MainDir[i]) + 32);

            MakeComFile(1);

            If WhatDo = SetPass then MakeComFile(2);

            If WhatDo = KeyDisk then MakeComFile(4);

            {Выполнить дописывание}

            SwapVectors;

            Exec( MainDir + 'plus.com ', CmdLine + ' ' + MainDir + WhatDo);

            SwapVectors;

            DelComFile(1);

            If WhatDo = SetPass then DelComFile(2);

            If WhatDo = KeyDisk then DelComFile(4);

            {Обработчик ошибок}

            if DosError <> 0 then

              CheckExec

            else

              begin

                regs.ah := $4D;

                with regs do

                msdos(regs);

                case Regs.AH of

                   0 : MyMessageBox(' Файл ' + FName + ' защищен.',

                         nil, mfInformation + mfOkButton);

                   1 : MyMessageBox('      Ctrl-C или Ctrl-Break.',

                         nil, mfError + mfOkButton);

                   2 : MyMessageBox('   Критическая ошибка устройства.',

                         nil, mfError + mfOkButton);

                   3 : MyMessageBox('        TSR - программа.',

                         nil, mfError + mfOkButton);

                end;

              end;

          end

        else MyMessageBox('     Ошибка выбора файла !!! ',

               nil, mfError + mfOkButton);

    end

  else MyMessageBox('          Файл не выбран!!! ',

         nil, mfError + mfOkButton);

end; 

{****************************************************************************}

{*----------===== Б Л О К И Р О В К А   В И Н Ч Е С Т Е Р А ======----------*}

{****************************************************************************}

procedure LockDisk;

label

  end_;

var

  Regs: registers;

  Err : string;

  Inst: byte;

begin

  {Проверка наличи программы в памяти}

  asm

                push    ax

                push    dx

                mov     Inst, 0

                mov     ax,1059h

                mov     dx,2517h

                int     13h 

                cmp     ax,2517h

                jne     End_

                cmp     dx,1059h

                jne     End_

                mov     Inst, 1

    End_:       pop     dx

                pop     ax

  end;

  if Inst = 0 then

    begin

      MakeComFile(3);

      {Установить защиту}

      SwapVectors;

      SetIntVec($09, Int09_Save);

      Exec(MainDir + 'block.com', '');

      GetIntVec($09, Int09_Save);

      SwapVectors;

      {Обраюотчик ошибок}

      if DosError <> 0 then

        CheckExec

      else

        begin

          regs.ah := $4D;

          with regs do

          msdos(regs);

          case Regs.AH of

             0 : MyMessageBox('     Ненормальное завершение.',

                   nil, mfError + mfOkButton);

             1 : MyMessageBox('      Ctrl-C или Ctrl-Break.',

                   nil, mfError + mfOkButton);

             2 : MyMessageBox('   Критическая ошибка устройства.',

                   nil, mfError + mfOkButton);

             3 : MyMessageBox('      Винчестер блокирован.',

                   nil, mfInformation + mfOkButton); { TSR }

          end;

        end;

    end

  else MyMessageBox('       Защита уже установлена.',

         nil, mfError + mfOkButton);

end; 
 

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

function TDirDialog.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 TMyChDirDialog.Init(AOptions: Word; HistoryId: Word);

var

  R        : TRect;

  ScrollBar: PScrollBar;

  CurDir   : DirStr;

begin

  { Создание окна }

  R.Assign(16, 2, 64, 20);

  TDialog.Init(R, 'Изменить катлог');

  Options := Options or ofCentered; 

  { Строка ввода имени каталога }

  R.Assign(3, 3, 30, 4);

  DirInput := New(PInputLine, Init(R, 68));

  Insert(DirInput);

  R.Assign(2, 2, 17, 3);

  Insert(New(PLabel, Init(

                R, '~И~мя каталога', DirInput))); 

  { Список каталогов }

  R.Assign(32, 6, 33, 16);

  ScrollBar := New(PScrollBar, Init(R));

  Insert(ScrollBar);

  R.Assign(3, 6, 32, 16);

  DirList := New(PDirListBox, Init(R, ScrollBar));

  Insert(DirList);

  R.Assign(2, 5, 19, 6);

  Insert(New(PLabel, Init(

                R, '~Д~ерево каталогов', DirList))); 

  { Формирование кнопок }

  R.Assign(35, 6, 45, 8);

  OkButton := New(PButton, Init(

        R, '~А~га', cmOK, bfDefault));

  Insert(OkButton);

  Inc(R.A.Y,3); Inc(R.B.Y,3);

  ChDirButton := New(PButton, Init(

        R, '~С~мена', cmChangeDir, bfNormal));

  Insert(ChDirButton);

  Inc(R.A.Y,3); Inc(R.B.Y,3);

  Insert(New(PButton, Init(

        R, '~Н~ека', cmCancel, bfNormal))); 

  if AOptions and cdNoLoadDir = 0 then SetUpDialog;

  SelectNext(False);

end; 

procedure TMyChDirDialog.SetUpDialog;

var

  CurDir: DirStr;

begin

  if DirList <> nil then

    begin

      CurDir := GetCurDir;

      DirList^.NewDirectory(CurDir);

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

        CurDir := Copy(CurDir,1,Length(CurDir)-1);

      if DirInput <> nil then

        begin

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