МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
«ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»
Лабораторна робота №6
«Розмежування доступу до дискового простору вiнчестера.»
Виконав:
ст групи КІТ-14в
Богачов О. С.
.
.
ХАРКІВ 2007
Лабораторна робота №6
Тема: Розмежування доступу до дискового простору вiнчестера.
Мета: cтворення резидентної програми, що обмежує доступ до вiнчестера в залежностi вiд пароля, що читається з дискети.
Постановка задачi: необхiдно розробити i налагодити резидентну програму що обмежує доступ до диску залежно від прочитаної мітки з інженерного циліндру.
1.Індивідуальне завдання:
Чергування: 4, 3, 2, 1, 9, 8, 7, 6, 5
Доріжка: 80
Сторона: 0
Розмір сектору: 512
Запис інформації у сектор #2.
2.Алгоритм програми:
1) Програма при завантаженні з autoexec.bat читає інженерний циліндр дискети;
2) Якщо прочитана мітка – та що дозволяє читання/запис – то завантажуємо резидент та дозволяємо запис/читання секторів вінчестеру;
3) Якщо прочитана мітка – та що дозволяє тільки читання – то завантажуємо резидент та дозволяємо читання секторів вінчестеру;
4) Якщо мітка невірна – то перезавантажуємо комп’ютер;
5) Якщо програма завантажена з ключем /d – то виконується вивантвження резидента з оперативної пам’яті з відновленням перехоплених векторів.
3.Текст програми:
.286
.model tiny
.code
org 100h
start:
jmp realistart
; Diskette Parameter Table
DPT db 0dfh
db 002h
db 025h
db 002h ; код длины сектора (512)
db 08h ; длина дорожки
db 01bh
db 0ffh
db 054h
db 0f6h
db 00fh
db 008h
DPTofs dw ?
DPTseg dw ?
buf db 512 dup (?) ; временный буфер
PasRead db 'Rd','$'
PasRW db 'RdWr','$'
delkey db '/d' ; ключ для выгрузки программы
delmsg db 'Программа выгружена!', 13, 10, '$'
alrmsg db 'Программа уже загружена!', 13, 10, '$'
RWmsg db 'Вы получили права на чтение/запись', 13, 10, '$'
Rmsg db 'Вы получили права на чтение', 13, 10, '$'
nomsg db 'Нет прав ни на чтение, ни на запись!',13, 10, '$'
RW db 0 ; флаг
R db 0 ; флаг
int13o dw ?
int13s dw ?
int21o dw ?
int21s dw ?
here dw 0f63ch
;------------------------------;
; Новая точка входа для int13h ;
;------------------------------;
int13h label byte
; Проверка на работу с винчестером
cmp dl, 80h
jz rightsitest
cmp dl, 81h
jnz old13h
rightsitest:
; Проверка прав доступа
cmp cs:RW, 1
jz old13h
cmp cs:R, 1
jz writest
ritest:
; Проверка на функции чтения
cmp ah, 02h
jz error13h
cmp ah, 42h
jz error13h
writest:
; Проверка на функции записи
cmp ah, 03h ; запись
jz error13h
cmp ah, 43h ; расширенная запись (LBA)
jz error13h
old13h:
; Вызов "старого" обработчика
jmp dword ptr cs:int13o
error13h:
; Установка ошибки
push bp
mov bp, sp
mov ax, [bp + 6]
or ax, 01h
mov [bp + 6], ax
mov ah, 03h
pop bp
iret
;------------------------------;
; Новая точка входа для int21h ;
;------------------------------;
int21h label byte
; Проверка прав доступа
cmp cs:RW, 1
jz old21h
cmp cs:R, 1
jz writefitest
readfitest:
; Проверки на функции "чтения"
cmp ah, 3dh ; открыть файл
jz error21h
cmp ah, 3fh ; читать из файла
jz error21h
writefitest:
; Проверки на функции "записи"
cmp ah, 13h ; удаление файла через FCB
jz error21h
cmp ah, 39h ; создать каталог
jz error21h
cmp ah, 3ah ; удалить каталог
jz error21h
cmp ah, 3ch ; создать файл
jz error21h
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.