47476 (Контроль доступу до вибраних файлів з веденням протоколу)

2016-07-30СтудИзба

Описание файла

Документ из архива "Контроль доступу до вибраних файлів з веденням протоколу", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47476"

Текст из документа "47476"

Міністерство освіти та науки України

Кіровоградський Державний Технічний університет

Кафедра програмного забезпечення

Курсовий проект

з дисципліни “Програмування на мові ASM-86”

на тему:

“Контроль доступу

до вибраних файлів з веденням протоколу"

Зміст

1. Вступ

2. Постановка задачі

3. Обґрунтування вибору методів розв’язку задачі

4. Алгоритм програми

5. Реалізація програми

6. Системні вимоги

7. Інструкція для користувача

Висновки

Використана література

Додаток

Лістинг програми


1. Вступ

У деяких випадках буває необхідно вести протокол роботи комп’ютера. Наприклад, записувати клавіші, які натискаються, записувати імена файлів, до яких звертається користувач. Описана програма дозволяє задати список розширень файлів і заносити у файл час і дату доступу до них.

2. Постановка задачі

Треба написати програму, яка б дозволяла вести протокол доступу до потрібних файлів на диску, використовуючи мову програмування асемблер.

3. Обґрунтування вибору методів розв’язку задачі

Для того, щоб вести контроль доступу до файлів, необхідно “впіймати" момент, в який відбувається доступ. Системний сервіс MS-DOS (переривання 21h) містить кілька функцій, які викликаються для звертання до файлів. Це функції створення, відкриття, закриття, запису та читання з файлів. Існують функції переміщення позиції та вилучання файлів.

При виклику переривання 21h код функції заноситься в регістр AH, і в інші регістри - інша інформація. Якщо перехопити переривання 21h, то перед обробкою можна перевірити, чи є код в регістрі АН кодом відкриття файла. В цьому випадку перед обробкою файла можна занести в інший файл дату, час та назву файла, до якого звертаються.

Для того, щоб не виникло за циклювання (для запису в протокол теж використовується функція відкриття!), перед викликом запису встановлюється прапорець, який вказує, що іде запис протоколу, і протоколювати цей виклик не треба. По завершенні він скидається.


4. Алгоритм програми

Алгоритм основної частини

1. Перевірити наявність програми у пам’яті.

2. Прочитати з файла filelist. dat список розширень файлів.

3. Перехопити вектор переривання 21h

4. Завершитись і залишитись резидентно.

Алгоритм обробника переривання 21h.

1. Перевірити код функції. Якщо це не код 3dh (відкриття файлу), то передати керування стандартному обробнику.

2. Перевірити розширення файла. Якщо воно не співпадає з жодним з заданих, то передати керування стандартному обробнику.

3. Визначити та сформувати в текстовому вигляді дату і час

4. Відкрити файл, перейти на його останню позицію та записати туди ім’я, час та дату.

5. Закрити файл

6. Передати керування стандартному обробнику.

5. Реалізація програми

Програма написана на мові програмування низького рівня Assembler. Її скомпільовано у вигляді COM-файла.

Після початку роботи, згідно алгоритму, відбувається перевірка наявності програми у пам’яті і перехоплення переривання 21h. Після цього програма починає обробку.

Програма містить декілька процедур:

read_extensions-читання розширень з filelist. dat

check_extension - перевірка співпадання розширень

process_file-запис у файл протоколу інформації

new_21h-новий обробник переривання 21h.

Для доступу до файлів використовуються функції переривання 21h. Для отримання часу використовується функція BIOS 1Ah.

6. Системні вимоги

Операційна система MS-DOS (НЕ Windows)

Процесор80286+

Пам’ять640K+

Жорсткий диск 5M+

7. Інструкція для користувача

Спочатку необхідно задати типи файлів, які треба контролювати. У файл filelist. dat необхідно записати розширення імен файлів, які треба контролювати, наприклад:

exe

com

bat

sys

txt

Після цього необхідно, знаходячись в ДОС, запустити програму filelist. doc. Якщо не виникне помилок, то програма завантажиться у пам’ять. Якщо програму вже завантажено, то вона видасть відповідне повідомлення.

Після цього буде створено (якщо немає) файл з протоколом (по змовчанню c: \temp\filelist. log). При спробі відкрити або запустити файл з одним із вказаних розширень у протокол буде занесено ім’я файлу, дату і час події.


Висновки

Отже, за допомогою написаної програми можна записувати у файл імена, дату і час виклику файлів заданого типу. Програма займає мало місця у пам’яті та невибаглива.

Також розглянуто методи побудови резидентних програм і роботу з перериванням 21h.


Використана література

1. П. Абель "Мова асемблера для IBM PC та програмування." М.: Вища школа, 1992.

2. Конспект лекцій з дисципліни “Програмування на мові ASM-86"


Додаток

Лістинг програми

.286

. model tiny

. code

org 100h

start:

jmp begin

old_21h dd 0

flag db 0

log_file db 'c: \temp\filelist. log',0

filename db 200 dup (0)

data_str db '00-00-00 00: 00: 00 - '

eoln db 10,13

extensions db 100*3 dup (0)

fileerror db 'FILELIST. DAT Error! ',10,13,'$'

datname db 'filelist. dat',0

a_load db 'Program is in memory already!!! ',10,13,'$'

