Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Должен ли RAW сокет принимать DHCP запросы клиента, recv не видит эти пакеты 
:(
    Опции темы
Black_Wolf
Дата 17.11.2008, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



Не получается принять через RAW сокет DHCP запрос клиента. Т.е. лимитированный широковещательный IP пакет с адресом отправителя 0.0.0.0. Использую RAW вместо датаграмного UDP потому что есть необходимость ливить все IP пакеты. Должен ли RAW сокет видить эти пакеты? Возможно нужно установить какие-то опции сокета?

Это сообщение отредактировал(а) Black_Wolf - 17.11.2008, 06:57
PM MAIL ICQ   Вверх
bio_hazard
Дата 17.11.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.6.2007

Репутация: нет
Всего: 1



Мне кажется через сокет вы не сомжете ловить все пакеты, сокет видит только те пакеты которые предназначены только ему. Все пакеты можно ловить напрямую на сетевом интерфейсе, и потом анализировать. 
PM MAIL   Вверх
Black_Wolf
Дата 17.11.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



bio_hazard
Что бы ловить напрямую программка готова, но хотелось бы ловить на более высоком уровне через сырые RAW, без библиотеки Winpcap или libpcap. Если перевести сетевой адаптер в неразборчивый режим, то RAW сокет позволяет ловить практически все IP пакеты, но вот почему-то DHCP запросы не хочет.
PM MAIL ICQ   Вверх
bio_hazard
Дата 17.11.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.6.2007

Репутация: нет
Всего: 1



К сожалению больше чем сказал, информации больше дать не могу.
PM MAIL   Вверх
MAKCim
Дата 17.11.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Black_Wolf, 
т. е на хосте запущен DHCP сервер, которому идут запросы с локальной сети
необходимо через RAW сокет перехватить запросы, так?



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Black_Wolf
Дата 18.11.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



MAKCim
Клиент подключен к серверу через узел посредник на котором установлена винда XP, и на котором и работает моя программа. На этом узле два сетевых адаптера, мне нужно добиться хотя бы того чтобы пакеты транслировались с одного интерфейса на другой, т.е. организовать подключение типа мост. Но именно усилиями моей программы, а не винды, т.к. моя прога в будущем должна будет в нужные моменты подменять трафик отправляемый серверу.
Прием обычных IP пакетов проходит нармально. Собственно, сложились такие технические обстоятельства, что передачу этих обычных пакетов я проверить пока не могу, но могу в полной мере проверить прием и передачу DHCP запросов клиента. Ну вот и возникла проблема, обычные и широковещательные пакеты с конкретным адресом отправителя вижу, а DHCP запросы нет. Вот я и пытаюсь понять, или опции сокета выставить какие-то нужно, или в операционной системе причина, или еще что-то.
PM MAIL ICQ   Вверх
MAKCim
Дата 18.11.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Black_Wolf, 

Цитата(Black_Wolf @  18.11.2008,  06:03 Найти цитируемый пост)
Ну вот и возникла проблема, обычные и широковещательные пакеты с конкретным адресом отправителя вижу, а DHCP запросы нет.

ну и чем по-твоему они (запросы) отличаются?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Black_Wolf
Дата 18.11.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



MAKCim
Тем что в запросах клиента (например, DHCPDISCOVER) IP адрес отправителя заполняеться нулями.

Пока решал одну проблему медленно всплыла другая. На Windows Vista отправка пакетов по sendto работает, на XP SP2 sendto дает ошибку 10004

Из msdn
Цитата

WSAEINTR
Interrupted function call. 
A blocking operation was interrupted by a call to WSACancelBlockingCall.


На форумах читал что в SP2 якобы отправка пакетов raw сокетами с ручным формированием IP заголовка запрещена, и в результате возникает ошибка 10004 при вызове sendto.
PM MAIL ICQ   Вверх
Black_Wolf
Дата 18.11.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



MAKCim
Если сильно упростить мою проблему, то можно представить так.
Два узла соеденены между собой по Ethernet напрямую. На первом узле установлена ОС Windows XP SP2 и запущена моя прога, на втором узле ОС допустим Windows, Linux или FreeBSD. На первом узле сетевому адаптеру присвоен статический IP, на втором узле сетевой адаптер настроен на DHCP. Запускаем мою прогу на первом узле и слушаем единственный  интерфейс. Перезагружаем второй узел. При загрузке второго узла мы должны увидеть его DHCP запросы DHCPDISCOVER на первом узле.
Или у меня руки кривые или ОС так настроена на первом узле, но я их не вижу. Пока склоняюсь к первому варианту. smile 
PM MAIL ICQ   Вверх
Black_Wolf
Дата 18.11.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.6.2007
Где: Свердловская обла сть

Репутация: нет
Всего: нет



Интересная статья по этому поводу
http://www.xakep.ru/magazine/xa/109/050/1.asp

И
http://technet.microsoft.com/en-us/library...57156.aspx#EHAA

Цитата

  Detailed description

A very small number of Windows applications make use of raw IP sockets, which provide an industry-standard way for applications to create TCP/IP packets with fewer integrity and security checks by the TCP/IP stack. The Windows implementation of TCP/IP still supports receiving traffic on raw IP sockets. However, the ability to send traffic over raw sockets has been restricted in two ways:

    *  TCP data cannot be sent over raw sockets.
    *  UDP datagrams with invalid source addresses cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped.


 smile  smile 
На XP SP2 выход один: Использовать Winpcap


Это сообщение отредактировал(а) Black_Wolf - 18.11.2008, 14:09
PM MAIL ICQ   Вверх
MAKCim
Дата 18.11.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Black_Wolf, 
ну как бы внешний IP (адрес отправителя) проверяется только в случае если он был определен через connect()



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.