Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
{ if (* (char*)a<*(char*)b) return -1; else if (* (char*)a==*(char*)b) return 0; else return 1; } void main()
{ char tmp[MAXLEN], // упорядоченный ключ шифрования key[MAXLEN], // ключевая фраза
res[MAXLEN], // результирующее хеш-значение (шифро //текст)
str[MAXLEN] = .MAGICTEXT; // магическая строка /* проверка количества параметров командной строки при попытке запуска приложения и копирование ключевой фразы */
if(_argc>l) strncpy(key, _argv[l], MAXLEN); else strcpy(key,"");
/* преобразование ключа шифрования (выравнивание его длины с длиной магической строки) */ if(strlen(MAGICTEXT)<strlen(key)) strncpy(tmp, key, strlen(MAGICTEXT)); else strcpy(tmp, key);
while (strlen(tmp)<strlen(MAGICTEXT)) strncat(tmp," ",1) ; char Key[MAXLEN]; // преобразованный ключ strcpy(Key, tmp);
// сортировка символов ключа шифрования qsort(tmp, strlen(tmp), sizeof (char), It); unsigned Perm[MAXLEN]; /* ключ шифрования для перестановки * /
// цикл шифрования магической строки for(unsigned i=0; i<strlen(MAGICTEXT); i++) { Perm[i]=strchr(tmp, Key[i])-tmp; tmp[Perm[i]]=' \1' ; res[i]=str[Perm[i]]; } res[strlen(MAGICTEXT)]='\0';
// сравнение полученного и эталонного хеш-значений if(!strcmp(res, HASHVALUE)) // продолжение работы приложения при совпадении
/* завершение работы защищенного приложения при несанкционированном запуске */ else exit (-1); }
Для скрытия процедуры санкционированного запуска приложения создается контейнер документ в текстовом процессоре Microsoft Word с произвольным содержанием, но включающий в себя три макроса.
1. Играющий роль скрываемого сообщения макрос с произвольным именем для ввода пути к защищаемому приложению и
параметра его запуска (ключевой фразы), запуска программы, завершения работы текстового процессора Microsoft Word:
Sub CallProgO
' CallProg Макрос
' Макрос создан 26.03.2004 Павел Б. Хорев
s = InputBox("Параметры запуска", "Инициализация", "") If s о "" Then Shell s Application. Quit End Sub
Этот макрос с помощью команды меню Microsoft Word Сервис | Настройка | Клавиатура связывается с ключевой комбинацией клавиш на клавиатуре (например, Alt+Ctrl+P).
2. Макрос со стандартным именем для блокировки команды
меню Microsoft Word Сервис | Настройка:
Sub ToolsCustomize()
' ToolsCustomize Макрос
' Настройка интерфейса пользователя Word (меню,
' клавиатура и " панели инструментов)
г
' Dialogs(wdDialogToolsCustomize).Show End Sub
3. Макрос со стандартным именем для блокировки команды
меню (и дублирующей ее кнопки панели управления) Сервис |
Макрос | Макросы:
Sub ToolsMacroO г
' ToolsMacro Макрос
' Запуск, создание, удаление или изменение макроса
' Dialogs(wdDialogToolsMacro).Show End Sub
При открытии документа-контейнера неуполномоченным пользователем будет выдано сообщение о наличии в документе макросов, возможно содержащих вирусы (см. подразд. 6.3), с предложением выбора варианта дальнейшей работы с документом с отключением макросов или без их отключения. Если неуполномоченный пользователь выберет вариант работы с документом без отключения макросов, то для осуществления несанкционированного запуска защищаемого приложения он должен подобрать:
• ключевую комбинацию клавиш для выполнения запускающего макроса (просмотр списка макросов документа и назначенных комбинаций клавиш будет заблокирован);