feat: my_tcp_syn and checksum #8

Merged
Urmipie merged 3 commits from Urmipie/dos:my_tcp_syn into my_tcp_syn 2025-04-03 00:31:41 +03:00
Collaborator

my_tcp_syn make tcp syn requests without waiting for confirmation.

my_tcp_syn make tcp syn requests without waiting for confirmation.
Urmipie added 1 commit 2025-04-02 20:51:18 +03:00
10276f9775 feat: add my_tcp_syn and checksum. modified main to codestyle
my_tcp_syn make tcp syn requests without waiting for confirmation.
Urmipie requested review from serafim 2025-04-02 21:07:46 +03:00
dr-wh0 requested changes 2025-04-02 21:43:21 +03:00
src/DosAtk.cpp Outdated
@ -358,2 +366,2 @@
// Данная процедура выполняет TCP SYN Flood атаку
return 2;
unsigned short checksum(void *data, int len) {
// считай чексумму для пакета
Collaborator

Подробнее описание

Подробнее описание
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -359,1 +366,3 @@
return 2;
unsigned short checksum(void *data, int len) {
// считай чексумму для пакета
auto *ptr = (uint16_t *)data;
Collaborator

auto нельзя. Сначала объявление (в отдельном блоке), потом - инициализация

auto нельзя. Сначала объявление (в отдельном блоке), потом - инициализация
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +376,4 @@
return (unsigned short)(~sum);
}
void my_tcp_syn() {
Collaborator

В начале каждой процедуры - развёрнутый комментарий о том, что она делает

В начале каждой процедуры - развёрнутый комментарий о том, что она делает
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +380,4 @@
// === Инициализация переменных ===
// Сетевые сокеты
int route_sock = -1; // Сокет для определения нашего IP (инициализирован -1 как индикатор ошибки)
Collaborator

Сначала объявление, потом - инициализация переменных:

// === Объявление локальных переменных ===
int route_sock;   // Сокет для определения нашего IP


// === Инициализация локальных переменных ===
route_sock = -1;  //  Сокет инициализирован -1 как индикатор ошибки

Структур это тоже касается.

Сначала объявление, потом - инициализация переменных: ``` // === Объявление локальных переменных === int route_sock; // Сокет для определения нашего IP // === Инициализация локальных переменных === route_sock = -1; // Сокет инициализирован -1 как индикатор ошибки ``` Структур это тоже касается.
Urmipie marked this conversation as resolved
@ -360,0 +410,4 @@
char packet[sizeof(iphdr) + sizeof(tcphdr)]; // Итоговый пакет для отправки
char src_ip_str[INET_ADDRSTRLEN]; // Строковое представление нашего IP
// === Основная логика функции ===
Collaborator

// === Основная логика процедуры ===

// === Основная логика процедуры ===
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +418,4 @@
// 1. Создаем временный UDP-сокет для определения нашего IP
if ((route_sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("Ошибка создания сокета для определения IP");
status = -102; // Устанавливаем глобальный статус ошибки
Collaborator

Использовать разные статус-коды для разных ошибок, описания каждого кода ошибки продублировать в комментарии в начале функции

Использовать разные статус-коды для разных ошибок, описания каждого кода ошибки продублировать в комментарии в начале функции
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +461,4 @@
// 6. Включаем режим ручного формирования IP-заголовка
setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &one, sizeof(one));
// 7. Формируем IP-заголовок
Collaborator

Перенести в инициализацию формирование заголовков (IP, TCP)

Перенести в инициализацию формирование заголовков (IP, TCP)
Urmipie marked this conversation as resolved
@ -360,0 +480,4 @@
tcp_header.syn = 1; // Устанавливаем флаг SYN (запрос соединения)
tcp_header.window = htons(5840); // Размер окна
// 9. Рассчитываем контрольную сумму TCP
Collaborator

Это по идее инициализация -> в блок инициализации

Это по идее инициализация -> в блок инициализации
Urmipie marked this conversation as resolved
Urmipie added 1 commit 2025-04-02 23:14:51 +03:00
6488a42fb6 fix: code style
moved initialisation to top of function, expanded comments
serafim requested changes 2025-04-02 23:25:11 +03:00
src/DosAtk.cpp Outdated
@ -360,0 +366,4 @@
unsigned short checksum(void *data, int len) {
// рассчёт чексуммы для пакета. получает пакет и возращает проверочную сумму
uint16_t *ptr = (uint16_t *)data;
unsigned long sum = 0;
Owner

Объявление раздельно с инициализацией

Объявление раздельно с инициализацией
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +372,4 @@
len -= 2;
}
if (len == 1) {
uint8_t *byte_ptr = (uint8_t *)ptr;
Owner

Это вынести из области видимости цикла в область видимости функции

Это вынести из области видимости цикла в область видимости функции
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +385,4 @@
/*
* Отправляет TCP SYN запрос на указанный IP и порт
*
* Глобальные переменные:
Owner

Глобальные переменные сюда не надо

Глобальные переменные сюда не надо
Urmipie marked this conversation as resolved
src/DosAtk.cpp Outdated
@ -360,0 +440,4 @@
target_port = 0;
// === Основная логика процедуры ===
target_port = htons(atoi(port.c_str()));
Owner

Это тоже инициализация

Это тоже инициализация
Urmipie marked this conversation as resolved
@ -360,0 +444,4 @@
// 1. Создание временного сокета
if ((route_sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("Ошибка создания сокета для определения IP");
Owner

Не надо принтить

Не надо принтить
Urmipie marked this conversation as resolved
dr-wh0 reviewed 2025-04-02 23:25:58 +03:00
src/DosAtk.cpp Outdated
@ -360,0 +493,4 @@
ip_header.tot_len = htons(sizeof(iphdr) + sizeof(tcphdr));
ip_header.ttl = 64;
ip_header.protocol = IPPROTO_TCP;
ip_header.saddr = src_addr.sin_addr.s_addr;
Collaborator

Свой IP не нужно передавать, мы же атаку пишем...

Свой IP не нужно передавать, мы же атаку пишем...
Urmipie marked this conversation as resolved
Urmipie added 1 commit 2025-04-03 00:00:37 +03:00
733b5b6486 fix: source IP, code style, readme
-instead of real IP packet send fake one (localhost currently)
-more stylish code style
-objectivly cooler readme
Urmipie changed title from feat: add my_tcp_syn and checksum. modified main to codestyle to feat: my_tcp_syn and checksum 2025-04-03 00:01:17 +03:00
Urmipie changed target branch from dev to my_tcp_syn 2025-04-03 00:31:20 +03:00
Urmipie merged commit 62e5c5394f into my_tcp_syn 2025-04-03 00:31:41 +03:00
Urmipie deleted branch my_tcp_syn 2025-04-03 00:31:41 +03:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: serafim/dos#8
No description provided.