Информационная безопасность
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ание диспетчерского сокета, принимающего 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