МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Защита данных от несанкционированного доступа

    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

    cmp ax, 5

    jl no_disk

    fat bufrez ;Запись FAT

    pop ds

    pop es

    db 0cbh ;RetF. Перейти на программу

    no_disk: ;Это не ключевая дискета

    mov ah, 2

    mov bx, 0

    pr_ent1:

    mov dl, dsk_key[bx] ;Вывод сообщения

    sub dl, 10h

    int 21h

    inc bx

    cmp bx, len_enter1

    jb pr_ent1

    fat bufrez ;Запись FAT

    mov ah, 4ch ;Выход в DOS

    mov al, 0

    int 21h

    copyright db 'Copyright(C) Юзефович Артем ( МГВРК,'

    db ' Минск ), 1996'

    db 0Dh, 0Ah, 'Ключевая'

    db ' дискета.', 0Dh, 0Ah

    db 0Dh, 0Ah, 0Dh, 0Ah, '$'

    code ends

    end start

    ;**************************************************************************

    **

    ;**************************************************************************

    **

    ;**

    **

    ;** КП "ЗАЩИТА ДАННЫХ ОТ НСД"

    **

    ;** Выполнили учащиеся гр.46491 ЕГАНОВ МАКСИМ и ЮЗЕФОВИЧ АРТЕМ

    **

    ;** 1996

    **

    ;**

    **

    ;** Защита винчестера

    **

    ;**************************************************************************

    **

    ;**************************************************************************

    **

    keybd_flags_1_ equ 417h ;Флаги клавиатуры

    data_10e equ 0

    seg_a segment byte public

    assume cs:seg_a, ds:seg_a

    org 100h ;Счетчик команд

    Block proc far

    start:

    jmp real_start

    data_1 db 1

    data_2 dw 7241h, 6574h

    data_4 dw 2E6dh, 2020h

    data_6 dw 2020h, 2020h

    flag1 db 0

    flag2 db 0

    flag3 db 0

    allf db 0

    nameF db 'C:\sub_rosa\block.com', 0

    Block endp

    int_09h_entry proc far ;Процедура обработки 09h

    push ax ;прерывания

    push ds

    mov al,cs:allf

    xor al,1

    mov cs:allf,al

    jmp k2

    k:

    mov cs:allf,1

    k2:

    in al,60h ;Обращение к порту

    клавиатуры

    cmp al,32h ;Проверка на нужную

    je l1 ;комбинацию

    cmp al,08h

    je l2

    cmp al,1eh

    je l3

    jmp loc_1

    l1:

    mov cs:flag1,1

    jmp loc_2

    l2:

    cmp cs:flag1,0

    je loc_1

    mov cs:flag2,1

    jmp loc_2

    l3:

    cmp cs:flag2,0

    je loc_1

    mov cs:flag3,1

    jmp loc_2

    loc_1:

    pop ds

    pop ax

    cmp cs:allf,1

    jne r2

    mov cs:flag1,0

    mov cs:flag2,0

    mov cs:flag3,0

    r2:

    jmp dword ptr cs:data_2

    loc_2:

    sub ax,ax

    mov ds,ax

    test byte ptr ds:keybd_flags_1_,8

    jz loc_1 ;Alt нажата ?

    in al,61h

    mov ah,al ;Слудующий код необходим

    для

    or al,80h ;отработки аппаратного

    out 61h,al ;прерывания

    xchg ah,al

    out 61h,al

    mov al,20h ;Послать сигнал "конец

    out 20h,al ;прерывания" контроллеру

    ;прерываний 8259

    push bx

    mov ah,0Fh

    int 10h ;Video display

    ;ah=functn 0Fh

    ;get state, al=mode,

    bh=page

    ;ah=columns on screen

    cmp cs:flag1,1

    jne loc_6

    cmp cs:flag2,1

    jne loc_6

    cmp cs:flag3,1

    jne loc_6

    cmp al,1

    je loc_3 ;Jump if equal

    cmp al,3

    jne loc_6 ;Jump if not equal

    loc_3:

    mov ax,0B800h

    mov ds,ax ;Установка ключа проверки

    mov al,cs:data_1 ;для 13h прерывания

    xor al,1

    mov cs:data_1,al

    test al,1

    jz loc_4 ;Jump if zero

    mov ax,7458h ;Вывод символа

    jmp short loc_5

    db 90h

    loc_4:

    mov ax,744Fh ;Вывод символа

    loc_5:

    mov cs:flag1,0

    mov cs:flag2,0

    mov cs:flag3,0

    mov ds:data_10e,ax

    loc_6:

    mov cs:allf,1

    pop bx

    pop ds

    pop ax

    iret ;Interrupt return

    int_09h_entry endp

    int_2Fh_entry proc far ;Mультиплексное

    прерывание

    cmp ah,13h

    je loc_7 ;Jump if equal

    jmp dword ptr cs:data_6

    loc_7:

    mov bx,0F000h

    mov es,bx

    mov bx,0FFF0h

    mov dx,bx

    iret ;Interrupt return

    int_2Fh_entry endp

    sub_1 proc near

    sub ax,ax

    mov ds,ax

    mov ax,[bx+2]

    mov es,ax

    mov bx,[bx]

    mov byte ptr es:[bx],0CFh

    retn

    sub_1 endp

    int_13h_entry proc far ;Процедура обработки 13h

    cmp ax,1059h ;прерывания

    jne loc_8 ;Jump if not equal

    cmp dx,2517h

    jne loc_8 ;Jump if not equal

    xchg dx,ax

    iret ;Interrupt return

    int_13h_entry endp

    loc_8:

    test cs:data_1,1 ;Проверка на ключ

    jnz loc_10 ;Jump if not zero

    loc_9:

    jmp dword ptr cs:data_4 ;Вернуться к 13h

    прерыванию

    loc_10:

    push ax

    push bx

    push ds

    push es

    mov bx,4

    call sub_1

    mov bx,0Ch

    call sub_1

    pop es

    pop ds ;Далее слудуют проверки

    pop bx ;функций 13h прерывания

    pop ax

    cmp ah,3

    je loc_11 ;Jump if equal

    cmp ah,5

    je loc_11 ;Jump if equal

    cmp ah,6

    je loc_11 ;Jump if equal

    cmp ah,7

    je loc_11 ;Jump if equal

    cmp ah,0Bh

    je loc_11 ;Jump if equal

    cmp ah,1Ah

    jne loc_9 ;Jump if not equal

    loc_11:

    mov dl,3

    jmp short loc_9

    real_start:

    mov ax,1059h ;Block уже загружен ?

    mov dx,2517h

    int 13h

    cmp ax,2517h

    jne loc_12 ;Jump if not equal

    cmp dx,1059h

    jne loc_12 ;Jump if not equal

    mov ax,4C01h ;Выход в DOS

    int 21h

    loc_12:

    mov ax,3509h

    int 21h

    mov data_2,bx ;Запомнить адрес 09h INT

    mov bx,es

    mov word ptr data_2+2,bx

    mov dx,offset int_09h_entry

    mov ax,2509h

    int 21h ;Установка нового 09h INT

    mov ax,3513h

    int 21h

    mov data_4,bx ;Запомнить адрес 13h INT

    mov bx,es

    mov word ptr data_4+2,bx

    mov dx,offset int_13h_entry

    mov ax,2513h

    int 21h ;Установка нового 13h INT

    mov ax,352Fh

    int 21h

    mov data_6,bx ;Запомнить адрес 2Fh INT

    mov bx,es

    mov word ptr data_6+2,bx

    mov dx,offset int_2Fh_entry

    mov ax,252Fh

    int 21h ;Установка нового 2Fh INT

    ;Необходимое число

    параграфов

    ;памяти

    mov cs:data_1, 0

    mov ah, 41h

    push cs

    pop ds

    mov dx, offset nameF

    int 21h

    mov cs:data_1, 1

    mov dx,((offset pgm_len+15)/16)+10h

    mov ax,3100h ;Завершить и оставить

    int 21h ;резидентным

    data_8 db 'Защита Винчестера. '

    copyright db 'Copyright(C) Юзефович Артем ( МГВРК,'

    db ' Минск ), 1996'

    db 0Dh, 0Ah, 'Винчестер'

    db ' блокирован.', 0Dh, 0Ah

    db 0Dh, 0Ah, 0Dh, 0Ah, '$'

    pgm_len equ $-Block ;Длина программы

    seg_a ends

    end start

    Приложение 3

    Пример работы программы

    В качестве примера работы программы приведем текстовый файл до

    зашифрования:

    “Sub Rosa - втайне (буквально: под розой).

    У древних римлян роза была эмблемой тайны. Когда хозяин дома вешал

    розу над пиршественным столом, гости знали, что все сказанное должно

    оставаться тайной.

    Впоследствии изображение розы на потолке помещений, где

    происходили совещания, свидетельствовало о том, что все сказанное

    здесь не должно быть разглашено.”

    и после зашифрования:

    9

    Страницы: 1, 2, 3, 4, 5, 6, 7


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.