Учебно-методическое пособие по написанию курсовой работы по дисциплине Моделирование систем защиты информации
.pdf11
3.2 Порядок выполнения курсовой работы
Курсовая работа предназначена для самостоятельного практического закрепления материала и выполняется в несколько этапов.
Подготовительный этап. Уточнение постановки задачи. Аналитический обзор научно-технической литературы по теме КР.
Проектный этап. Разработка архитектуры СОВ и алгоритма выявления заданной сетевой атаки.
Реализационный этап. Программная реализация СОВ по выявлению заданной сетевой атаки, моделирование заданной сетевой атаки, отладка программ, получение и анализ результатов.
Оформительский этап. Оформление пояснительной записки в соответствии с требованиями пунктов 3.3 и 3.4 настоящего методического пособия.
Заключительный этап. Защита курсовой работы.
3.3 Структура и примерное содержание пояснительной записки
Пояснительная записка к курсовой работе должна включать следующие структурные элементы в указанной ниже последовательности:
титульный лист (Приложение);
задание на курсовую работу;
содержание;
введение, в котором раскрываются актуальность и значение темы, формулируется цель работы;
основная часть:
o постановка задачи;
oкраткие теоретические основы разрабатываемой темы (суть заданной сетевой атаки; существующие программные средства, методы и алгоритмы, применяемые для моделирования и обнаружения заданной сетевой атаки, их достоинства и недостат-
ки);
oразработка и описание архитектуры СОВ и алгоритма выявления заданной сетевой атаки;
o описание всех программно реализованных функций; o руководство пользователя;
результаты применения программы в виде скриптов и снимков экрана после запуска приложения;
заключение;
список использованных источников;
приложение, содержащее исходные коды разработанных программ с необходимыми комментариями.
12
3.4.Требования к оформлению пояснительной записки
Пояснительная записка к курсовой работе выполняется на стандартных листах бумаги формата А4, сброшюрованных в папку. Текст печатается на одной стороне листа. Поля: левое поле -35 мм, правое – 10 мм, верхнее и нижнее – 20 мм. Примерное количество знаков на странице – 2000. Шрифт Times New Roman размером 12, межстрочный интервал 1,5.Страницы текста и рисунки имеют сквозную нумерацию. Первой страницей является титульный лист, на котором номер страницы не проставляется.
3.5 Защита курсовой работы
Защита курсовой работы является заключительным этапом курсового проектирования и проводится не позднее середины последней недели перед началом сессии.
Выполненная курсовая работа в бумажной форме сдается на проверку руководителю проектирования. Руководитель вносит в текст свои замечания по работе, принимает решение о допуске к защите, делая об этом запись на титульном листе, или возвращает работу на доработку с указанием причин.
Защита состоит в демонстрации студентом функционирования разработанной программы и ответах на вопросы преподавателя (по теоретическим аспектам данной темы, алгоритмам и кодам программы в рамках содержания работы). Защита курсовой работы позволяет выявить уровень знаний студента и степень его самостоятельности в выполнении работы.
В результате защиты курсовая работа, согласно Положению о промежуточной аттестации студентов МТУСИ, оценивается дифференцированной отметкой («неудовлетворительно», «удовлетворительно», «хорошо», «отлич-
но»).
Студенты, не защитившие курсовую работу, до экзамена по дисциплине "Моделирование систем защиты информации" не допускаются.
4. ПРИМЕРЫ НА ЯЗЫКЕ C++
А) Пример записи структуры (функция func1) и полей (func2) в бинарный файл:
#include <iostream> #include <fstream>
using namespace std;
struct S |
|
{ |
|
int |
ipfrom; |
int |
ipto; |
short |
portfrom; |
short |
portto; |
short |
flags; |
unsigned long long time; };
ofstream file("file.zzz", ios::binary);
13
void func1()
{
S s; s.ipfrom = 1; s.ipto = 1;
s.portfrom = 1; s.ipfrom = 1; s.portto = 1; s.flags = 1; s.time = 1;
file.write((char*)(&s), sizeof(S));
}
void func2() |
|
|
|
{ |
|
|
|
int |
ipfrom |
= 1; |
|
int |
ipto |
= 1; |
|
short |
portfrom = 1; |
|
|
short |
portto |
= 1; |
|
short |
flags |
= 1; |
|
unsigned long long time |
= 1; |
||
file.write((char*)(&ipfrom) , sizeof(ipfrom)); file.write((char*)(&ipto) , sizeof(ipto)); file.write((char*)(&portfrom), sizeof(portfrom)); file.write((char*)(&portto) , sizeof(portto)); file.write((char*)(&flags) , sizeof(flags)); file.write((char*)(&time) , sizeof(time));
}
int main()
{
//func1();
func2();
file.close(); return 0;
}
Б) Пример чтения структуры (функция func1) и полей (func2) из бинарного файла:
#include <iostream> #include <fstream>
using namespace std;
struct S |
|
{ |
|
int |
ipfrom; |
int |
ipto; |
short |
portfrom; |
short |
portto; |
short |
flags; |
unsigned long long time; };
ifstream file("file.zzz", ios::binary);
void read1()
{
S s;
file.read((char*)(&s), sizeof(S));
cout << s.ipfrom;
}
|
|
14 |
void read2() |
|
|
{ |
|
|
int |
ipfrom; |
|
int |
ipto |
; |
short |
portfrom; |
|
short |
portto ; |
|
short |
flags |
; |
unsigned long long time;
file.read((char*)(&ipfrom) , sizeof(ipfrom)); file.read((char*)(&ipto) , sizeof(ipto));
file.read((char*)(&portfrom), |
sizeof(portfrom)); |
|
file.read((char*)(&portto) |
, |
sizeof(portto)); |
file.read((char*)(&flags) |
, |
sizeof(flags)); |
file.read((char*)(&time) |
, |
sizeof(time)); |
cout << ipfrom;
}
int main()
{
read1();
//read2();
file.close(); return 0;
}
В) Пример работы со временем:
#include <iostream> #include <sys/time.h>
using namespace std;
main()
{
struct timeval t; gettimeofday( &t, NULL );
cout << "секунды - " <<t.tv_sec << endl;
cout << "микросекунды - " <<t.tv_usec << endl;
//в файл можно писать теперь структуру t
//--------------------------------------
//если требуется преобразовать к миллисекундам:
unsigned long long timeinMillis = (unsigned long long)t.tv_sec * 1000 + t.tv_usec/1000;
cout << "общие милисекунды - " << timeinMillis << endl;
}
Г) Пример преобразования целого, заданного в сетевом порядке расположения байтов, в стандартный строчный вид, из цифр и точек:
#include <arpa/inet.h> #include <iostream> using namespace std;
main() {
uint32_t ip = 16777343; struct in_addr ip_addr; ip_addr.s_addr = ip;
cout << "The IP address is "<< inet_ntoa(ip_addr) << endl;
}
15
Д) Пример работы с ассоциативным контейнером map:
#include <string.h> #include <iostream> #include <map> #include <utility>
using namespace std;
int main()
{
map<int, string> Employees;
Employees[5234] = "Mike C.";
Employees[3374] = "Charlie M.";
Employees[1923] = "David D.";
Employees[7582] = "John A.";
Employees[5328] = "Peter Q.";
cout << "Employees[3374]=" << Employees[3374] << endl << endl;
cout << "Map size: " << Employees.size() << endl;
for( map<int,string>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}
}
Е) Пример работы с множеством set:
#include <string> #include <set> #include <iostream> using namespace std;
int main(int argc, char* argv[])
{
set <string> strset;
set <string>::iterator si; strset.insert("cantaloupes"); strset.insert("apple"); strset.insert("orange"); strset.insert("banana"); strset.insert("grapes"); strset.insert("grapes");
// This one overwrites the previous occurrence for (si=strset.begin(); si!=strset.end(); si++) { cout << *si << " "; }
cout << endl; return 0;
}
Ж) Пример работы с множеством векторов (динамически расширяемым мас-
сивом) vector:
#include <iostream> #include <vector> #include <string>
using namespace std;
16
main()
{
vector<string> SS; SS.push_back("The number is 10"); SS.push_back("The number is 20"); SS.push_back("The number is 30"); cout << "Loop by index:" << endl; int ii;
for(ii=0; ii < SS.size(); ii++)
{
cout << SS[ii] << endl;
}
cout << endl << "Constant Iterator:" << endl;
vector<string>::const_iterator cii; for(cii=SS.begin(); cii!=SS.end(); cii++)
{
cout << *cii << endl;
}
cout << endl << "Reverse Iterator:" << endl;
vector<string>::reverse_iterator rii; for(rii=SS.rbegin(); rii!=SS.rend(); ++rii)
{
cout << *rii << endl;
}
cout << endl << "Sample Output:" << endl;
cout << SS.size() << endl; cout << SS[2] << endl;
swap(SS[0], SS[2]); cout << SS[2] << endl;
}
З) Пример работы с двусвязным списком list:
#include <iostream> #include <list>
using namespace std;
int main()
{
list<int> intList;
for (int i = 1; i <= 10; ++i) intList.push_back(i * 2);
for (list<int>::const_iterator ci = intList.begin(); ci != intList.end(); ++ci)
cout << *ci << " "; return 0; }
И) Пример работы с очередью с приоритетом priority_queue:
#include <iostream> #include <queue> using namespace std;
int main()
{
priority_queue<int> pq;
17
pq.push(3);
pq.push(5);
pq.push(1);
pq.push(8);
while ( !pq.empty() )
{
cout << pq.top() << endl; pq.pop();
}
cin.get();
}
К) Пример работы со стеком stack:
#include <iostream> #include <stack> using namespace std; int main ()
{
stack<int> mystack;
for (int i=0; i<5; ++i) mystack.push(i);
cout << "Popping out elements..."; while (!mystack.empty())
{
cout << ' ' << mystack.top(); mystack.pop();
}
cout << '\n'; return 0;
}
18
5. СПИСОК ЛИТЕРАТУРЫ
1.Шелухин О.И., Сакалема Д.Ж., Филинова А.С. Обнаружение вторжений в компьютерные сети (сетевые аномалии): Учебное пособие для вузов / Под ред. профессора О.И. Шелухина. – М.: Горячая линия–Телеком, 2013. – 220 с.
2.Linux iptables Xor filter / URL:
https://rickvanderzwet.nl//trac/personal/export/347/liacs/net/as3 .
3.Теоретические основы компьютерной безопасности: Учебное пособие для вузов по спец. "Информ. безопасность" / А.А. Грушо, Э.А. Применко, Е.Е. Тимонина. - М.: Академия, 2009. - 268 с.: ил. - (Высшее профессиональное образование. Информационная безопасность). - Библиогр.: с. 261-263.
4.Щербаков А.Ю. Современная компьютерная безопасность. Теоретические основы. Практические аспекты: Электронное учебное пособие для вузов. - М.: Кн. мир, 2009. – 13,7 МБ.
19
ПРИЛОЖЕНИЕ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования
Московский технический университет связи и информатики
Кафедра информационной безопасности и автоматизации
КУРСОВАЯ РАБОТА по дисциплине
МОДЕЛИРОВАНИЕ СИСТЕМ
ЗАЩИТЫ ИНФОРМАЦИИ
на тему:
« »
Выполнил:
студент (ка)__________________
(Ф.И.О.)
группа_____________________
Проверил:
_____________________________
(Ф.И.О., должность преподавателя)
Оценка______________________________
Дата______________________________
Москва 201_
20
УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ
ПО НАПИСАНИЮ КУРСОВОЙ РАБОТЫ
по дисциплине
Моделирование систем защиты информации
Подписано в печать 23.06.2014г. Формат 60х90 1/16. Объём 1,3 усл.п.л. Тираж 100 экз. Изд. № 66. Заказ 86.
ООО «ТРП». Москва, ул. Правды, д. 24, стр. 5.
