syn на RAW_SOCK

Discussion in 'WASM.NETWORKS' started by netw0rm, Jan 27, 2006.

  1. netw0rm

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    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 Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Ты бы лучше показал как именно ты создаешь пакет (кодом). Именя полей проще понять, чем набор цифр (который надо вдобавок поместить в анализатор трафика) .
     
  3. netw0rm

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    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 Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Ну вроде Заголовок верный ...

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



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

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



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

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    78
    Вот блина :/ А как ваще тогда syn отправить? :)
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Сделать сокет SOCKET_STREAM /

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

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    78


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

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    78
    А можно спросить что у тя за снифер такой красивый а то мой EtherSnoop не все поля обзывает.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    :)

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



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

    asmasm New Member

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    с SOCK_RAW идет только IPPROTO_IP и IPPROTO_ICMP, сам прогу писал узнал про этот облом, без kernel наверно не обойтись, или есть еще какой-нибудь способ?
     
  11. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Что именно ты хочешь сделать ?? послать пакет 1 или создать полноценное соединение ? С помощью сырых сокетов у тебя TCP соединение не выйдет никогда. (если конечно ты не собираешься переделывать реализацию)
     
  12. asmasm

    asmasm New Member

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    А через драйвер сетевой платы разве это сделать невозможно?
     
  13. netw0rm

    netw0rm New Member

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    78
    Мне надо послать 1 пакет SYN и всё.
     
  14. asmasm

    asmasm New Member

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    Пиши для Linux таких кажется таких ограничений нет.
     
  15. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Блин, да при чем тут ограничения ?

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

    asmasm New Member

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    Понятно, значит кроме тебя самого тебе ничто не поможет создать TCP соединение?
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    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

    Blog Posts:
    0
    Joined:
    Nov 6, 2005
    Messages:
    78
    Кстати я так пробывал и у мя провалилось
     
  19. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    у меня работает .. если надо скину исходник на мыло
     
  20. asmasm

    asmasm New Member

    Blog Posts:
    0
    Joined:
    Jan 16, 2006
    Messages:
    69
    Location:
    Uzbekistan
    Если правда работает, скинь пожалуйста на asmangag@list.ru.