raw_socket, kingo, 18-Сен-06, 12:07 [смотреть все]пытаюсь отправить пакет через raw socket вот типа пакет, но я не могу понять куда писать данные для отправки? данные это payload iph->ip_hl = 5; iph->ip_v = 4; iph->ip_tos = 0; iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); iph->ip_id = htonl (54321); /* the value doesn't matter here */ iph->ip_off = 0; iph->ip_ttl = 255; iph->ip_p = 6; iph->ip_sum = 0; /* set it to 0 before computing the actual checksum later */ iph->ip_src.s_addr = inet_addr ("1.2.3.4");/* SYN's can be blindly spoofed */ iph->ip_dst.s_addr = sin.sin_addr.s_addr; tcph->th_sport = htons (1234); /* arbitrary port */ tcph->th_dport = htons (P); tcph->th_seq = random ();/* in a SYN packet, the sequence is a random */ tcph->th_ack = 0;/* number, and the ack sequence is 0 in the 1st packet */ tcph->th_x2 = 0; tcph->th_off = 0; /* first and only tcp segment */ tcph->th_flags = TH_SYN; /* initial connection request */ tcph->th_win = htonl (65535); /* maximum allowed window size */ tcph->th_sum = 0;/* if you set a checksum to zero, your kernel's IP stack should fill in the correct checksum during transmission */ tcph->th_urp = 0; |
- raw_socket, vic, 14:36 , 18-Сен-06 (1)
>пытаюсь отправить пакет через raw socket >вот типа пакет, но я не могу понять куда писать данные для >отправки? попробуйте в сокет :)в syn-пакете данные могут передаваться, но обычно нихто этого не делает. Только в TTCP. > iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); где тут место для данных?
- raw_socket, kingo, 15:38 , 18-Сен-06 (2)
>> iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); >где тут место для данных? а как мне написать чтобы данные тоже отправлялись?
- raw_socket, vic, 16:51 , 18-Сен-06 (3)
>>> iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); >>где тут место для данных? > >а как мне написать чтобы данные тоже отправлялись? чтобы эмулировать TCP-протокол, надо сначала его изучить, например прочесть соответствующие RFC, затем изучить сетевое программирование с помощью сокетов (Стивенс. Сетевое Программирование - библия), и только после этого браться за raw socket.
- raw_socket, vic, 16:54 , 18-Сен-06 (4)
>>>> iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); >>>где тут место для данных? >> >>а как мне написать чтобы данные тоже отправлялись? >Кстати, а как насчет mac-заголовка?
- raw_socket, kingo, 17:11 , 18-Сен-06 (5)
> >Кстати, а как насчет mac-заголовка? он форумируется ядром
- raw_socket, vic, 17:41 , 18-Сен-06 (7)
>> >>Кстати, а как насчет mac-заголовка? > > >он форумируется ядром не факт. Зависит от способа открытия сокета и bind'а. Экстремалы сами формируют mac ;)
- raw_socket, kingo, 17:54 , 18-Сен-06 (8)
>>> >>>Кстати, а как насчет mac-заголовка? >> >> >>он форумируется ядром > >не факт. >Зависит от способа открытия сокета и bind'а. Экстремалы сами формируют mac ;) > bind'a там нету, используется сырой сокет
- raw_socket, vic, 18:12 , 18-Сен-06 (9)
>>>> >>>>Кстати, а как насчет mac-заголовка? >>> >>> >>>он форумируется ядром >> >>не факт. >>Зависит от способа открытия сокета и bind'а. Экстремалы сами формируют mac ;) >> >bind'a там нету, используется сырой сокет У функции socket три параметра :) От них зависит на какую глубину опускаемся в стеке. В конце концов надо же кому-то определять в какой интерфейс писать фрейм с IP пакетом (lo, eth0, eth1.. и т.д.) В одном случае бинд нужен, в другом нет. Я ж не знаю какие у вас параметры выставлены :)
- raw_socket, kingo, 12:11 , 19-Сен-06 (10)
>У функции socket три параметра :) От них зависит на какую глубину >опускаемся в стеке. В конце концов надо же кому-то определять в >какой интерфейс писать фрейм с IP пакетом (lo, eth0, eth1.. и >т.д.) > >В одном случае бинд нужен, в другом нет. Я ж не знаю >какие у вас параметры выставлены :) давай пересечёмся в чате в каком нибуть :) спасибо за помощь
- raw_socket, kingo, 17:27 , 18-Сен-06 (6)
>>>>> iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); >>>>где тут место для данных? >>> >>>а как мне написать чтобы данные тоже отправлялись? >> > >Кстати, а как насчет mac-заголовка? давай где нибуть в чате пересечёмся :)
|