check_extension proc

mov di,offset filename-1

di_i:

inc di

mov al,byte ptr [di]

cmp al,0

jne di_i

sub di,3

mov ah,byte ptr [di]

mov bh,byte ptr [di+1]

mov ch,byte ptr [di+2]

mov si,offset extensions

new_name:

mov al,byte ptr [si]

mov bl,byte ptr [si+1]

mov cl,byte ptr [si+2]

cmp al,0

je exit_1

cmp bl,0

je exit_1

cmp cl,0

je exit_1

sub al,ah

sub bl,bh

sub cl,ch

add al,bl

add al,cl

cmp al,0

je exit_2

add si,3

jmp new_name

exit_1:

mov al,0

jmp exit_0

exit_2:

mov al,1

exit_0:

ret

check_extension endp

process_file proc

push es

push ds

pusha

push cs

pop es

; copy filename

mov si,dx

mov di,offset filename

mov cx, 200

rep movsb

push cs

pop ds

; check extension

call check_extension

cmp al,0

jne start_wr

jmp error_p

start_wr:

; open file

mov ah,3dh

mov al,1

mov dx,offset log_file

int 21h

jnc no_er

jmp error_p

no_er:

mov si,ax

; seek eof

mov ah,42h

mov al,2

mov bx,si

xor cx,cx

xor dx,dx

int 21h

mov di,offset data_str

mov ah,4

int 1ah

mov al,cl; year

and al,0fh

add al,30h

mov ah,cl

shr ah,4

add ah,30h

mov byte ptr [di],ah

mov byte ptr [di+1],al

mov al,dh; month

and al,0fh

add al,30h

mov ah,dh

shr ah,4

add ah,30h

mov byte ptr [di+3],ah

mov byte ptr [di+4],al

mov al,dl; day

and al,0fh

add al,30h

mov ah,dl

shr ah,4

add ah,30h

mov byte ptr [di+6],ah

mov byte ptr [di+7],al

mov ah,2

int 1ah

mov al,ch; hour

and al,0fh

add al,30h

mov ah,ch

shr ah,4

add ah,30h

mov byte ptr [di+9],ah

mov byte ptr [di+10],al

mov al,cl; min

and al,0fh

add al,30h

mov ah,cl

shr ah,4

add ah,30h

mov byte ptr [di+12],ah

mov byte ptr [di+13],al

mov al,dh; sec

and al,0fh

add al,30h

mov ah,dh

shr ah,4

add ah,30h

mov byte ptr [di+15],ah

mov byte ptr [di+16],al

; date

mov ah,40h

mov bx,si

mov dx,offset data_str

mov cx,22

int 21h

; write file name

xor cx,cx

mov bx,offset filename

lll:

mov al,byte ptr [bx]

cmp al,0

je st_l

inc cx

inc bx

jmp lll

st_l:; get filename length

mov ah,40h

mov bx,si

mov dx,offset filename

int 21h

; write eoln

mov ah,40h

mov bx,si

mov cx,2

mov dx,offset eoln

int 21h

; close file

mov bx,si

mov ah,3eh

int 21h

error_p:

popa

pop ds

pop es

ret

process_file endp

new_21h:

pushf

cmp ah,3dh

jne no_3d

cmp byte ptr cs: [flag],1

je no_3d

mov ah,2

mov dl,7

int 21h

mov byte ptr cs: [flag],1

call process_file

mov byte ptr cs: [flag],0

no_3d:

popf

jmp dword ptr cs: [old_21h]

rez_end:

buf db 1000 dup (0)

read_extensions proc

mov ah,3dh

mov al,0

mov dx,offset datname

int 21h

jnc all_ok

mov ah,9

mov dx,offset fileerror

int 21h

mov ah,4ch

int 21h

all_ok:

mov si,ax

mov ah,3fh

mov bx,si

mov cx,1000

mov dx,offset buf

int 21h

mov bx,si

mov ah,3eh

int 21h

mov di,offset extensions

mov si,dx

xor cx,cx

mm:

mov al,byte ptr [si]

cmp al,0

je stop_mm

cmp al,61h

jb skip_c

cmp al,7ah

ja skip_c

mov byte ptr [di],al

inc di

inc cx

skip_c:

inc si

cmp cx,290

ja stop_mm

jmp mm

stop_mm:

ret

read_extensions endp

begin:

xor ax,ax

mov es,ax

mov al,byte ptr es: [505h]

cmp al,106

je loaded

mov byte ptr es: [505h],106

push cs

pop es

call read_extensions

mov ah,3dh

xor al,al

mov dx,offset log_file

int 21h

jnc ook

mov ah,3ch

xor cx,cx

mov dx,offset log_file

int 21h

ook:

mov bx,ax

mov ah,3eh

int 21h

xor ax,ax

mov ds,ax

mov ax,word ptr ds: [21h*4]

mov word ptr cs: [old_21h],ax

mov ax,word ptr ds: [21h*4+2]

mov word ptr cs: [old_21h+2],ax

mov ax,offset new_21h

mov word ptr ds: [21h*4],ax

push cs

pop ax

mov word ptr ds: [21h*4+2],ax

mov dx,offset rez_end+1

int 27h

loaded:

mov ah,9

mov dx,offset a_load

int 21h

mov ah,4ch

int 21h

end start

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее