Информационная безопасность

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ание диспетчерского сокета, принимающего HTTP-подключения. Содержит поля:

long connection_time (время подключения клиента)sockaddr_in server_address, client_address (адресные структуры сервера и клиента) retval, size_of_client_address (количество принятых / отправленных байтов, размер адресной структуры)

WSADATA wsaData (стартовая сокетная структура)

SOCKET dispatch_server_socket, msg_server_socket (диспетчерский сокет, виртуальный сокет подключения)

DWORD dwThreadID (идентификатор нити)

DISPATCH_SERVER_SOCKET_HTTP (конструктор, принимающий конфигурационный объект)_HTTP conf (конфигурационный объект)

int accept_connect(void) (принимает запрос на подключение)

. Класс SERVER:

Представляет описание виртуального сокета, создаваемого при каждом HTTP-подключении и закрываемого при его окончании. Содержит поля:

char Buffer [SIZE_OF_BUFFER] (буфер для приёма / отправки сообщения)

SOCKET msg_server_socket (виртуальный сокет, создаваемый на один сеанс)quit (флаг, который показывает, что сеанс связи окончен)

int block_reply (флаг - блокировать/не блокировать ответ)

PARAM param[100] (массив строк-параметров для сырого сокета)

int param_index (количество строк в этом массиве)_HTTP conf (конфигурационный объект)

long connection_time (время подключения)

fstream report_file (в этот файл записывается всё, что сервер получает и отправляет)(void) (конструктор - обнуляет все поля объекта)

int recv_data(void) (получить информацию через сокет)

int send_data(void) (отправить информацию через сокет)

int shutdown_and_closesocket(void) (закрыть сокет)erase_buffer(void) (стереть буфер)set_buffer (char*) (заполнить буфер) ProcessClientQuery(void) (обработать клиентский запрос)

int ProcessControlString (char* c_string) (разбить строку параметров на отдельные лексемы)CreateQueryForm (char* temp_path) (считать в буфер с диска htm-файл (форму запроса) для отправки клиенту)

int ProcessHTTPCommand(void) (выполнить команду, полученную от HTTP-клиента)

SERVER& operator=(SERVER& right) (перегруженное присваивание из-за строк)

};

Описания функций:

DISPATCH_SERVER_SOCKET_

int DISPATCH_SERVER_SOCKET_

int SERVER:shutdown_and_closesocket(void) - мягкое выключение и закрытие сокета.

void SERVER:erase_buffer(void) - стереть буферSERVER:set_buffer (char* string) - заполнить буфер SERVER:recv_data(void) - побайтно получить информацию

int SERVER:send_data(void) - побайтно отправить информацию

SERVER& SERVER:operator=(SERVER& right) - перегруженное присваивание

void CONF_

CONF_

int SERVER: ProcessControlString (char* st) - разбивает строку запроса на отдельные лексемы

DWORD WINAPI ThreadFuncHTTP (SERVER* p_server) - главная нить, в которой работает HTTP-сервер, т.е. получает запрос, обрабатывает его и отправляет ответ.

char* substring (char* st, char s1, char s2, char* ret) - вспомогательная функция. Выделяет подстроку из строки, начиная с char s1 и заканчивая char s2.

char* getspos (char* search_string, char search_symbol) - вспомогательная функция. Возврашает номер позиции символа в строке.

void readcomment (fstream& file) - вспомогательная функция. Применяется для игнорирования комментариев при считывании конфигурационного файла.

void SERVER: CreateQueryForm (char* temp_path) - решает вопрос об отправке клиенту формы на основании его запроса.SERVER: ProcessHTTPCommand(void) - посылает атакующую последовательность пакетов по команде от HTTP-клиента.

Описание элементов сервера raw_send.exe:

Модуль Packet.h содержит следующие элементы:

Те же элементы, что и в файле packet.h клиента.

Модуль Packet.cpp cодержит следующие элементы:

Те же элементы, что и в файле packet.cpp клиента.

Модуль Raw_recv.cpp cодержит следующие элементы:

Описания функций:

main - инициализирует глобальную переменную - путь к исполняемому файлу, загружает библиотеку сокетов, запускает нить с почтовым POP3-сервером, создаёт сырой сокет, привязывает его к своему адресу, и переводит его в режим бесконечного приёма запросов.

int RAW_SOCKET: RecvPackets(void) - принимает входящие пакеты в бесконечном цикле, для каждого пакета выводит на экран его содержимое и проверяет его поля на предмет атаки.

int ICMP_PACKET: DetectAttack(void) - считывает поля полученного пакета и сверяет их с сигнатурами атак, принимая решение, атака это или нет. Если атака зарегистрирована, то функция выводит соответствующее сообщение на консоль сервера и формирует в почтовом ящике серевера соответствующее сообщение электронной почты, которое можно забрать, подключившись к POP3-серверу программой MS Outlook Express.

int make_message (char* filename) - формирует в почтовом ящике сообщение электронной почты.

Модуль Server.h cодержит следующие элементы:

. Структура FILE_REF:

Представляет описание структуры - описателя файла-письма. Содержит поля:filename [MAX_PATH] (имя файла)filesize (размер файла)del (признак удаления)

2. Класс MODE:

Представляет описание абстрактного объекта, описывающего режим соединения POP3-сервера. Содержит поля:

bool authorization_mode (флаг, который определяет, включён ли режим авторизации)

bool transaction_mode (флаг, который определяет, включён ли режим транзакции)

bool update_mode (флаг, который определяет, включён ли режим обновления)

MODE() (конструктор - обнуление всех полей)

void SetAuthorizationMode(void) (установить режим авторизации)

void SetTransactionMode(void) (установить режим транзакции)

void SetUpdateMode(void) (установить режим обновления)

bool IsAuthorizationMode(void) (узнать, выставлен ли флаг режима авторизации)

bool