LINUX.ORG.RU

RAW socket - sending TCP-packet


0

0

Уважаемые Аналитики ЛОРа! Пытаюсь написать программку для работы с RAW-сокетами, заполняю структуры tcphdr и iphdr,

iph = (struct iphdr *)pack; tcph = (struct tcphdr *)iph + sizeof(struct iphdr);

iph->version = 4; iph->ihl = 5; iph->tos = 0; iph->id = htons(MARK); iph->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr); iph->protocol = 6; iph->saddr = spoofip; iph->daddr = targetip; iph->ttl = 128; iph->check = 0; iph->frag_off = 0;

tcph->source = BIND; tcph->dest = addr.sin_port; tcph->seq = seq; tcph->ack_seq = 0; tcph->res1 = 3; tcph->res2 = 1; tcph->doff = 6;

tcph->syn = 1; tcph->fin = 0; tcph->rst = 0; tcph->ack = 0; tcph->psh = 0; tcph->urg = 0;

tcph->window = htons(wind); tcph->check = 0; tcph->urg_ptr = 0;

отправляю пакет, и смотрю tcpdump'ом:

tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes 10:07:51.363152 IP (tos 0x0, ttl 128, id 20692, offset 0, flags [none], proto: TCP (6), length: 44) 0day..0 > 0day..0: tcp 24 [bad hdr length 0 - too short, < 20]

В чем ошибочка?

anonymous

СОРРИ! Вот:
Уважаемые Аналитики ЛОРа! Пытаюсь написать программку для работы с RAW-сокетами, заполняю структуры tcphdr и iphdr,


	
	iph = (struct iphdr *)pack;
	tcph = (struct tcphdr *)iph + sizeof(struct iphdr);

	iph->version = 4;
	iph->ihl = 5;
	iph->tos = 0;
	iph->id = htons(MARK);
	iph->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr);
	iph->protocol = 6;
	iph->saddr = spoofip;
	iph->daddr = targetip;
	iph->ttl = 128;
	iph->check = 0;
	iph->frag_off = 0;

	tcph->source = BIND;
	tcph->dest = addr.sin_port;
	tcph->seq = seq;
	tcph->ack_seq = 0;
	tcph->res1 = 3;
	tcph->res2 = 1;
	tcph->doff = 6;

	tcph->syn = 1;
	tcph->fin = 0;
	tcph->rst = 0;
	tcph->ack = 0;
	tcph->psh = 0;
	tcph->urg = 0;

	tcph->window = htons(wind);
	tcph->check = 0;
	tcph->urg_ptr = 0;

 отправляю пакет, и смотрю tcpdump'ом:

tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
10:07:51.363152 IP (tos 0x0, ttl 128, id 20692, offset 0, flags [none], proto: TCP (6), length: 44) 0day..0 > 0day..0:  tcp 24 [bad hdr length 0 - too short, < 20]

В чем ошибочка? 

anonymous
()
Ответ на: комментарий от anonymous

для вас наверное новость что все поля в заговке
пакета должны быть в network order ?

так же у вас одна грубая ошибка в коде


йуная@кошечга.

int_0dh
()
Ответ на: комментарий от int_0dh

> так же у вас одна грубая ошибка в коде

Вот эта?

tcph = (struct tcphdr *)iph + sizeof(struct iphdr);

По-моему все через это проходят :)

BreadFan ★★
()
Ответ на: комментарий от int_0dh

Спасибо, уважаемые аналитики!

anonymous
()
Ответ на: комментарий от anonymous

>iph->saddr = spoofip;

ДоС бота что ли пишешь? =)

ref
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.