Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Защита данных от несанкционированного доступа

 повторов
 count_err equ   3
 buff      label       byte
           db    len_pas dup(?)
 print:
           push  es
           push  ds
           push  cs
           push  cs               ;Адресация регистров
           pop   es
            mov    cx,  count_err                            ;Инициализация
 счетчика
 pr_1:                                                  ;Печать приглашения
           mov   ah, 2
           mov   bx, 0
 pr_ent:
           mov   dl, enter_pas[bx]
           sub   dl, 60h
           int   21h
           inc   bx
           cmp   bx, len_enter
           jb    pr_ent
           push  cx
           mov   cx, len_pas                       ;Ввести пароль
           lea   di, buff
 rd_pass:
           mov   al, 7
           mov   ah, 0Ch
           int   21h
           stosb
           loop  rd_pass
           pop   cx
           mov   bx, 0
 cmp_p:
            mov    al,  password[bx]                   ;Сравнить  пароль  с
 введенным
           sub   al, 60h
           cmp   al, buff[bx]
           jne   repeat
           inc   bx
           cmp   bx, len_pas
           jb    cmp_p
 equal:
           pop   ds                                ;Пароль верный
           pop   es                                     ;Перейти к основной
           db    0CBh                                   ;программе
 repeat:
           loop  pr_1
 dos:
           jmp   cs_1
 ms_1      db    '*', 10, 13, '$'
 cs_1:
           mov   ah, 9                                  ;Пароль не верный
           lea   dx, ms_1
           int   21h                                    ;Вывести сообщение
           mov   ah, 4Ch
           int   21h                                    ;Выйти в DOS
 copyright db          'Copyright(C) Юзефович Артем ( МГВРК,'
                 db         ' Минск ), 1996'
                 db         0Dh, 0Ah, 'Запрос'
                 db         ' пароля.', 0Dh, 0Ah
                 db         0Dh, 0Ah, 0Dh, 0Ah, '$'
 code      ends
 end  start

 {**************************************************************************
 **}
 {**************************************************************************
 **}
 {**
 **}
 {**                          КП      "ЗАЩИТА      ДАННЫХ      ОТ      НСД"
 **}
 {**                 Выполнил    учащийся    гр.46491    ЮЗЕФОВИЧ     АРТЕМ
 **}
 {**                                                                   1996
 **}
 {**
 **}
 {**                                         Ключевая               дискета
 **}
 {**************************************************************************
 **}
 {**************************************************************************
 **}
 code      segment
           assume      cs: code, ds:code, es: code, ss: code
           org   100h       ;Счетчик команд-100h
 start:    jmp   print
 recsize   equ   512                               ;Размер сектора
 buffer    db    recsize dup(?)         ;Буферы ввода-вывода
 bufrez    db    recsize dup(?)
 buffer1   db    recsize dup(?)
 protect         label      byte
           db    'T'+60h,'h'+60h,'i'+60h,'s'+60h
           db    80h, 80h
           db    'i'+60h,'s'+60h
           db    80h, 80h
           db    'k'+60h,'e'+60h,'y'+60h
           db    80h, 80h
           db    'd'+60h,'i'+60h,'s'+60h,'k'+60h
 len_enter2 equ  $-protect              ;Длина сообщения

 dsk_key   label       byte
           db    'Э'+10h,'т'+10h,'о'+10h
           db    30h, 30h
           db    'н'+10h,'е'+10h
           db    30h, 30h
           db    'к'+10h,'л'+10h,'ю'+10h,'ч'+10h
           db    'е'+10h,'в'+10h,'а'+10h,'я'+10h
           db    30h, 30h
           db    'д'+10h,'и'+10h,'с'+10h,'к'+10h
           db    'е'+10h,'т'+10h,'а'+10h
           db    6Ah-50h, 6Dh-50h
 len_enter1 equ  $-dsk_key        ;Длина сообщения

 enter_pas label       byte
           db    'В'+10h, 30h,'с'+10h, 30h,'т'+10h, 30h,'а'+10h, 30h
           db    'в'+10h, 30h, 'ь'+10h, 30h, 'т'+10h, 30h, 'е'+10h, 30h
           db    30h, 30h, 30h
           db    'к'+10h, 30h,'л'+10h, 30h,'ю'+10h, 30h,'ч'+10h, 30h
           db    'е'+10h, 30h,'в'+10h, 30h,'у'+10h, 30h,'ю'+10h, 30h
           db    30h, 30h, 30h
           db    'д'+10h, 30h,'и'+10h, 30h,'с'+10h, 30h,'к'+10h, 30h
           db    'е'+10h, 30h,'т'+10h, 30h,'у'+10h, 30h
           db    30h, 30h, 30h
           db    'и'+10h
           db    30h, 30h, 30h
           db    'н'+10h, 30h,'а'+10h, 30h,'ж'+10h, 30h,'м'+10h, 30h
           db    'и'+10h, 30h,'т'+10h, 30h,'е'+10h, 30h
           db    30h, 30h
           db    'В'+10h, 'В'+10h, 'О'+10h, 'Д'+10h
           db    6Ah-50h, 6Dh-50h
 len_enter  equ  $-enter_pas      ;Длина сообщения
 print:
           push  es                          ;Сохранение регистров
           push  ds
           push  cs
           push  cs
           pop   ds                          ;cs=>ds
           pop   es                          ;cs=>es

           mov   ah, 2
           mov   bx, 0
 pr_ent:
           mov   dl, enter_pas[bx] ;Вывод сообщения
           sub   dl, 10h
           int   21h
           inc   bx
           cmp   bx, len_enter
           jb    pr_ent
           mov   ah, 08h                ;Ожидание нажатия Ввода
           int   21h
           mov   al, 0
           mov   cx, 1
           mov   dx, 1
           mov   bx, offset buffer
           int   25h        ; считали FAT
           pop   dx                          ;25h и 26h оставляют лишнее
           mov   al, 0                       ;слово в стеке, извлекаем его
           mov   cx, 1
           mov   dx, 1
           mov   bx, offset bufrez      ;Сохраняем резервную копию
           int   25h                         ;FAT
           pop   dx
           mov   bx, offset buffer      ;Процедура,которая определяет
           mov   ax, 118                     ;запись FAT по номеру сектора
           mov   cx, ax
           shl   ax, 1
           add   ax, cx
           test  ax, 1
           pushf
           shr   ax, 1
           add   bx, ax
           mov   ax, [bx]
           popf
           jnz   getFAT11
           and   ax, 0FFFh
           jmp   getFAT21

 getFAT11:
           shr   ax, 4
 getFAT21:
           cmp   ax, 0ff7h        ;1-ая проверка. BAD-?
           jne   no_disk1               ;НЕТ

           mov   bx, offset buffer      ;ДА
           mov   ax, 120
           mov   cx, ax
           shl   ax, 1
           add   ax, cx
           test  ax, 1
           pushf
           shr   ax, 1
           add   bx, ax
           mov   ax, [bx]
           popf
           jnz   getFAT111
           and   ax, 0FFFh
           jmp   getFAT212
 getFAT111:
           shr   ax, 4
 getFAT212:
           cmp   ax, 0ff7h        ;2-ая проверка. BAD-?
           jne   no_disk1               ;НЕТ
           jmp   f1
 no_disk1:
                 jmp   no_disk
 f1:

 good       macro        x,   y                          ;Макроопределение,
 которое
           mov   bx, offset buffer      ;помечает сектор, как
           mov   ax, x                       ;свободный(занятый, плохой)
           mov   cx, ax
           shl   ax, 1
           add   ax, cx
           test  ax, 1
           pushf
           shr   ax, 1
           add   bx, ax
           popf
           mov   ax, y
           mov   [bx], ax
      endm

      good       118, 0h                ;Пометить, как свободный
           good  120, 0h                    ;Пометить, как свободный

 fat  macro      b
           mov   al, 0
           mov   cx, 1
           mov   dx, 1
           mov   bx, offset b
           int   26h                         ;Записали 1-ую копию FAT
           pop   dx
      endm

           fat   buffer                      ;Запись FAT
           mov   al, 0
           mov   cx, 1
           mov   dx, 248
           mov   bx, offset buffer1
           int   25h                         ;Считываем сектор
           pop   dx

           mov   bx, 0
           mov   ax, 0
 pr_ent2:
           mov   dh, protect[bx]        ;3-яя проверка. Проверяется
           cmp   buffer1[bx], dh        ;наличие на диске
           jne   g1                          ;закодированной информации
           jmp   g2
 g1:
           inc   ax
 g2:
           inc   bx
           cmp   bx, len_enter2
           jb    pr_ent2
           cmp   ax, 0
           jne   no_disk
           mov   al, 0
           mov   cx, 1
           mov   dx, 244
           mov   bx, offset buffer
           int   26h                    ;Попытка записи на сектор
           pop   dx

           mov   al, 0
           mov   cx, 1
           mov   dx, 244
           mov   bx, offset buffer1
           int   25h                    ;Попытка чтения с сектора
           pop   dx

           cld                                          ;df=0
           lea   si, buffer
           lea   di, buffer1
           mov   cx, 512
           mov   ax, 0
 l:
           cmpsb                                   ;Сравнение записанной и
           jne   l1                          ;считаной информации
           jmp   l2
 l1:  inc  ax
 l2:  loop       l
           c
Пред.111213
скачать работу

Защита данных от несанкционированного доступа

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