Compare commits
No commits in common. "0988f1716949724f2667bf0b73174278a65ae9a5" and "fd8c226de9c9ba1df787b154841c7d8d0d7f4d52" have entirely different histories.
0988f17169
...
fd8c226de9
113
src/DosAtk.cpp
113
src/DosAtk.cpp
|
@ -9,13 +9,6 @@
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
// ====== DCL ====== //
|
// ====== DCL ====== //
|
||||||
|
|
||||||
|
@ -29,11 +22,9 @@ std::string telegram_token;
|
||||||
int n_ok_requests;
|
int n_ok_requests;
|
||||||
int n_fail_requests;
|
int n_fail_requests;
|
||||||
std::chrono::system_clock::time_point start_timestamp;
|
std::chrono::system_clock::time_point start_timestamp;
|
||||||
|
std::string log_msg;
|
||||||
|
std::string fin_msg;
|
||||||
std::string msg;
|
std::string msg;
|
||||||
extern const char* global_ip;
|
|
||||||
extern int status;
|
|
||||||
extern int n_ok_requests;
|
|
||||||
extern int n_fail_requests;
|
|
||||||
|
|
||||||
int my_check_params(int argc, char **argv)
|
int my_check_params(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -118,90 +109,6 @@ int my_check_params(int argc, char **argv)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
int my_udp() {
|
|
||||||
int sockfd;
|
|
||||||
int port_idx;
|
|
||||||
int curr_port;
|
|
||||||
int ports_total;
|
|
||||||
int ports[14];
|
|
||||||
char dummy_data[5];
|
|
||||||
|
|
||||||
sockfd = -1; // Дескриптор сокета
|
|
||||||
struct sockaddr_in target_addr; // Адрес цели
|
|
||||||
port_idx = 0; // Текущий индекс порта
|
|
||||||
|
|
||||||
// Выполняет UDP портовое сканирование well-known портов
|
|
||||||
|
|
||||||
ports[0] = 53; // DNS
|
|
||||||
ports[1] = 67; // DHCP (сервер)
|
|
||||||
ports[2] = 68; // DHCP (клиент)
|
|
||||||
ports[3] = 69; // TFTP
|
|
||||||
ports[4] = 123; // NTP
|
|
||||||
ports[5] = 161; // SNMP
|
|
||||||
ports[6] = 162; // SNMP Trap
|
|
||||||
ports[7] = 389; // LDAP
|
|
||||||
ports[8] = 443; // HTTPS
|
|
||||||
ports[9] = 500; // IPSec
|
|
||||||
ports[10] = 514; // Syslog
|
|
||||||
ports[11] = 520; // RIP
|
|
||||||
ports[12] = 1900; // SSDP
|
|
||||||
ports[13] = 4500; // NAT-T
|
|
||||||
|
|
||||||
ports_total = sizeof(ports)/sizeof(ports[0]);
|
|
||||||
curr_port = ports[port_idx]; // Текущий порт
|
|
||||||
|
|
||||||
|
|
||||||
// Данные для отправки
|
|
||||||
// Поэлементная инициализация
|
|
||||||
dummy_data[0] = 'S';
|
|
||||||
dummy_data[1] = 'C';
|
|
||||||
dummy_data[2] = 'A';
|
|
||||||
dummy_data[3] = 'N';
|
|
||||||
dummy_data[4] = '\0'; // Обязательный терминатор строки
|
|
||||||
|
|
||||||
ssize_t send_result; // Результат отправки
|
|
||||||
|
|
||||||
// Инициализация структуры адреса
|
|
||||||
memset(&target_addr, 0, sizeof(target_addr));
|
|
||||||
target_addr.sin_family = AF_INET;
|
|
||||||
target_addr.sin_port = htons(curr_port);
|
|
||||||
|
|
||||||
// Преобразование IP
|
|
||||||
if (inet_pton(AF_INET, global_ip, &target_addr.sin_addr) <= 0) {
|
|
||||||
n_fail_requests++;
|
|
||||||
status = -501; // Код ошибки: неверный IP
|
|
||||||
if (sockfd != -1) close(sockfd);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Создание сокета
|
|
||||||
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
|
||||||
if (sockfd < 0) {
|
|
||||||
n_fail_requests++;
|
|
||||||
status = -502; // Ошибка создания сокета
|
|
||||||
if (sockfd != -1) close(sockfd);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Отправка данных
|
|
||||||
send_result = sendto(sockfd, dummy_data, sizeof(dummy_data), 0,
|
|
||||||
(struct sockaddr*)&target_addr, sizeof(target_addr));
|
|
||||||
if (send_result < 0) {
|
|
||||||
n_fail_requests++;
|
|
||||||
status = -503; // Ошибка отправки
|
|
||||||
} else {
|
|
||||||
n_ok_requests++;
|
|
||||||
status = 0; // Успешная отправка
|
|
||||||
}
|
|
||||||
|
|
||||||
// Проверка общего числа запросов
|
|
||||||
if (n_ok_requests + n_fail_requests >= 1000) {
|
|
||||||
status = 2; // Условие завершения
|
|
||||||
}
|
|
||||||
|
|
||||||
// Переход к следующему порту
|
|
||||||
port_idx = (port_idx + 1) % ports_total;
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
void my_diag(int status)
|
void my_diag(int status)
|
||||||
{
|
{
|
||||||
printf("begin my_diag (status: %i)\n", status);
|
printf("begin my_diag (status: %i)\n", status);
|
||||||
|
@ -234,15 +141,6 @@ void my_diag(int status)
|
||||||
case -600:
|
case -600:
|
||||||
printf("Error: To use telegram integration both telegram_id and telegram_token have to be provided!\n.--help for info\n");
|
printf("Error: To use telegram integration both telegram_id and telegram_token have to be provided!\n.--help for info\n");
|
||||||
break;
|
break;
|
||||||
case -501:
|
|
||||||
printf("Error: Invalid target IP address\n");
|
|
||||||
break;
|
|
||||||
case -502:
|
|
||||||
printf("Error: Failed to create UDP socket\n");
|
|
||||||
break;
|
|
||||||
case -503:
|
|
||||||
printf("Error: UDP packet send failed\n");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
printf("end my_diag\n");
|
printf("end my_diag\n");
|
||||||
}
|
}
|
||||||
|
@ -301,6 +199,11 @@ int my_tcp_syn()
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int my_udp()
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int check_params_status;
|
int check_params_status;
|
||||||
|
@ -334,7 +237,7 @@ int main(int argc, char **argv)
|
||||||
dns_status = my_dns();
|
dns_status = my_dns();
|
||||||
if (dns_status == 0)
|
if (dns_status == 0)
|
||||||
{
|
{
|
||||||
while (true)
|
while (udp_status = my_udp())
|
||||||
{
|
{
|
||||||
if (udp_status == 2)
|
if (udp_status == 2)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue