Защита данных от несанкционированного доступа
Рефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа

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


Страница: