Программа паролирования директорий

Разработка программы защиты на языке ассемблера от несанкционированного доступа к директориям на гибких дисках для работы в операционной системе MS DOS. Выбор метода решения задачи. Проектирование функциональных частей. Тестирование результатов.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 08.06.2012
Размер файла 35,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Программа паролирования директорий

Введение

Проблема обеспечения защиты информации является одной из важнейших при построении надежной информационной структуры на базе ЭВМ. Эта проблема охватывает как физическую защиту данных и системных программ, так и защиту от несанкционированного доступа к данным, передаваемым по линиям связи и находящимся на накопителях, являющегося результатом деятельности как посторонних лиц, так и специальных программ-вирусов. Таким образом, в понятие защиты данных включаются вопросы сохранения целостности данных и управления доступа к данным (санкционированность). Проблема обеспечения санкционированности использования данных является неоднозначной, но в основном охватывает вопросы защиты данных от нежелательной модификации или уничтожения, а также от несанкционированного их чтения. Можно выделить три обобщенных механизма управления доступа к данным: идентификация пользователя, физическая защита данных и поддержка прав доступа пользователя к данным с возможностью их передачи.

Согласно методу защиты при помощи паролей, реализуемому программными средствами, запрещается доступ к информации до тех пор, пока не будет введен пароль. Пароль держится пользователем в тайне и периодически меняется, чтобы предотвратить несанкционированное его использование. Метод паролей является самым простым и дешевым, однако не обеспечивает надежной защиты. Используя метод проб и ошибок, с помощью ЭВМ становится возможным за небольшое время раскрыть действующий пароль и получить доступ к данным. Более того, основная уязвимость метода паролей заключается в том, что пользователи зачастую выбирают очень простые и легкие для запоминания пароли, которые не меняются длительное время. Несмотря на указанные недостатки, применение метода паролей во многих случаях следует считать рациональным даже при наличии других аппаратных и программных методов защиты.

1. Анализ технического задания

В данном курсовом проекте следует разработать программу защиты от несанкционированного доступа к директориям, расположенным на гибких дисках. Разрабатываемая программа должна быть предназначена для работы в операционной системе DOS.

Программа должна обеспечивать выбор директории, к которой небходимо запретить доступ, и запрашивать ввод пароля при каждом обращении к данной директории до тех пор, пока пароль не будет введен верно.

Это должен быть резидент с возможностью выгрузки и защитой от повторной загрузки.

Для того, чтобы запретить доступ к директории, необходимо запретить чтение секторов, в которых расположен подкаталог, относящийся к данной директории. Поиск секторов осуществляется через файловую таблицу. Данный проект рассчитан на файловую систему FAT12, т.к. она используется в большинстве гибких дисков.

Для запрета чтения директории необходимо осуществить перехват прерывания чтения с диска 13h и проверить, произошла ли попытка чтения запрещенного сектора. Если такая попытка произошла, то запросить пароль. Если пароль введен верно, то управление возвращается старому вектору прерывания, иначе происходит выход из обработчика прерывания.

2. Выбор метода решения задачи

Поверхность диска разделена на ряд концентрических колец, называемых дорожками, а дорожки делятся радиально на сектора. Для дискет первый сектор (дорожка 0, сектор 1) содержит запись начальной загрузки, которая является небольшой программой, позволяющей компьютеру считать с дискового накопителя остальные части MS DOS. Затем идут две копии таблицы размещения файлов. Затем идет корневой каталог, который содержит список файлов и ссылок на подкаталоги, а также указывает в каком месте диска они начинаются. Далее идут две небольшие программы DOS IBMBIO.COM и IBMDOS.COM, которые считываются при старте и обеспечивают компьютер возможностями необходимыми для нахождения и загрузки файла COMMAND.COM.

Корневой сектор гибкого диска имеет формат, отраженный в Таблице 2.1.

Таблица 2.1. Корневой сектор

Смещ.

Длина

Содержимое

+0

3

JMP xx xx

NEAR-переход на код загрузки

+3

8

'I' 'B' 'M' '3' '.' '2'

OEM-имя компании и версия

+0bH

2

SectSiz

байт на сектор

+0dH

1

ClustSiz

