Защита данных от несанкционированного доступаРефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа
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,
nil)))))),
nil)));
end;
{Изменить основную палитру}
function TMyApp.GetPalette: PPalette;
const
P: Array [apColor apMonochrome] of string[Length(CAppColor)] =
(CAppColor, CAppBlackWhite, CAppMonochrome);
begin
P[apColor, 50] := #$11; {1F}
P[apColor, 51] := #$11; {2F}
P[apColor, 1] := #$21; {71}
GetPalette := @P[AppPalette];
end;
{Изменить палитру окна выбора файлов}
function TMyFDialog.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 TMyFileDialog.Init(AWildCard: tWildStr;
const ATitle, InputName: string;
AOptions: Word; HistoryId: Byte);
var
ScrollBar: PScrollBar;
R : TRect;
begin
{ Создание окна диалога }
R.Assign(15, 1, 64, 20);
TDialog.Init(R, ATitle);
Options:= Options or ofCentered;
WildCard:= AWildCard;
{ Строка ввода имени файла }
R.Assign(3, 3, 31, 4);
FileName:= New(PFileInputLine, Init(R, 79));
FileName^.Data^:= WildCard;
Insert(FileName);
R.Assign(2, 2, 6, 3);
Insert(New(PLabel, Init(R, InputName, FileName)));
R.Assign(31, 3, 34, 4);
Insert(New(PHistory, Init(R, FileName, HistoryId)));
{ Линейка скроллинга и список файлов }
R.Assign(3, 14, 34, 15);