syn на RAW_SOCK

Тема в разделе "WASM.NETWORKS", создана пользователем netw0rm, 27 янв 2006.

  1. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Проблема. Создаю сокет invoke socket, AF_INET, SOCK_RAW, IPPROTO_TCP. Собираю TCP пакет, перед отправкой имеет вид

    04 00 00 50 07 AA 50 4D 00 00 00 00 70 02 40 00 F3 B5 00 00 02 04 05 B4 01 01 04 02

    После исполнения send_to с данным пакетом получаю ошибку WSAEAFNOSUPPORT (0000273F)
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ты бы лучше показал как именно ты создаешь пакет (кодом). Именя полей проще понять, чем набор цифр (который надо вдобавок поместить в анализатор трафика) .
     
  3. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Я сомневаюсь что мой код тебе поможет ибо я помеща примерно так: mov word ptr [edi+2], ax

    А по полям ща разложу:

    04 00 - порт отправителя

    00 50 - получателя

    07 AA 50 4D - Sequence number (random)

    00 00 00 00 - Acnowledgment

    70 - size of head

    02 - flag SYN

    40 00 - Window

    F3 B5 - chek sum

    00 00 - Urgent point

    02 04 05 B4 01 01 04 02 - option data
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ну вроде Заголовок верный ...

    (см картинку.. на чексумму не смотри - я просто вставил твой заголовок TCP в рандомный IP пакет )



    Может быть проблема не в содержимом TCP Header ..

    так как эта ошибка обычно означает что семейство адресов не поддерживается семейством портов. Если я не ошибаюсь RAW не могут быть TCP :)



    [​IMG] _1577850460__пакет.JPG
     
  5. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Вот блина :/ А как ваще тогда syn отправить? :)
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Сделать сокет SOCKET_STREAM /

    либо самому собрать пакет (заполняя все заголовки Ethernet , IP, TCP (а может и больше в зависимости от архитектуры сети)) и послать его как есть.
     
  7. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78


    Вот это правильно. Взять и послать :) SOCKET_STREAM пошлёт не тока SYN но ещё и ACK...
     
  8. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    А можно спросить что у тя за снифер такой красивый а то мой EtherSnoop не все поля обзывает.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    :)

    ПО поводу послать.. посмотри статью мою. Я собираю пакет по частям. Вот и ты таким же образом собери SYN пакет. И пошли. (толку от этого в TCP соединении все равно не будет



    А сниффер всеми любимый Ethereal
     
  10. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    с SOCK_RAW идет только IPPROTO_IP и IPPROTO_ICMP, сам прогу писал узнал про этот облом, без kernel наверно не обойтись, или есть еще какой-нибудь способ?
     
  11. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Что именно ты хочешь сделать ?? послать пакет 1 или создать полноценное соединение ? С помощью сырых сокетов у тебя TCP соединение не выйдет никогда. (если конечно ты не собираешься переделывать реализацию)
     
  12. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    А через драйвер сетевой платы разве это сделать невозможно?
     
  13. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Мне надо послать 1 пакет SYN и всё.
     
  14. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Пиши для Linux таких кажется таких ограничений нет.
     
  15. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Блин, да при чем тут ограничения ?

    Просто сама реализация RAW сокетов не позволяет создавать TCP соединение.
     
  16. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Понятно, значит кроме тебя самого тебе ничто не поможет создать TCP соединение?
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Пардон ребят, я был не прав. Подумал немного, проверил и понял, что можно послать TCP пакет средствами RAW socket.



    Необходимо создать сокет так

    s = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW,NULL,0,0);

    а так же сделать setsockopt(s, IPPROTO_IP, IP_HDRINCL,..);

    Тогда все будет работать.



    Но в некоторых случаях это работать не будет. Например, если сеть построена на архитектуре PPPoE.
     
  18. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Кстати я так пробывал и у мя провалилось
     
  19. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    у меня работает .. если надо скину исходник на мыло
     
  20. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Если правда работает, скинь пожалуйста на asmangag@list.ru.