- •Создание и проверка криптографической защиты текстовой информации макросами языка vba в среде Word ms Office.
- •Объекты, свойства и методы vba.
- •Типы данных.
- •Встроенные типы данных.
- •Переменные и их объявление.
- •Объявление и присваивание объектных переменных.
- •Использование встроенных функций Visual Basic.
- •Математические функции
- •Строковые функции:
- •2.Логически прерываемые
- •Встроенные диалоговые окна.
- •Диалоговые окна приложения.
- •Порядок выполнения программы Шифрование/Дешифрование текстовых фрагментов документа Word по парольной фразе (симметричный ключ).
- •1.2 Создать код для отображения диалогового окна:
Диалоговые окна приложения.
Программы на Visual Basic могут вызывать все диалоговые окна, существующие в программах MS Office. Однако эти диалоговые окна действуют не так, как описанные выше, и возвращают программе на Visual Basic без изменений какой-либо таблицы или ячейки. Если Вы вызываете диалоговое окно, то оно не возвращает значения программе Visual Basic, а осуществляет свои нормальные функции.
В связи с тем, что диалоговые окна приложения применяются к текущему отображаемому объекту, не отображайте диалоговое окно вне контекста: так как это приведет к ошибке выполнения.
Для вызова диалогового окна приложения пользуйтесь набором Dialogs объекта Application. Для поиска доступных диалоговых окон и констант воспользуйтесь Object Browser, выбрав объект Constants из библиотеки MS Office (нужные константы начинаются с xlDialog).
Следующая процедура отображает диалоговое окно FormatNumber:
Sub TestDialog2()
Application.Dialogs(xlDialogFormatNumber).Show
End Sub
Чтобы выполнить эту процедуру, запишите ее на странице модуля, переключитесь на MS Office, укажите директиву Tools/Macro, выберите процедуру TestDialog2(), затем нажмите кнопку Run.
Принцип работы программы последовательного перебора паролей.
Программа, использованная в лабораторной работе, последовательно перебирает
символы заданного алфавита (заданы цифры от 0 до 5) и подставляет их в четыре разряда, начиная с младшего. То есть получается последовательность паролей:
0000, 0001,0002,0003,0004,0005,0010,0011,0012,0013…5555
в количестве n=64=1296 вариантов.
Как только встретиться пароль, совпадающий с исходным, процесс подбора останавливается и выдается результат подбора, а также открывается документ с подобранным паролем.
Программа работает с ограниченным набором символов алфавита и количеством разрядов пароля. При необходимости возможно доработать программу под любой размер пароля. Необходимо помнить, что VBA обладает невысокой скоростью обработки и увеличение размеров пароля и его алфавита сильно замедлит скорость выполнения программы. Поэтому современные подобные программы написаны на машинных языках низкого уровня (Assembler) выполняются при использовании всех ядер центрального и видеопроцессоров.
Принцип работы программы криптозащиты методом симметричного ключа.
Программа кодирует текст, написанный русскими прописными и строчными буквами (32 буквы (используется только е)) в набор символов русского алфавита, лишенного смысловой нагрузки (хаотичный набор) по введенной парольной фразе. Аналогично происходит дешифрация из кодированного текста в первоначальный текст по этой же парольной фразе (симметричный ключ).
Программа представляет собой два основных блока:
Шифратор (Кодер) - подпрограмма замены основного алфавита на вспомогательный.
Дешифратор (Decoder)-подпрограмма замены вспомогательного алфавита на основной.
При шифрации используется парольная фраза. Она же используется при дешифрации (то есть симметричный ключ) .
Рассмотрим пример:
Пусть дан текст “Телефон для Ивана Ивановича.”
Выбираем произвольно парольную фразу (из книг или Интернета)
“В моей душе покоя нет. Весь день я жду кого-то.”
Программа формирует вспомогательные алфавиты для строчных и прописных букв. Вначале выбираются все неповторяющиеся буквы из парольной фразы, а потом дописываются все оставшиеся в основном алфавите. Формируется вспомогательный алфавит до 32 символов:
Основной строчный алфавит ="абвгдежзийклмнопрстуфхцчшщъыьэюя"
Вспомогательный строчный алфавит="моейдушпкянтсьжгабвзилрфхцчщъыэю"
Основной прописной алфавит="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
Вспомогательный прописной алфавит= "BАБГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
Из основного текста выбираются последовательно буквы, определяется их номер по счету в основном алфавите и подменяется буквой из вспомогательного алфавита с тем же номером.
Например, у нас последняя буква в тексте “а”- строчная с номером 1 основного алфавита. В вспомогательном алфавите под номером значиться буква “в” . Вот и ее подставляем в текст.
В результате получаем следующий текст:
“Тутуижь дтю Иемьм Иемьжекфм”
Дешифрация происходит наоборот. За основу берется вспомогательный алфавит.
Из зашифрованного текста выбираются последовательно символы, определяется их номер во вспомогательном алфавите. После этого по номеру, но уже в основном алфавите подставляется символ. Исходный текст восстанавливается.
Программа работает с ограниченным набором символов алфавита (только русские строчные и прописные буквы). При необходимости возможно расширить программу под любой алфавит (например латинский).
Порядок выполнения программы последовательного подбора паролей (brute force).
Программа последовательно перебирает пароли из заданной длины кодового слова и алфавита (в учебной программе используются 4 цифры от 0 до 5, например “1234”).
Порядок работы следующий:
Запустить пользовательскую форму кнопкой на панели быстрого доступа (верхний левый угол экрана).
Активизируется пользовательское меню (рис 1). Нажать на кнопку “Запуск подбора”.
Появиться окно выбора закодированного файла→указать на закодированный файл→ OK.
Программа подбора начнет выполняться, появиться окно выполнения программы (progressbar). По выполнению задачи progressbar исчезнет. Вместо него появиться окно с указанием подобранного пароля и временем подбора в секундах.
Также откроется в новом окне содержимое распароленного файла Word.
При выполнении программы подбора возможны зависания окна progressbar (информация на нем может не меняться), но сама программа подбора будет продолжать выполняться. Это происходит из-за срабатывания системы защиты самой программы Word. На конечный результат подбора пароля это не влияет. В итоге после некоторого ожидания появится окно с паролем и затраченным временем выполнения.
Так как количество вариантов довольно большое →N=64=6*6*6*6=1296, при этом система защиты Word и язык программирования VBA тормозят опрос вариантов, поэтому скорость перебора невелика.
Вычислить ее возможно из следующих соображений. После выполнения контрольного примера снятия пароля с файла (пароль “1234”) в окне выполнения появиться открытый пароль “1234” и время его нахождения T в секундах.
Зная количество вариантов var=n1*n1*n3*n4, (где n-число вариантов чисел в одном разряде (у нас var=2*3*4*5=120) , можно найти скорость перебора R=T/var.
Нетрудно посчитать общее время при переборе всех вариантов tобщ=R*N.
Попробуем рассчитать, сколько возможных паролей при этом может существовать, учитывая, что в качестве символа можно использовать спецсимволы (30 символов), цифры (10 символов), а также заглавные и строчные буквы как английского (52 символа), так и локализованного алфавита (66 символов). Итого, количество возможных символов — 30 + 10 + 52 + 66 = 158. При максимальной длине пароля в 40 символов получим возможных комбинаций N=15840. Число это огромно, и с задачей перебора всех возможных паролей за приемлемое время не справится компьютер.
