Защита данных от несанкционированного доступаРефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа
until NumRead=0;
close(Source);
close(Target);
end;
Var
Directory: string; {Куда копировать}
Begin {Основная часть программы}
GetIntVec($23, Save23hInt); {Подменить вектора прерываний 23h, 1bh}
GetIntVec($1b, Save1bhInt); {Отключение Ctrl-C или Ctrl-Break}
SetIntVec($23, @My23hInt);
SetIntVec($1b, @My23hInt);
SetCursorSize(32, 0);
{$I-}
Directory:='c:\sub_rosa'; {Создать каталог для установки}
MkDir(Directory);
if IOResult <> 0 then {Обработчик ошибок}
begin
WriteLn('Система уже была инсталлирована');
SetIntVec($23, Save23hInt);
SetIntVec($1b, Save1bhInt);
halt;
end;
{$I+}
{Создать файл ресурсов с привязкой к уникальным параметрам BIOS}
MyStream := New(PBufStream, Init('c:\sub_rosa\Setup.res', stCreate, 2048));
MyRes.Init(MyStream);
RegisterType(RMenuBar);
CreateMenuBar;
MyRes.Done;
{Копировать файлы}
CopyFyle('a:\sub_rosa\block.');
CopyFyle('a:\sub_rosa\keydisk.');
CopyFyle('a:\sub_rosa\plus.');
CopyFyle('a:\sub_rosa\passw.');
CopyFyle('a:\sub_rosa\system.res');
GotoXY(1, 25);
Write('Инсталлировано');
CopyFyle('a:\sub_rosa\sub_rosa.exe');
WriteLn;
WriteLn('Система готова к работе');
ChDir('c:\sub_rosa');
Mem[$40:$1a]:=Mem[$40:$1c];
{Восстановить вектора прерываний}
SetIntVec($23, Save23hInt);
SetIntVec($1b, Save1bhInt);
End.
{***************************************************************************}
{***************************************************************************}
{** **}
{** КП "ЗАЩИТА ДАННЫХ ОТ НСД" **}
{** Выполнил учащийся гр.46491 ЕГАНОВ МАКСИМ **}
{** 1996 **}
{** **}
{** Модуль привязки к BIOS **}
{***************************************************************************}
{***************************************************************************}
Unit SetConf;
Interface
function config: string; {Дата BIOS}
Implementation
{Получить дату BIOS}
function config: string;
var
conf, s: String;
Control: char absolute $F000:$FFF5;
i :byte;
begin
Move(Control, s[1], 8);
s[0] := #8;
for i := 1 to length(s) do conf[i] := chr(ord(s[i]) + 5*i);
conf[0] := #8;
config := conf;
end;
End.
{****************************************************************************}
{****************************************************************************}
{** **}
{** КП "ЗАЩИТА ДАННЫХ ОТ НСД" **}
{** Выполнил учащийся гр.46491 ЮЗЕФОВИЧ АРТЕМ **}
{** 1996 **}
{** **}
{** Дописывание к файлу **}
{****************************************************************************}
{****************************************************************************}
code segment public
assume cs: code, ds: code, es: code, ss: code
org 80h ;Хвост команды
dta label byte
com_siz db ?
probel db ?
com_par db ?
org 100h
start:
jmp test_par
type_t db ? ;Тип расширения target
len_s dw ? ;Длина source_file
len_t_1 dw ? ;Длина target_file
len_t_2 dw ? ;Длина target_file
hand_1 dw ? ;Обработка source_file
hand_2 dw ? ;Обработка target_file
NameTarOff dw ? ;Смещение имени target_file
NameSouOff dw ? ;Смещение имени source_file
ext_a db 'com', 'exe' ;Допустимые расширения
mbad_use db 10, 13
syn db 10, 13
TEST_PAR:
lea si, dta+1 ;Далее идет проверка
l_0: ;параметров в командной
cmp byte ptr [si], 0Dh ;строке
je c_syn
cmp byte ptr [si], '?'
je c_h
cmp byte ptr [si], ' '
jne not_prob
inc si
jmp short l_0
c_syn:
int 20h
c_h:
int 20h
use:
int 20h
not_prob:
mov NameTarOff, si ;1-ый параметр правильный ?
l_1:
cmp byte ptr [si], 0Dh
je c_b_1_m_2
cmp byte ptr [si], ' '
je c_b_1
cmp byte ptr [si], '.'
je d_t_1
inc si
jmp short l_1
c_b_1_m_2:
jmp use ;Недопустимое расширение
c_b_1: ;у target_file
jmp use
D_T_1: ;Анализ расширения
inc si
call det_type
pop ax
mov type_t, al
cmp ax, 2
je C_B_1
add si, 3
lea cx, dta
add cl, byte ptr dta
adc ch, 0
cmp cx, si
jbe C_M_2
mov byte ptr [si], 0
l_2: ;2-ой параметр правильный ?
inc si
cmp cx, si
jb c_m_2
cmp byte ptr [si], ' '
je l_2
mov NameSouOff, si
l_3:
cmp byte ptr [si], '.'
je d_t_2
inc si
cmp cx, si
jb c_b_2
jmp l_3 ;Отсутствует source_file
c_m_2:
jmp use
d_t_2:
inc si
call det_type
pop ax
cmp ax, 0
je test_end
c_b_2:
jmp use
test_end:
add si, 2
cmp cx, si
jb c_b_2
mov byte ptr [si+1], 0
OPEN_F: ;Открыть, определить длину
mov ah, 3dh ;и прочитать в буфер файл
mov al, 2 ;source_file
mov dx, NameSouOff
int 21h
jnc yes_open
int 20h
yes_open: ;Определить длину
mov bx, ax
mov hand_2, ax
mov ah, 42h
xor cx, cx
xor dx, dx
mov al, 2
int 21h
jnc yes_p_1
cn_mov_2:
int 20h
yes_p_1:
mov word ptr len_s, ax
mov ah, 42h
xor cx, cx
xor dx, dx
mov al, 0
int 21h
jc cn_mov_2
mov ah, 3Fh
lea dx, buff
mov cx, word ptr len_s
int 21h
jnc open_targ
int 20h
OPEN_TARG ;Открыть target_file
mov ah, 3Dh
mov al, 2
mov dx, NameTarOff
int 21h
jnc det_len_1
int 20h
det_len_1:
mov hand_1, ax
mov bx, hand_1
mov ah, 42h
xor cx, cx
xor dx, dx
mov al, 2
int 21h
jnc rest_len
jmp cn_mov_1
rest_len:
mov len_t_1, dx
mov len_t_2, ax
TO_PROC: ;Если target_file - COM,
cmp type_t, 0 ;то CALL WR2COM.
je c_com ;Если target_file - EXE,
call wr2exe ;то CALL WR2EXE.
jmp short CLOSE_F
c_com:
call wr2com
CLOSE_F: ;Закрыть файлы
mov ah, 3Eh ;source_file и target_file
mov bx, hand_1
int 21h
jnc cl_2
int 20h
cl_2:
mov ah, 3Eh
mov bx, hand_2
int 21h
jnc OK
int 20h
OK:
mov ah, 9
int 20h
det_type proc ;Подпрограммы
mov bp, sp
push ax
push cx
push di
xor ax, ax
lea di, ext_a
loo_1:
push si
push di
mov cx, 3
repe cmpsb
jne end_loo_1
pop di
pop si
mov [bp+2], ax
jmp d_ret
end_loo_1:
inc al
pop di
add di, 3
pop si
cmp al, 2