Защита данных от несанкционированного доступа
Рефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа

Mas[i] := Code;

end;

MasEnd := Mas;

for i := 1 to 64 do Write(OutF, MasEnd[i]);

end;

until eof(InpF);

GotoXY(77, 1);

write('100%');

MyMessageBox('Файл '+ InputFileName + ' расшифрован в ' +

OutputFileName, nil, mfInformation+mfOkButton);

Close(InpF);

if OptFile = 1 then Erase(InpF);

Close(OutF);

end

else MyMessageBox('Файл '+ InputFileName + ' не существует!',

nil, mfInformation+mfOkButton);

end

else MyMessageBox(' Ошибка ввода пароля!!!', nil,

mfError+mfOkButton);

end

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

mfError+mfOkButton);

end;

{Опции криптографии}

constructor TOptions.Init;

var

R : TRect;

Q, Q1: PView;

Butt : TRadioButtons;

begin

R.Assign(0, 0, 60, 11);

inherited Init(R, 'Криптография');

Options := Options or ofCentered;

R.Assign(10, 8, 20, 10);

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

R.Assign(40, 8, 50, 10);

Insert(New(PButton, Init(R, '~Н~ека', cmCancel, bfNormal)));

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

Insert(New(PLabel, Init(R, 'Исходный файл:', Q)));

R.Assign(5, 4, 21, 6);

Q:=New(PRadioButtons, Init(R,

NewSItem('~Н~е удалять',

NewSItem('~У~далять', nil))));

Insert(Q);

R.Assign(27, 2, 45, 3);

Insert(New(PLabel, Init(R, 'Индикатор:', Q1)));

R.Assign(30, 4, 50, 6);

Q1:=New(PRadioButtons, Init(R,

NewSItem('~В~ысвечивать',

NewSItem('~Н~е высвечивать', nil))));

Insert(Q1);

end;

{Изменение пароля на вход в систему}

procedure Passwords;

var

Ps, Ps1: string;

I : byte;

tmp : char;

begin

Ps := '';

Ps1 := '';

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

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

if Ps <> Pass then

begin

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

ClrScr;

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

Halt;

end;

InputBox('И З М Е Н Е Н И Е П А Р О Л Я',

'Введите новый пароль:', Ps, 255);

InputBox('И З М Е Н Е Н И Е П А Р О Л Я',

' Повторите ввод:', Ps1, 255);

if (Ps = Ps1) and (Ps <> '') then

begin

Assign(FilePass, 'system.res');

Rewrite(FilePass);

for i := 1 to length(PS) do

begin

tmp := chr(ord(Ps[i]) xor 27);

Write(FilePass, tmp);

end;

Close(FilePass);

end

else MyMessageBox(' Ошибка ввода пароля!!!', nil, mfError+mfOkButton);

end;

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

procedure CheckExec;

var

St: string;

begin

Str(DOSError, St);

case DOSError of

2: MyMessageBox(' Ошибка DOS № ' +

St + ' "Файл не найден"',

nil, mfError + mfOkButton);

3: MyMessageBox(' Ошибка DOS № ' +

St + ' "Путь не найден"',

nil, mfError + mfOkButton);

5: MyMessageBox(' Ошибка DOS № ' +

St + '"Неверный код доступа к файлу"',

nil, mfError + mfOkButton);

6: MyMessageBox(' Ошибка DOS № ' +

St + '"Неверный код системного обработчика файла"',

nil, mfError + mfOkButton);

8: MyMessageBox(' Ошибка DOS № ' +

St + ' "Недостаточно памяти"',

nil, mfError + mfOkButton);

10: MyMessageBox(' Ошибка DOS № ' +

St + ' "Неверная среда"',

nil, mfError + mfOkButton);

11: MyMessageBox(' Ошибка DOS № ' +

St + ' "Неправильный формат"',

nil, mfError + mfOkButton);

18: MyMessageBox(' Ошибка DOS № ' +

St + '"Нет свободных обработчиков для файлов"',

nil, mfError + mfOkButton);

end;

end;

procedure MakeComFile(k: byte);

const

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

'c:\sub_rosa\block.', 'c:\sub_rosa\keydisk.');

Size : array [1 4] of word = (1068, 204, 617, 2118);

Inden: array [1 4, 1 3] of byte = ((ord('ы'), 26 , ord('Р')),

(ord('ы'), 39 , ord('Р')),

(ord('щ'), ord('Й'), ord('')),

(ord('щ'), ord('А'), ord('')));

var

I, Tmp : byte;

F : array [1 4, 1 2] of file ;

M : array [1 2200] of byte ;

NumRead, NumWritten: Word;

begin

assign(F[k, 1], S[k]); reset(F[k, 1], 1);

assign(F[k, 2], S[k]+'com'); rewrite(F[k, 2], 1);

for i := 1 to 3 do

begin

BlockRead(F[k, 1], tmp, 1, NumRead);

BlockWrite(F[k, 2], Inden[k, i], 1, NumWritten);

end;

BlockRead(F[k, 1], M, Size[k]-3, NumRead);

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);


Страница: