Защита данных от несанкционированного доступа
mp ax, 5
jl no_disk
fat bufrez ;Запись FAT
pop ds
pop es
db 0cbh ;RetF. Перейти на программу
no_disk: ;Это не ключевая дискета
mov ah, 2
mov bx, 0
pr_ent1:
mov dl, dsk_key[bx] ;Вывод сообщения
sub dl, 10h
int 21h
inc bx
cmp bx, len_enter1
jb pr_ent1
fat bufrez ;Запись FAT
mov ah, 4ch ;Выход в DOS
mov al, 0
int 21h
copyright db 'Copyright(C) Юзефович Артем ( МГВРК,'
db ' Минск ), 1996'
db 0Dh, 0Ah, 'Ключевая'
db ' дискета.', 0Dh, 0Ah
db 0Dh, 0Ah, 0Dh, 0Ah, '$'
code ends
end start
;**************************************************************************
**
;**************************************************************************
**
;**
**
;** КП "ЗАЩИТА ДАННЫХ ОТ НСД"
**
;** Выполнили учащиеся гр.46491 ЕГАНОВ МАКСИМ и ЮЗЕФОВИЧ АРТЕМ
**
;** 1996
**
;**
**
;** Защита винчестера
**
;**************************************************************************
**
;**************************************************************************
**
keybd_flags_1_ equ 417h ;Флаги клавиатуры
data_10e equ 0
seg_a segment byte public
assume cs:seg_a, ds:seg_a
org 100h ;Счетчик команд
Block proc far
start:
jmp real_start
data_1 db 1
data_2 dw 7241h, 6574h
data_4 dw 2E6dh, 2020h
data_6 dw 2020h, 2020h
flag1 db 0
flag2 db 0
flag3 db 0
allf db 0
nameF db 'C:sub_rosablock.com', 0
Block endp
int_09h_entry proc far ;Процедура обработки 09h
push ax ;прерывания
push ds
mov al,cs:allf
xor al,1
mov cs:allf,al
jmp k2
k:
mov cs:allf,1
k2:
in al,60h ;Обращение к порту
клавиатуры
cmp al,32h ;Проверка на нужную
je l1 ;комбинацию
cmp al,08h
je l2
cmp al,1eh
je l3
jmp loc_1
l1:
mov cs:flag1,1
jmp loc_2
l2:
cmp cs:flag1,0
je loc_1
mov cs:flag2,1
jmp loc_2
l3:
cmp cs:flag2,0
je loc_1
mov cs:flag3,1
jmp loc_2
loc_1:
pop ds
pop ax
cmp cs:allf,1
jne r2
mov cs:flag1,0
mov cs:flag2,0
mov cs:flag3,0
r2:
jmp dword ptr cs:data_2
loc_2:
sub ax,ax
mov ds,ax
test byte ptr ds:keybd_flags_1_,8
jz loc_1 ;Alt нажата ?
in al,61h
mov ah,al ;Слудующий код необходим
для
or al,80h ;отработки аппаратного
out 61h,al ;прерывания
xchg ah,al
out 61h,al
mov al,20h ;Послать сигнал "конец
out 20h,al ;прерывания" контроллеру
;прерываний 8259
push bx
mov ah,0Fh
int 10h ;Video display
;ah=functn 0Fh
;get state, al=mode,
bh=page
;ah=columns on screen
cmp cs:flag1,1
jne loc_6
cmp cs:flag2,1
jne loc_6
cmp cs:flag3,1
jne loc_6
cmp al,1
je loc_3 ;Jump if equal
cmp al,3
jne loc_6 ;Jump if not equal
loc_3:
mov ax,0B800h
mov ds,ax ;Установка ключа проверки
mov al,cs:data_1 ;для 13h прерывания
xor al,1
mov cs:data_1,al
test al,1
jz loc_4 ;Jump if zero
mov ax,7458h ;Вывод символа
jmp short loc_5
db 90h
loc_4:
mov ax,744Fh ;Вывод символа
loc_5:
mov cs:flag1,0
mov cs:flag2,0
mov cs:flag3,0
mov ds:data_10e,ax
loc_6:
mov cs:allf,1
pop bx
pop ds
pop ax
iret ;Interrupt return
int_09h_entry endp
int_2Fh_entry proc far ;Mультиплексное
прерывание
cmp ah,13h
je loc_7 ;Jump if equal
jmp dword ptr cs:data_6
loc_7:
mov bx,0F000h
mov es,bx
mov bx,0FFF0h
mov dx,bx
iret ;Interrupt return
int_2Fh_entry endp
sub_1 proc near
sub ax,ax
mov ds,ax
mov ax,[bx+2]
mov es,ax
mov bx,[bx]
mov byte ptr es:[bx],0CFh
retn
sub_1 endp
int_13h_entry proc far ;Процедура обработки 13h
cmp ax,1059h ;прерывания
jne loc_8 ;Jump if not equal
cmp dx,2517h
jne loc_8 ;Jump if not equal
xchg dx,ax
iret ;Interrupt return
int_13h_entry endp
loc_8:
test cs:data_1,1 ;Проверка на ключ
jnz loc_10 ;Jump if not zero
loc_9:
jmp dword ptr cs:data_4 ;Вернуться к 13h
прерыванию
loc_10:
push ax
push bx
push ds
push es
mov bx,4
call sub_1
mov bx,0Ch
call sub_1
pop es
pop ds ;Далее слудуют проверки
pop bx ;функций 13h прерывания
pop ax
cmp ah,3
je loc_11 ;Jump if equal
cmp ah,5
je loc_11 ;Jump if equal
cmp ah,6
je loc_11 ;Jump if equal
cmp ah,7
je loc_11 ;Jump if equal
cmp ah,0Bh
je loc_11 ;Jump if equal
cmp ah,1Ah
jne loc_9 ;Jump if not equal
loc_11:
mov dl,3
jmp short loc_9
real_start:
mov ax,1059h ;Block уже загружен ?
mov dx,2517h
int 13h
cmp ax,2517h
jne loc_12 ;Jump if not equal
cmp dx,1059h
jne loc_12 ;Jump if not equal
mov ax,4C01h ;Выход в DOS
int 21h
loc_12:
mov ax,3509h
int 21h
mov data_2,bx ;Запомнить адрес 09h INT
mov bx,es
mov word ptr data_2+2,bx
mov dx,offset int_09h_entry
mov ax,2509h
int 21h ;Установка нового 09h INT
mov ax,3513h
int 21h
mov data_4,bx ;Запомнить адрес 13h INT
mov bx,es
mov word ptr data_4+2,bx
mov dx,offset int_13h_entry
mov ax,2513h
int
| | скачать работу |
Защита данных от несанкционированного доступа |