The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"помогите пересчитать TCP checksum"
Отправлено vic, 28-Сен-06 15:02 
>struct _pseudoheader {
>struct in_addr source_addr;
>struct in_addr destination_addr;
>u_char zero; /* зеpо */
>u_char protocol;
>u_short length;
>} pseudoheader;
>
>u_char *pseudopacket;
>
>pseudoheader.source_addr = iph->ip_src;
>pseudoheader.destination_addr = iph->ip_dst;
>pseudoheader.zero = 0;
>pseudoheader.protocol = IPPROTO_TCP;
>pseudoheader.length = htons(size_tcp + size_payload);
>
>pseudopacket = (char *)malloc(sizeof(pseudoheader) + sizeof(struct tcphdr) + size_payload);
>if ( !pseudopacket ) {
>perror ("malloc");
>exit (1);
>}

// псевдохидер
>memcpy (pseudopacket, &pseudoheader, sizeof (pseudoheader));
// сам tcp-пакет
>memcpy (pseudopacket + sizeof (pseudoheader),packet + size_ethernet + size_ip, size_tcp + size_payload);

u_short *ptr = (u_short *)(psevdopacket + sizeof(psevdoheader)); // начало пакета в псевдопакете
ptr[8] = 0; // обнулили поле checksum (смещение в октетах у поля checksum = 16, т.е. в шортах 8)

// посчитали.
>sum = tcp_checksum ((u_short *)pseudopacket, sizeof (pseudoheader)+ size_tcp + size_payload);

далее пишим куда надо.. в сетевом порядке байт...

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру