The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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-заголовка?
            давай где нибуть в чате пересечёмся :)




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

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