Защита данных от несанкционированного доступаРефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа
Int09_Save : pointer; {Переменная адреса 09h прерывания}
Const {Константы кодов команд, TV}
cmAboutBox = 700; {Окно "О Программе"}
cmCode = 1001; {Кодировать файл}
cmDeCode = 1002; {Декодировать файл}
cmSetPass = 1005; {Установить пароль на вход в систему}
cmLockDisk = 1006; {Запретить доступ к винчестеру}
cmOptions = 1007; {Опции криптографии}
cmKeyDisk = 1008; {Ключевая дискета}
cmPasswords = 1009; {Пароль на исполняемый файл}
cmChangePass= 1010; {Сменить пароль на вход в систему}
SetPass = 'passw.com';
KeyDisk = 'keydisk.com';
RMenuBar: TStreamRec = ( {Запись для работы с потоком, TV}
ObjType: 2000;
VmtLink: Ofs(TypeOf(TMenuBar)^);
Load: @TMenuBar.Load;
Store: @TMenuBar.Store);
Type
{Установка опций криптографии}
POptions = ^TOptions;
TOptions = object(TDialog)
constructor Init;
end;
{Объект для работы с текстом}
PMyStaticText = ^TMyStaticText;
TMyStaticText = object(TStaticText)
function GetPalette: PPalette; virtual; {Переопределение палитры}
end;
{Объекты для работы с файлами и каталогами}
PMyFDialog = ^TMyFDialog;
TMyFDialog = object(TFileDialog)
function GetPalette: PPalette; virtual;
end;
PMyFileDialog = ^TMyFileDialog;
TMyFileDialog = object(TMyFDialog)
constructor Init(AWildCard: tWildStr; const ATitle,
InputName: string; AOptions: Word; HistoryId: Byte);
end;
PDirDialog = ^TDirDialog;
TDirDialog = object(TChDirDialog)
function GetPalette: PPalette; virtual;
end;
PMyChDirDialog = ^TMyChDirDialog;
TMyChDirDialog = object(TDirDialog)
constructor Init(AOptions: Word; HistoryId: Word);
procedure SetUpDialog;
function Valid(Command: Word): Boolean; virtual;
end;
{Установка основного фона программы}
PMyBackground = ^TMyBackground;
TMyBackground = object(TBackground)
Text: TTitleStr;
constructor Init(var Bounds: TRect; AText: TTitleStr);
procedure Draw; virtual;
end;
PMyDesktop = ^TMyDesktop;
TMyDesktop = object(TDesktop)
procedure InitBackground; virtual;
end;
{Объект "О Программе"}
PAboutBox = ^TAboutBox;
TAboutBox = object(TDialog)
constructor Init;
end;
{Основной объект}
PMyApp = ^TMyApp;
TMyApp = object(TApplication)
constructor Init; {инициализация}
destructor Done; virtual; {завершение работы}
procedure HandleEvent(var Event: TEvent); virtual; {обработка событий}
procedure InitMenuBar; virtual; {инициализация меню}
procedure InitDeskTop; virtual; {инициализация рабочего поля}
procedure InitStatusLine; virtual; {инициализация строки состояния}
procedure FileOpen(WildCard: PathStr); {окно для работы с файлами}
function GetPalette: PPalette; virtual; {изменение стандартной палитры}
end;
{ Русифицированная функция формирования сообщения }
function MyMessageBoxRect(var R: TRect;
const Msg: string; Params: pointer;
AOptions: word): word;
const
ButtonName: array[0 3] of string[6] = ('Ага', 'Нека', 'Ага', 'Нека');
Commands: array[0 3] of Word = (cmYes, cmNo, cmOK, cmCancel);
Titles: array[0 3] of string[11] =
('Предупреждение', 'Ошибка', 'Информация', 'Подтверждение');
var
I, X : integer;
Dialog : PDialog;
Control: PView;
S : string;
begin
Dialog:= New(PDialog, Init(R, Titles[AOptions and $3]));
with Dialog^ do
begin
Options:= Options or ofCentered;
R.Assign(3, 2, Size.X - 2, Size.Y - 3);
FormatStr(S, Msg, Params^);
Insert(New(PStaticText, Init(R, S)));
X:= -2;
R.Assign(0, 0, 10, 2);
for I:= 0 to 3 do
if AOptions and ($0100 shl I) <> 0 then
Inc(X, R.B.X - R.A.X + 2);
X:= (Size.X - X) shr 1;
for I:= 0 to 3 do
if AOptions and ($0100 shl I) <> 0 then
begin
Control:= New(PButton, Init(
R, ButtonName[I], Commands[i], bfNormal));
Insert(Control);
Control^.MoveTo(X, Size.Y - 3);
Inc(X, Control^.Size.X + 2);
end;
SelectNext(False);
end;
if AOptions and mfInsertInApp = 0 then
MyMessageBoxRect:= DeskTop^.ExecView(Dialog)
else
MyMessageBoxRect:= Application^.ExecView(Dialog);
Dispose(Dialog, Done);
end;
{ Русифицированная функция формирования сообщения
стандартного размера }
function MyMessageBox(const Msg: String;
Params: Pointer; AOptions: Word): Word;
var
R: TRect;
begin
R.Assign(0, 0, 40, 9);
MyMessageBox:= MyMessageBoxRect(R, Msg, Params, AOptions);
end;
function GetCurDir: DirStr;
var
CurDir: DirStr;
begin
GetDir(0, CurDir);
if Length(CurDir) > 3 then
begin
Inc(CurDir[0]);
CurDir[Length(CurDir)]:= '\';
end;
GetCurDir:= CurDir;
end;
{Процедура инициализации окна работы с файлами}
procedure TMyApp.FileOpen(WildCard: PathStr);
var
FileName: FNameStr;
begin
FileName:= '*.*';
if ExecuteDialog(New(PMyFileDialog, Init(
WildCard, 'Открыть файл', 'Имя', fdOpenButton,
100)), @FileName) <> cmCancel then FName:=FileName;
{открыть файл, потом .}
end;
{****************************************************************************}
{*----------============= К Р И П Т О Г Р А Ф И Я ================----------*}
{****************************************************************************}
{Шифрование файлов}
procedure Shifr(InputFileName: string);
const
A = 5; {Константы для}
C = 27; {генератора}
M = 65536; {псевдослучайных чисел, далее - ПСЧ}
var
TempFile : file of byte;
InpF, OutF : file of word; {файлы на входе и выходе}
Password, Password1 : string; {переменные для работы с паролями}
OutputFileName, Exten : string; {переменные имен файлов}
I, J, K, tmp : byte; {переменные кодирования}
Temp, SCode, TByte, Code: word;
Position : LongInt; {переменные данных о процессе}