Защита данных от несанкционированного доступа
k : 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);
ScrollBar:= New(PScrollBar, Init(R));
Insert(ScrollBar);
R.Assign(3, 6, 34, 14);
FileList:= New(PFileList, Init(R, ScrollBar));
Insert(FileList);
R.Assign(2, 5, 8, 6);
Insert(New(PLabel, Init(R, 'Файлы', FileList)));
{ Задание кнопок }
R.Assign(35, 3, 46, 5);
if AOptions and fdOpenButton <> 0 then
begin
Insert(New(PButton, Init(
R, 'Открыть', cmFileOpen, bfDefault)));
Inc(R.A.Y,3); Inc(R.B.Y,3);
end;
if AOptions and fdOkButton <> 0 then
begin
Insert(New(PButton, Init(
R, 'Ага', cmFileOpen, bfNormal)));
Inc(R.A.Y,3); Inc(R.B.Y,3);
end;
if AOptions and fdReplaceButton <> 0 then
begin
Insert(New(PButton, Init(
R, 'Замена',cmFileReplace, bfNormal)));
Inc(R.A.Y,3); Inc(R.B.Y,3);
end;
if AOptions and fdClearButton <> 0 then
begin
Insert(New(PButton, Init(
R, 'Удал.',cmFileClear, bfNormal)));
Inc(R.A.Y,3); Inc(R.B.Y,3);
end;
Insert(New(PButton, Init(
R, 'Нека', cmCancel, bfNormal)));
{ Информационная панель с параметрами файла }
R.Assign(1, 16, 48, 18);
Insert(New(PFileInfoPane, Init(R)));
SelectNext(False);
{ Загрузка каталога }
if AOptions and fdNoLoadDir = 0 then
begin
FileList^.ReadDirectory(WildCard);
Directory:= NewStr(GetCurDir);
end;
end;
Var
MyApp: TMyApp; {Переменная основного объекта}
Begin
WriteLn('Система защиты данных от НСД. Версия 1.0 beta.'+
+' 1996 МГВРК Еганов М. Ю., Юзефович А. Г.');
GetIntVec($09,Int09_Save);
MyApp.Init;
MyApp.Run;
MyApp.Done;
SetIntVec($09, Int09_Save);
End.
Приложение 2
Листинг библиотек
{**************************************************************************
*}
{**************************************************************************
*}
{**
**}
{** КП "ЗАЩИТА ДАННЫХ ОТ НСД"
**}
{** Выполнил учащийся гр.46491 ЕГАНОВ МАКСИМ
**}
{** 1996
**}
{**
**}
{** Программа инсталляции
**}
{**************************************************************************
*}
{**************************************************************************
*}
Program Install;
Uses
App, Dialogs, Drivers, Menus, MsgBox, Objects,
Views, Memory, StdDlg, CRT, DOS, SetConf;
Const {константы кодов команд}
cmAboutBox = 700;
cmCode = 1001;
cmDeCode = 1002;
cmSetPass = 1005;
cmLockDisk = 1006;
cmOptions = 1007;
cmKeyDisk = 1008;
cmPasswords = 1009;
RMenuBar: TStreamRec = ( {Запись для работы с потоком, TV}
ObjType: 2000;
VmtLink: Ofs(TypeOf(TMenuBar)^);
Load: @TMenuBar.Load;
Store: @TMenuBar.Store);
Var
Save23hInt : Pointer; {Переменные сохранения векторов прерываний}
Save1bhInt : Pointer;
MyApp : TApplication;
MyRes : TResourceFile;
MyStream : PBufStream;
{Формирование подменю "Файлы"}
function MyStdFileMenuItems(Next: pMenuItem): pMenuItem;
begin
MyStdFileMenuItems:=
NewItem('Выбрать...', 'F3', kbF3, cmOpen, hcOpen,
NewItem('Сменить каталог...', '',
kbNoKey, cmChangeDir, hcChangeDir,
NewLine(
NewItem('Выход в ДОС', '', kbNoKey, cmDosShell, hcDosShell,
NewItem('Завершение', 'Alt+X', kbAltX, cmQuit, hcExit,
Next)))));
end;
{Формирование основного меню}
procedure CreateMenuBar;
var
MenuBar: PMenuBar;
R : TRect;
begin
R.Assign(0, 0, 80, 1);
MenuBar:= New(pMenuBar, Init(R, NewMenu(
NewSubMenu('~Ф~айлы', hcNoContext, NewMenu(
MyStdFileMenuItems(nil)),
NewSubMenu('~З~ащита', hcNoContext, NewMenu(
NewItem('~У~становить пароль', 'F5', kbF5, cmSetPass, 1005,
NewItem('~Б~локировать винчестер', '', kbNoKey, cmLockDisk, 1006,
nil))),
NewSubMenu('~К~лючевая дискета', hcNoContext, NewMenu(
NewItem('~Д~обавить проверку по ключу', '', kbNoKey, cmKeyDisk,
1008, nil)),
NewSubMenu('~К~риптография', hcNoContext, NewMenu(
NewItem('Зашифровать файл данных','', kbNoKey, cmCode, 1001,
NewItem('Расшифровать файл данных','', kbNoKey, cmDeCode, 1002,
nil))),
NewSubMenu('~Н~астройки', hcNoContext, NewMenu(
NewItem('Криптография...','F9', kbF9, cmOptions, 1007,
NewItem('Пароли...','F8', kbF8, cmPasswords, 1008, nil))),
NewItem('~О~ программе', '', kbAltJ, cmAboutBox, 700, nil)))))))));
MyRes.Put(MenuBar, Config);
Dispose(MenuBar, Done);
end;
{Процедура управления формой курсора}
procedure SetCursorSize(c_start,c_end:byte);
var
regs: registers;
begin
with regs do
begin
ah:=$01;
ch:=c_start;
cl:=c_end;
end;
intr($10,regs);
end;
{Процедура замены вектора преываний}
{$F+}
procedure My23hInt;Interrupt;
begin
end;
{$F-}
{Процедура копирования файлов}
procedure CopyFyle(FromCopy: string);
const
TempLength = 1125.28;
var
ToCopy : string;
Source, Target : file;
NumRead, NumWrite: word;
buf : string;
TempPos, Temp : real;
begin
{Открыть файлы}
ToCopy := 'c:';
ToCopy := ToCopy + copy(FromCopy, 3, length(FromCopy) - 2);
assign(Source, FromCopy);
assign(Target, ToCopy);
reset(Source, 1);
rewrite(Target, 1);
Temp := 0;
{Копировать}
repeat
BlockRead(Source, Buf, Sizeof(Buf)-1, NumRead);
if FromCopy = 'a:sub_rosasub_rosa.exe' then
begin
TempPos := 100*Temp/TempLength;
Temp := Temp + 2.5;
GotoXY(17, 25);
if (TempPos > 98) and (TempPos < 100) then write('100.0 %')
else write(TempPos: 4: 1, ' %');
end;
{Обработчик ошибок}
if (NumRead<>Sizeof(Buf)-1) and (not EOF(Source)) then
| | скачать работу |
Защита данных от несанкционированного доступа |