комменты внутрь тел функций, status
This commit is contained in:
parent
a96165b7fa
commit
c79a949389
|
@ -22,23 +22,25 @@ std::chrono::system_clock::time_point start_timestamp; // Начальное в
|
||||||
std::string log_msg; // Сообщение, которое будет записано в лог-файл
|
std::string log_msg; // Сообщение, которое будет записано в лог-файл
|
||||||
std::string fin_msg; // Сообщение, которое будет выведено в консоль пользователю
|
std::string fin_msg; // Сообщение, которое будет выведено в консоль пользователю
|
||||||
std::string msg; // Сообщение, которое будет отправлено в телеграм
|
std::string msg; // Сообщение, которое будет отправлено в телеграм
|
||||||
|
int status; // Статус работы программы
|
||||||
|
|
||||||
// ====== end of DCL ====== //
|
// ====== end of DCL ====== //
|
||||||
|
|
||||||
// Данная процедура записывает в глобальные переменные параметры
|
|
||||||
// (attack_type, domain, ip, port, log_file, telegram_id, telegram_token) проводимой атаки, поступившие при вызове программы
|
|
||||||
// На вход получает int argc, char **argv, возвращает код выполнения
|
|
||||||
// Коды возврата:
|
|
||||||
// 2 - Атака флуд, все нужные опции есть
|
|
||||||
// 1 - Атака порт скан, все нужные опции есть
|
|
||||||
// 0 - нужна помощь
|
|
||||||
// -1 - пользователь не ввел тип атаки или ввел неверный тип атаки
|
|
||||||
// -10 - Пользователь выбрал тип атаки порт сканнинг, но не ввел нужные параметры
|
|
||||||
// -20 - Пользователь выбрал тип атаки флуд, но не ввел нужные параметры
|
|
||||||
// -101 - неизвестная опция или потерян аргумент, следует предложить вызвать флаг помощи
|
|
||||||
// -600 - пользователь ввел токен, но не id или наоборот
|
|
||||||
int my_check_params(int argc, char **argv)
|
int my_check_params(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
// Данная процедура записывает в глобальные переменные параметры
|
||||||
|
// (attack_type, domain, ip, port, log_file, telegram_id, telegram_token) проводимой атаки, поступившие при вызове программы
|
||||||
|
// На вход получает int argc, char **argv, возвращает код выполнения
|
||||||
|
// Коды возврата:
|
||||||
|
// 2 - Атака флуд, все нужные опции есть
|
||||||
|
// 1 - Атака порт скан, все нужные опции есть
|
||||||
|
// 0 - нужна помощь
|
||||||
|
// -1 - пользователь не ввел тип атаки или ввел неверный тип атаки
|
||||||
|
// -10 - Пользователь выбрал тип атаки порт сканнинг, но не ввел нужные параметры
|
||||||
|
// -20 - Пользователь выбрал тип атаки флуд, но не ввел нужные параметры
|
||||||
|
// -101 - неизвестная опция или потерян аргумент, следует предложить вызвать флаг помощи
|
||||||
|
// -600 - пользователь ввел токен, но не id или наоборот
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
int opt;
|
int opt;
|
||||||
const char* short_options;
|
const char* short_options;
|
||||||
|
@ -132,12 +134,13 @@ int my_check_params(int argc, char **argv)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Данная функция вызывается в случае ошибки на каком-то этапе и на основании поступившего кода,
|
void my_diag()
|
||||||
// формирует сообщение с описанием произошедшей ошибки
|
|
||||||
void my_diag(int status)
|
|
||||||
{
|
{
|
||||||
|
// Данная функция вызывается в случае ошибки на каком-то этапе и на основании поступившего кода,
|
||||||
|
// формирует сообщение с описанием произошедшей ошибки
|
||||||
|
|
||||||
// Отладочный вывод - начало работы функции (можно отключить в релизной версии)
|
// Отладочный вывод - начало работы функции (можно отключить в релизной версии)
|
||||||
printf("begin my_diag (status: %i)\n", status); // debug
|
printf("begin my_diag, status: %i\n", status); // debug
|
||||||
// Выбор сообщения в зависимости от кода ошибки
|
// Выбор сообщения в зависимости от кода ошибки
|
||||||
switch (status)
|
switch (status)
|
||||||
{
|
{
|
||||||
|
@ -196,8 +199,9 @@ std::string escape_json(const std::string& s) {
|
||||||
return result; // Возвращаем обработанную строку
|
return result; // Возвращаем обработанную строку
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверка, является ли строка числом (включая отрицательные)
|
|
||||||
bool is_numeric(const std::string& s) {
|
bool is_numeric(const std::string& s) {
|
||||||
|
// Проверка, является ли строка числом (включая отрицательные)
|
||||||
|
|
||||||
size_t start; // Индекс, с которого начинать проверку цифр
|
size_t start; // Индекс, с которого начинать проверку цифр
|
||||||
if (s.empty()) return false; // Пустая строка не может быть числом
|
if (s.empty()) return false; // Пустая строка не может быть числом
|
||||||
|
|
||||||
|
@ -219,7 +223,8 @@ bool is_numeric(const std::string& s) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int my_msg() {
|
int my_msg() {
|
||||||
// Инициализация переменных для работы с CURL
|
// Инициализация локальных переменных для работы с CURL
|
||||||
|
|
||||||
CURL* curl; // Указатель на CURL-объект
|
CURL* curl; // Указатель на CURL-объект
|
||||||
std::string escaped_msg; // Экранированное сообщение для JSON
|
std::string escaped_msg; // Экранированное сообщение для JSON
|
||||||
std::cout << msg << std::endl; // Вывод сообщения в консоль (для отладки)
|
std::cout << msg << std::endl; // Вывод сообщения в консоль (для отладки)
|
||||||
|
@ -291,15 +296,17 @@ int my_msg() {
|
||||||
return 4; // Прочие ошибки
|
return 4; // Прочие ошибки
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Данная функция записывает в файл лога сообщение
|
|
||||||
int my_log()
|
int my_log()
|
||||||
{
|
{
|
||||||
|
// Данная функция записывает в файл лога сообщение
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Данная функция завершает программу и рассчитывает итоговое время выполнения программы
|
|
||||||
void my_fin()
|
void my_fin()
|
||||||
{
|
{
|
||||||
|
// Данная функция завершает программу и рассчитывает итоговое время выполнения программы
|
||||||
|
|
||||||
// Фиксируем время окончания работы программы
|
// Фиксируем время окончания работы программы
|
||||||
auto end_timestamp = std::chrono::system_clock::now();
|
auto end_timestamp = std::chrono::system_clock::now();
|
||||||
// Преобразуем время окончания в time_t и миллисекунды
|
// Преобразуем время окончания в time_t и миллисекунды
|
||||||
|
@ -340,29 +347,29 @@ void my_fin()
|
||||||
std::exit(0);
|
std::exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Данная процедура сопостовляет доменное имя с IP
|
|
||||||
int my_dns()
|
int my_dns()
|
||||||
{
|
{
|
||||||
|
// Данная процедура сопостовляет доменное имя с IP
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Данная процедура выполняет TCP SYN Flood атаку
|
|
||||||
int my_tcp_syn()
|
int my_tcp_syn()
|
||||||
{
|
{
|
||||||
|
// Данная процедура выполняет TCP SYN Flood атаку
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Данная процедура выполняет UDP Flood (port scanning) атаку
|
|
||||||
int my_udp()
|
int my_udp()
|
||||||
{
|
{
|
||||||
|
// Данная процедура выполняет UDP Flood (port scanning) атаку
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Главная функция программы - точка входа
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
// Главная функция программы - точка входа
|
||||||
|
|
||||||
// Объявление переменных для хранения статусов операций
|
// Объявление переменных для хранения статусов операций
|
||||||
int check_params_status; // Статус проверки параметров
|
|
||||||
int log_status; // Статус записи в лог
|
int log_status; // Статус записи в лог
|
||||||
int dns_status; // Статус DNS-разрешения
|
int dns_status; // Статус DNS-разрешения
|
||||||
int udp_status; // Статус UDP-атаки
|
int udp_status; // Статус UDP-атаки
|
||||||
|
@ -372,6 +379,7 @@ int main(int argc, char **argv)
|
||||||
n_ok_requests = 0; // Счетчик успешных запросов
|
n_ok_requests = 0; // Счетчик успешных запросов
|
||||||
n_fail_requests = 0; // Счетчик неудачных запросов
|
n_fail_requests = 0; // Счетчик неудачных запросов
|
||||||
start_timestamp = std::chrono::system_clock::now(); // Засекаем время начала
|
start_timestamp = std::chrono::system_clock::now(); // Засекаем время начала
|
||||||
|
status = 0; // Статус программы
|
||||||
|
|
||||||
// Получаем текущее время в различных форматах
|
// Получаем текущее время в различных форматах
|
||||||
time_t now_time_t = std::chrono::system_clock::to_time_t(start_timestamp);
|
time_t now_time_t = std::chrono::system_clock::to_time_t(start_timestamp);
|
||||||
|
@ -390,10 +398,10 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
// ====== Основная логика программы ====== //
|
// ====== Основная логика программы ====== //
|
||||||
// 1. Проверяем параметры командной строки
|
// 1. Проверяем параметры командной строки
|
||||||
check_params_status = my_check_params(argc, argv);
|
status = my_check_params(argc, argv);
|
||||||
|
|
||||||
// Обрабатываем результат проверки параметров
|
// Обрабатываем результат проверки параметров
|
||||||
switch (check_params_status)
|
switch (status)
|
||||||
{
|
{
|
||||||
case 1: // Режим сканирования портов (UDP)
|
case 1: // Режим сканирования портов (UDP)
|
||||||
// Пытаемся разрешить DNS (если указано доменное имя)
|
// Пытаемся разрешить DNS (если указано доменное имя)
|
||||||
|
@ -410,7 +418,8 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else if (udp_status < 0) // Обработка ошибок
|
else if (udp_status < 0) // Обработка ошибок
|
||||||
{
|
{
|
||||||
my_diag(udp_status); // Выводим диагностику
|
status = udp_status;
|
||||||
|
my_diag(); // Выводим диагностику
|
||||||
log_status = my_log(); // Пытаемся записать в лог
|
log_status = my_log(); // Пытаемся записать в лог
|
||||||
if (log_status == 1) // Если требуется уведомление
|
if (log_status == 1) // Если требуется уведомление
|
||||||
{
|
{
|
||||||
|
@ -425,7 +434,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else if (dns_status == 1) // Ошибка DNS-разрешения
|
else if (dns_status == 1) // Ошибка DNS-разрешения
|
||||||
{
|
{
|
||||||
my_diag(check_params_status); // Выводим ошибку
|
my_diag(); // Выводим ошибку
|
||||||
log_status = my_log(); // Логируем ошибку
|
log_status = my_log(); // Логируем ошибку
|
||||||
|
|
||||||
if (log_status == 0) { // Если не требуется уведомление
|
if (log_status == 0) { // Если не требуется уведомление
|
||||||
|
@ -453,7 +462,8 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else if (tcp_syn_status < 0)
|
else if (tcp_syn_status < 0)
|
||||||
{
|
{
|
||||||
my_diag(tcp_syn_status);
|
status = tcp_syn_status;
|
||||||
|
my_diag();
|
||||||
log_status = my_log();
|
log_status = my_log();
|
||||||
if (log_status == 1)
|
if (log_status == 1)
|
||||||
{
|
{
|
||||||
|
@ -467,7 +477,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else if (dns_status == 1)
|
else if (dns_status == 1)
|
||||||
{
|
{
|
||||||
my_diag(check_params_status);
|
my_diag();
|
||||||
log_status = my_log();
|
log_status = my_log();
|
||||||
if (log_status == 0)
|
if (log_status == 0)
|
||||||
{
|
{
|
||||||
|
@ -482,7 +492,7 @@ int main(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: // Некорректные параметры или запрос справки
|
default: // Некорректные параметры или запрос справки
|
||||||
my_diag(check_params_status); // Выводим диагностику
|
my_diag(); // Выводим диагностику
|
||||||
log_status = my_log(); // Логируем событие
|
log_status = my_log(); // Логируем событие
|
||||||
|
|
||||||
if (log_status == 0) // Без уведомления
|
if (log_status == 0) // Без уведомления
|
||||||
|
|
Loading…
Reference in New Issue