секторов на единицу распределения (кластер)

+0eH

2

ResSecs

резервных секторов (секторов перед первой FAT)

+10H

1

FatCnt

число таблиц FAT

+11H

2

RootSiz

макс. число 32-байтовых элементов корневого оглавления

+13H

2

TotSecs

общее число секторов на носителе (раздел DOS)

+15H

1

Media

дескриптор носителя (то же, что 1-й байт FAT)

+16H

2

FatSize

число секторов в одной FAT

+18H

2

TrkSecs

секторов на дорожку (цилиндр)

+1aH

2

HeadCnt

число головок чтения / записи (поверхностей)

+1bH

2

HidnSec

спрятанных секторов (исп. в схемах разделения)

1eH

размер форматированной порции корневого сектора начало кода и данных загрузки

Чтобы получить абсолютный номер сектора из номера кластера (из поля Clustno в элементе оглавления или в цепи FAT), нужно прочитать корневой сектор и применить следующие формулы:

корневых_секторов = (RootSiz * 32) / SectSiz

начало_данных = ResSecs + (FatSize * FatCnt) + корневых_секторов

абс_сектор = начало_данных + ((cluster_no - 2) * ClustSiz)

Диск использует таблицу размещения файлов (FAT) для отведения дискового пространства файлам и хранения информации о свободных секторах. Из соображений безопасности на всех дисках хранятся две копии FAT. Они хранятся последовательно, в секторах с самыми младшими доступными логическими номерами, начиная со стороны 0, дорожки 0, сектора 2 (сектор 1 также занят записью начальной загрузки). Число секторов, занимаемых FAT определяется размером и типом диска. Таблица размещения файлов хранит информацию о каждом кластере секторов на диске. Кластер - это группа стандартных секторов размером 512 байт (независимо от типа диска MS DOS всегда работает с 512-байтными секторами). Группа секторов используется, чтобы уменьшить размер FAT. Каждая позиция в таблице размещения файлов соответствует определенной позиции кластера на диске. Обычно файл занимает несколько кластеров и запись в каталоге файлов содержит номер стартового кластера, в котором записано начало файла. Просмотрев позицию FAT, соответствующую первому кластеру, DOS находит номер кластера, в котором хранится следующая порция этого файла. Этому кластеру соответствует своя запись в FAT, которая в свою очередь содержит номер следующего кластера в цепочке. Для последнего кластера, занятого файлом FAT содержит значения от FF8H до FFFH. Неиспользуемым (или освобожденным) кластерам записывается значение 000, а плохим секторам - FF7H. Значения от FF0H до FF7H приписываются резервным кластерам.

Номер кластера содержит 3 шестнадцатеричные цифры, для хранения которых требуется 1 1/2 байта. Для уменьшения размеров FAT числа для двух соседних кластеров хранятся в трех последовательных байтах таблицы.

При прямом доступе к FAT12 надо соблюдать определенные правила. Для нахождения следующего кластера файла надо:

1) умножить номер кластера на 1.5;

2) прочитать 2 байта с полученным смещением (округляя вниз);

3) если номер кластера четный, то взять младшие 12 бит, иначе взять старшие 12 бит.

Для преобразования номера кластера в логический номер сектора необходимо:

1) вычесть 2 из номера кластера;

2) умножить результат на число секторов в кластере.

Каждый диск имеет один корневой каталог, с которого начинается поиск всех остальных каталогов. Корневой каталог может содержать элементы, указывающие на подкаталоги, которые в свою очередь могут содержать ссылки на другие подкаталоги, образуя древовидную структуру каталогов. Корневой каталог всегда расположен в определенных секторах диска; подкаталоги хранятся как обычные дисковые файлы, поэтому они могут быть расположены в любом месте диска. Каталоги могут иметь различные размеры, в зависимости от размера диска. Как корневой каталог, так и подкаталоги, используют 32 байта для хранения информации об одном файле, независимо от типа диска. Таким образом в каждом секторе может храниться информация о 16-ти элементах каталога. Значения байтов 32-байтовых полей показаны в Таблице 2.2.

Таблица 2.2. Содержание полей элементов каталога

Байты

Содержание

0-7

Имя файла

8-10

Расширение файла

11

Атрибут файла

12-21

Зарезервировано

22-23

Время последнего доступа к файлу

24-25

Дата последнего доступа к файлу

26-27

Начальный кластер

28-31

Размер файла

Точка между именем файла и его 3-байтным расширением не хранится. Все поля выровнены на левую границу, а пустые байты заполняются пробелами. Атрибут файла определяет является ли файл спрятанным, защищенным от записи и т.д. Он определяет также специальные элементы каталога, такие как подкаталоги или метка тома.

DOS использует шесть различных атрибутов файлов, которые дают данному файлу определенный статус. Файл может иметь несколько из этих атрибутов одновременно (но не все). Атрибуты устанавливаются 12-м байтом 32-байтного элемента каталога. Младшие шесть битов имеют значение, а остальные должны быть равны нулю (см. Таблицу 2.3).

Таблица 2.3. Значения битов атрибута файла

Установленные биты

Значение

5

файл был изменен со времени последней архивации

4

файл является подкаталогом

3

этот элемент является не файлом, а меткой тома

2

файл является «системным»

1

файл спрятан при поиске по каталогу

0

файл объявлен только для чтения

Чтение или запись определенных секторов диска в основном используется при доступе к каталогам диска или его таблице размещения файлов, сектора для которых всегда расположены в одном и том же месте. Как DOS так и BIOS предоставляют функции для чтения и записи определенных секторов. Однако они указывают сектора по-разному.

Процедура BIOS требует информации о номере стороны (0 или 1), номере дорожки и номере сектора. Функции DOS указывают сектор одним номером, который называется логическим номером сектора. Начиная с наружного обода диска, секторам присваиваются последовательно возрастающие номера. Этот метод может быть использован для дисков произвольного размера и типа. Отсчет логических секторов начинается со стороны 0 дорожки 0 сектора 1 и продолжается на стороне 1 с дорожки 0, после чего переходит на сторону 0 дорожку 1 и т.д.

В зависимости от того как был форматирован диск, при переходе на следующую дорожку логический номер сектора увеличивается на определенную величину. BIOS использует функцию 2 прерывания 13H для чтения секторов и функцию 3 прерывания 13H для записи секторов. В обоих случаях DL должен содержать номер накопителя от 0 до 3, где 0 = A, 1 = B и т.д., DH - номер головки (стороны), 0-1. CH должен содержать номер дорожки от 0 до 39, а CL - номер сектора от 0 до 8. AL содержит число секторов, которое необходимо считать. Допускается сразу читать не более восьми секторов. ES:BX должны указывать на начало буфера в памяти, куда будут помещаться данные или откуда они будут браться. При возврате AL будет содержать число прочитанных или записанных секторов. Если операция успешна, то флаг переноса будет равен нулю.

Прерывания DOS 25H и 26H читают и записывают абсолютные сектора диска, соответственно. Надо поместить логический номер стартового сектора в DX, а DS:BX должны указывать на буфер. CX содержит число секторов для чтения или записи, а AL - номер накопителя, где 0 = A, 1 = B и т.д. Процедуры портят все регистры, кроме сегментных. При возврате регистр флагов остается на стеке, оставляя стек невыровненным.

Если при возврате флаг переноса равен 1, то произошла ошибка и в этом случае AH и AL содержат два отдельных байта статуса ошибки.

Для нахождения секторов, в которых расположен выбранный подкаталог необходимо:

- прочитать корневой сектор и определить параметры гибкого диска;

- определить начало корневого сектора по формуле:

корневой_сектор=резервных_секторов+(Секторов_FAT*колич._FAT);

- найти в корневом секторе запись подкаталога и прочитать начальный кластер;

- найти в FAT значения остальных кластеров подкаталога и перевести их в сектора диска;

- перейти к найденным секторам и продолжить поиск в подкаталогах, если необходимо.

3. Проектирование функциональных частей

Программа состоит из двух частей:

1) транзитная;

2) резидентная;

В транзитной части осуществляется:

анализ командной строки;

загрузка резидента;

проверка на наличие резидента в памяти;

выгрузка резидента;

поиск запрещенных секторов подкаталога и ввод пароля;

Резидентная часть отвечает за:

