Защита данных от несанкционированного доступаРефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа
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_rosa\sub_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
begin
WriteLn;
WriteLn('Ошибка чтения с диска');
SetIntVec($23, Save23hInt);
SetIntVec($1b, Save1bhInt);
halt;
end;
BlockWrite(Target,Buf,NumRead,NumWrite);
If NumRead<>NumWrite then
begin
WriteLn;
WriteLn('На диске не хватает места для записи');
SetIntVec($23, Save23hInt);
SetIntVec($1b, Save1bhInt);
halt;
end;