The OpenNET Project / Index page

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



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

Исходное сообщение
"помогите пересчитать TCP checksum"
Отправлено tcp, 27-Сен-06 18:05 
попробовал вообще другим путём,

u_short tcp_checksum (u_short *addr, int len) {
u_short *w = addr;
int i=len;
int sum=0;
//u_short answer;
while (i > 0) {
sum += *w++;
i -= 2;
}
if (i ==1) sum +=*(u_char *)w;
sum = (sum >> 16) + (sum & 0xffff);
sum = sum + (sum >> 16);
return (~sum);
}

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 = 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));

memcpy (pseudopacket + sizeof (pseudoheader),packet + +size_ethernet + sizeof (struct ip),sizeof (struct tcphdr));
memcpy (pseudopacket + sizeof (pseudoheader) + size_tcp, packet + size_ethernet + size_ip + size_tcp, size_payload);


tcph->th_sum = 0;
tcph->th_sum = tcp_checksum ((u_short *)pseudopacket, sizeof (pseudoheader)+sizeof(struct tcphdr));

взято из http://dims.karelia.ru/~alexmou/nets_tele/lab05_raw_sockets.pdf

 

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



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

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