Операционная система MS DOS (том 2)



         

Ограничение доступа при загрузке MS-DOS - часть 5


loop_password:

mov ax,0 int 16h cmp al,'s' jne loop_password

mov ax,0 int 16h cmp al,'y' jne loop_password

mov ax,0 int 16h cmp al,'s' jne loop_password

jmp quit

stop ENDP

END stop

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

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

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

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

удаляет исходные файлы. К сожалению, эти файлы можно легко восстановить, например, утилитой Нортона QU. Для того, чтобы удалить эти файлы окончательно, можно в конце рабочего дня запускать утилиту Нортона WIPEINFO, которая прописывает сектора свободных кластеров нулями (при вызове с соответствующими параметрами).

Для удобства шифрования файлов программой PKZIP

мы подготовили две программы (соответственно, для шифрования и дешифрования).

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

и запускает ее с соответствующими параметрами. Вторая программа выполняет аналогичные действия с программой PKUNZIP, использующейся для дешифрования.

Программа шифрования всех файлов текущего каталога:

#include <stdio.h> #include <conio.h> #include <process.h>

void main(int argc, char *argv[]) { char passw[80], filebuf[80], parms[100], ch;

_searchenv( "pkzip.exe", "PATH", filebuf ); if(!(*filebuf) ) { printf("PKZIP not found.\n"); exit(-2); }

printf( "Enter password: " ); getpw(passw, 80); sprintf(parms,"-m -s%s %s",passw,argv[1]); execl( filebuf, parms, parms, NULL );




Содержание  Назад  Вперед