перехват прерывания 2fh

перехват прерывания обращения к диску 13h;

проверку, является ли сектор, к которому произошло обращение «запрещенным»;

запрос и проверка правильности введенного пароля.

Транзитная часть

Транзитная часть - это часть программы, не требующая постоянного нахождения в памяти. Она должна содержать начальную обработку введенных пути к файлу и пароля, обеспечить поиск секторов диска, в которых находится подкаталог, а также загрузку и выгрузку резидента.

При загрузки программы, сначала идет анализ ключей командной строки, затем, в зависимости от ключа идет процесс загрузки или выгрузки резидента.

Перед загрузкой резидента необходимо определить, в каких секторах находится подкаталог:

прочитать корневой сектор и вычислить сектор начала данных и таблицы FAT, а также определить параметры диска;

- найти в корневом каталоге запись первого подкаталога;

- прочитать номер начального кластера;

по таблице FAT найти остальные кластеры данного подкаталога;

перевести их в номера секторов на диске;

перейти в следующий подкаталог (т.е. прочитать первый сектор из полученного списка секторов), если он указан в пути, и продолжить поиск;

загрузить резидент.

Анализ командной строки состоит в определении наличия и правильности введенных ключей.

Командная строка находится в PSP по смещению 80h. Первый байт содержит размер командной строки. Если он равен 0, то в программе осуществляется переход к попытке чтения параметров дискеты.

Чтение корневого сектора осуществляется прерыванием DOS 25h. В процессе чтения корневого сектора дискеты могут возникнуть ошибки. Если после выполнения прерывания флаг CF =1, то в процессе чтения произошла ошибка и надо вывести сообщение об ошибке чтения дискеты и прекратить дальнейшую работу программы.

После чтения корневого сектора производится разбор параметров дискеты. Для проведения дальнейших вычислений необходимо прочитать:

размер одного сектора (по смещению +0bh);

количество секторов на кластер(+0dh);

- количество зарезервированных секторов перед FAT(+0eh)

- число таблиц FAT(+10h);

- максимальное число элементов корневого оглавления(+11h);

- число секторов в одной FAT (+16h).

Тогда корневой каталог будет начинаться с сектора:

корневой_каталог=резервных_секторов+секторов_в_FAT*колич._FAT

Читаем FAT в память, используя прерывание 25h (в процессе чтения может возникнуть ошибка).

Далее осуществляется ввод пути к директории, который необходимо разбить на имена подкаталогов. Сначала проверяем букву диска: если А - значит директория находится на дискете, иначе выдается сообщение о неверно введенном пути. Далее необходимо последовательно найти записи, соответствующие директориям, указанным в пути. Схема нахождения будет следующей:

1) считываем символы из буфера с введенным путем до тех пор, пока не встретится символ `\' или перевод строки 0dh (в этом случае операция выполняется последний раз);

2) Читаем сектор корневого каталога (или подкаталога);

3) последовательно сравниваем выбранное имя директории с записями в корневом каталоге (или в подкаталоге);

4) если записи с данным именем нет, повторяем операцию с п. 2 до тех пор, пока не закончатся сектора каталога (или подкаталога) или не будет найдена нужная запись;

5) Если запись найдена - проверяем атрибут файла (если 4 бит в байте атрибута записи=1, значит это подкаталог). Если файл не является подкаталогом - продолжаем поиск (п. 3). Если запись не найдена, выводим сообщение о неверно введенном пути и завершаем программу;

6) Если файл является подкаталогом - находим в записи значение начального кластера. Переводим его в сектор на диске по формуле:

сектор=кластер-2+начало_данных.

Записываем полученный сектор в буфер, хранящий номера секторов, относящихся к подкаталогу;

7) В таблице FAT надо найти остальные сектора подкаталога: умножить номер кластера на 1.5, прочитать слово по полученному смещению, если номер кластера четный - выделить младшие 12 бит, иначе выделить старшие 12 бит. Результат будет следующим кластером в цепочке (переводим его в сектор и записываем в буфер). Поиск продолжать пока результат не будет равен 0ff8h-0fffh - это конец цепочки кластеров.

8) Если имя директории не было последним - повторяем пункты 1-8.

Если имя было последним, то данный буфер будет содержать список секторов, к которым надо запретить доступ. Этот буфер должен быть доступен в резидентной части.

Далее следует ввод пользователем пароля. Введенный пароль сохраняется в буфере для дальнейшего сравнения и должен быть доступен в резидентной части.

Далее следует загрузка резидента. Для этого нужно получить и сохранить сегмент и смещение старого вектора прерывания (пользуясь функцией 35h прерывания 21h) и установить вместо него сегмент и смещение нового вектора прерывания (пользуясь функцией 25h прерывания 21h). В резидентной части находятся обработчики прерываний 13h и 2fh. Затем надо освободить память, занятую под окружение DOS и завершить программу, оставляя резидент в памяти.

Если длина командной строки при запуске программы не равна 0, то необходимо проверить правильность введенного ключа. В программе предусмотрен только один ключ /u для выгрузки резидента. При обнаружении ключей, отличных от /u выдается сообщение о неверно введенном ключе и программа завершается.

Если ключ введен верно, идет проверка на наличие резидента в памяти.

Проверка осуществляется с помощью прерывания 2fh. Для этого надо использовать подфункцию определения статуса установки процесса и указать установленный нами процесс 0EEh. Если функция возвращает установленное нами ранее значение (слово `da' в ax), то резидент находится в памяти. Также необходимо определить, возможна ли выгрузка данного резидента. Используя функцию 35h прерывания 21h, получить сегмент и смещение вектора в текущий момент и сравнить его со значением сегмента и смещения переопределенного нами вектора, которые получить подфункцией 01 прерывания 2fh (ax и cx - смещения векторов прерываний в данный момент, es - сегмент вектора прерывания в данный момент). Если вектора не совпадают - надо вывести сообщение о том, что выгрузка резидента невозможна и завершить программу.

Для выгрузки резидента надо получить адреса старых векторов прерывания с помощью подфункции 02 прерывания 2fh процесса 0EEh и установить их вместо текущих. Затем освободить память, занимаемую резидентом функцией 49h прерывания 21h.

Резидентная часть

Резидентная часть должна содержать обработчики прерываний 13h и 2fh.

Обработчик прерывания 2fh проверяет, был ли вызван созданный нами процесс(0EEh) и в соответствии с номером вызванной подфункции (00, 01, 02), устанавливает статус процесса, возвращает вектора переопределенных нами прерываний или старые вектора прерываний.

В обработчике прерывания 2fh сначала идет проверка, было ли выполнено прерывание в данной программе. Если нет, то управление возвращается старому обработчику прерывания. Далее идет проверка номера подфункции, которая использовалась при вызове:

1) Если 00h - в ax заносится `da';

2) Если 01h - в es заносится значение текущего сегмента, а в cx и ax - смещения текущих векторов прерываний 13h и 2fh;

3) Если 02h - в bx заносится смещение старого вектора прерывания 13 h;

Обработчик прерывания 13h проверяет, произошло ли обращение к гибкому диску, переводит номер сектора, к которому произошло обращение в абсолютный номер сектора, проверяет, есть ли данный сектор в списке «запрещенных» секторов, затем запрашивает пароль и проверяет правильность введенного пароля.

В обработчике прерывания 13h сначала идет проверка, было ли обращение к дискете, и если нет - управление возвращается старому обработчику.

Далее надо определить номер сектора, головки и цилиндра, к которым произошло обращение. При выполнении функций чтения и записи прерывания 13h dh содержит номер головки, cx - номер цилиндра и сектора (младшие 6 бит содержат номер сектора, а старшие 10 - номер цилиндра). Т.к. список секторов, защищенных от записи представлен в форме абсолютных секторов, необходимо перевести номер сектора из формы головка / цилиндр / сектор в форму записи абсолютного сектора (Для перевода воспользуемся формулой:

абсолютный_сектор = (дорожка х 9) + (сектор - 1)).

Далее идет проверка, находится ли данный сектор в списке защищенных секторов: номер сектора сравнивается с номерами секторов из списка защищенных. Если обращение было не к защищенному сектору, управление передается старому обработчику прерывания.

Дальше проверяем, был ли уже введен верный пароль. Для этого используем переменную - ключ (если 1 - то пароль уже был введен и управление передается старому обработчику). Затем пользователь вводит пароль и идет проверка на правильность введенного пароля. Пароль сравнивается с паролем, полученным при запуске программы. Если они совпадают - заносим в ключ значение 1 и управление передается старому обработчику. Если пароли не совпадают - выдается сообщение о неверно введенном пароле и происходит выход из прерывания.

4. Разработка программы

Программа будет написана на языке Ассемблера.

DOS задумывалась как однозадачная операционная система, поэтому пока любая программа не вышла из обработчика прерывания, например, INT 21h, никакая другая не может его вызвать. Поэтому нельзя вызывать функции DOS из обработчиков прерываний. Поэтому в обработчиках прерываний мы будем использовать функции BIOS.

Данные и код резидентной части должны располагаться рядом. Поэтому код программы будет написан для COM-файла. Для экономии памяти резидентная часть будет расположена в начале программы. Переход к транзитной части осуществляется командой jmp.

Для хранения старых векторов прерываний предусмотрены две переменные длиной в двойное слово - OLD_2Fh И OLD_13h.

Переход на старый вектор прерывания осуществляется командой:

jmp dword ptr cs: [OLD_13h]

При выходе резидентом (функция 31h) количество параграфов, оставляемых в памяти подсчитывается следующим образом:

(OFFSET trans - OFFSET START+100h)/16+1, где START - точка входа (начало программы), а trans - место начала транзитной части.

программа защита директория паролирование

5. Тестирование и анализ результатов

Разработка тестовых примеров

Тестирование проводится с использованием утилиты mem.exe:

1. запустить программу при отсутствии дискеты в дисководе.

Ожидаемый результат: выдача сообщения об ошибке чтения диска. Резидент не запущен.

2. Запустить программу с неверным ключом.

Ожидаемый результат: выдача сообщения о неверном ключе. Резидент не запущен.

3. Запустить программу с ключом /u.

Ожидаемый результат: выдача сообщения об ошибке выгрузки, т.к. программа не загружена.

4. Запустить программу без ключей. Ввести путь к несуществующей директории.

Ожидаемый результат: Запрос на ввод пути к файлу.

Если директории не существует - сообщение о неверно введенном пути.

5. Поместить в тестируемую директорию программу (например mem.exe).Запустить программу без ключей. Ввести путь к тестируемой директории.

Ожидаемый результат: Запрос на ввод пути к файлу. Если путь введен верно - запрос на ввод пароля. Выдача сообщения об успешной загрузке.

6. В командной строке набрать команду для запуска утилиты mem.exe.

Ожидаемый результат: Запрос на ввод пароля.

Ввести неверный пароль.

Ожидаемый результат: Вывод сообщения о неверно введенном пароле. Утилита не запущена.

7. Запустить программу без ключей.

Ожидаемый результат: Выдача сообщения о том, что программа уже загружена. Повторной загрузки не происходит.

8. В командной строке набрать команду для запуска утилиты mem.exe.

Ожидаемый результат: Запрос на ввод пароля.

Ввести верный пароль.

Ожидаемый результат: Запуск программы mem.exe.

9. В командной строке набрать команду для запуска утилиты mem.exe.

Ожидаемый результат: Запуск программы mem.exe без запроса пароля.

10. Запустить программу с ключом /u.

Ожидаемый результат: Вывод сообщения о том, что резидент выгружен.

11. Запустить программу mem.exe.

Ожидаемый результат: запуск программы mem.exe.

Тестирование программы

1. запустить программу при отсутствии дискеты в дисководе.

C:\prog1

Cannot read the disk!

2. Запустить программу с неверным ключом.

C:\prog1 /j

Wrong key. Use the key /u to unload the resident.

3. Запустить программу с ключом /u.

C:\prog1 /u

Unable to unload - the program is not loaded.

4. Запустить программу без ключей. Ввести путь к несуществующей директории.

C:\prog1

Enter way to dir: a:\RES

Wrong way.

5. Запустить программу без ключей. Ввести путь к тестируемой директории.

C:\prog1

Enter way to dir: a:\QWER

Enter password (10 symb): ***** (asdfg)

Loaded.OK.

6. В командной строке набрать команду для запуска утилиты mem.exe.

A:\qwer\mem

Enter password (10 symb): *** (qwe)

WRONG PASSWORD!

7. Запустить программу без ключей.

C:\prog1

The program is already loaded.

8. В командной строке набрать команду для запуска утилиты mem.exe.

A:\qwer\mem

Enter password (10 symb): ***** (asdfg)

Успешный запуск программы mem.exe.

9. В командной строке набрать команду для запуска утилиты mem.exe.

A:\qwer\mem

Успешный запуск программы mem.exe.

10. Запустить программу с ключом /u.

C:\prog1 /u

Unloaded. Ok.

11. Запустить программу mem.exe.

A:\qwer\mem

Успешный запуск программы mem.exe.

Из результатов тестирования видно, что в программе реализованы все условия задания.

Заключение

В результате проделанной работы был разработан алгоритм и написана программа, которая защищает паролем директории на гибком диске. Программа перехватывает прерывания 13h И 2fh, но не предотвращает выполнение прерываний DOS при обращении к директории с паролем. В программе не реализован перехват прерываний DOS 25h и 26h, т.к. они редко используются.

Программа предназначена для работы в операционной системе DOS с гибкими дисками с файловой системой FAT12.

Программа может быть улучшена путем добавления обработчиков прерываний 25h и 26h, добавления возможности работы с жесткими дисками и файловыми системами FAT16 и FAT32.

Список литературы

1. Дэвид Дж. Брэдли. Программирование на языке ассемблера для IBM PC.

2. Питер Абель. Ассемблер и программирование для IBM PC.

Размещено на Allbest.ru


Подобные документы

  • Общая характеристика возможностей языка программирования C++ Win32 Api. Выбор метода решения задачи по созданию простого графического редактора. Описание проектирования функциональных частей, разработки программы. Тестирование и анализ результатов.

    курсовая работа [388,5 K], добавлен 24.01.2016

  • Использование средств статического и динамического анализа программ. Принципы работы компилятора при генерации кода на примере MS Visual Studio 2003 (C++). Взлом защиты от несанкционированного доступа предоставленной программы разными способами.

    контрольная работа [4,2 M], добавлен 29.06.2010

  • Разработка программного обеспечения, моделирующего работу банкомата. Особенности области применения терминала и выделение главных функциональных частей. Разработка алгоритма работы программы и реализация системы. Ее тестирование и анализ результатов.

    курсовая работа [5,5 M], добавлен 12.10.2011

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

  • Графическое изображение последовательности технологического процесса. Описание метода решения задачи на математическом языке. Общий алгоритм решения задачи и структура программы. Основные понятия сетевых моделей. Разработка программы на языке С++.

    курсовая работа [1,3 M], добавлен 23.05.2013

  • Проблема скрытия и защиты информации от несанкционированного использования. История создания шифра. Решения задачи шифрования текста и кодирования данных. Тестирование полученного приложения и анализ работы программы с точки зрения пользователя.

    курсовая работа [3,0 M], добавлен 24.11.2013

  • Характеристика основных способов защиты от несанкционированного доступа. Разработка политики безопасности системы. Проектирование программного обеспечения применения некоторых средств защиты информации в ОС. Содержание основных разделов реестра.

    лабораторная работа [1,9 M], добавлен 17.03.2017

  • Основы биометрической идентификации. Возможность использования нейросетей для построения системы распознавания речи. Разработка программного обеспечения для защиты от несанкционированного доступа на основе спектрального анализа голоса пользователя.

    дипломная работа [2,8 M], добавлен 10.11.2013

  • Постановка задачи и математическое описание ее решения. Назначение программного обеспечения. Описание принятых идентификаторов. Выбор языка программирования и написание программы на входном языке. Методика отладки программы и проведение ее тестирования.

    курсовая работа [96,1 K], добавлен 25.06.2013

  • Защита от несанкционированного доступа. Классификация автоматизированных систем и требования по защите информации. Средство защиты информации от несанкционированного доступа Secret Net 6.0. Разработка интерфейсной части программы, целевых функций.

    дипломная работа [1,2 M], добавлен 20.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.