![]() |
|
Модераторы: feodorv |
![]()
|
|
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
Не получается принять через RAW сокет DHCP запрос клиента. Т.е. лимитированный широковещательный IP пакет с адресом отправителя 0.0.0.0. Использую RAW вместо датаграмного UDP потому что есть необходимость ливить все IP пакеты. Должен ли RAW сокет видить эти пакеты? Возможно нужно установить какие-то опции сокета?
Это сообщение отредактировал(а) Black_Wolf - 17.11.2008, 06:57 |
|||
|
||||
| bio_hazard |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.6.2007 Репутация: нет Всего: 1 |
Мне кажется через сокет вы не сомжете ловить все пакеты, сокет видит только те пакеты которые предназначены только ему. Все пакеты можно ловить напрямую на сетевом интерфейсе, и потом анализировать.
|
|||
|
||||
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
bio_hazard
Что бы ловить напрямую программка готова, но хотелось бы ловить на более высоком уровне через сырые RAW, без библиотеки Winpcap или libpcap. Если перевести сетевой адаптер в неразборчивый режим, то RAW сокет позволяет ловить практически все IP пакеты, но вот почему-то DHCP запросы не хочет. |
|||
|
||||
| bio_hazard |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.6.2007 Репутация: нет Всего: 1 |
К сожалению больше чем сказал, информации больше дать не могу.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
Black_Wolf,
т. е на хосте запущен DHCP сервер, которому идут запросы с локальной сети необходимо через RAW сокет перехватить запросы, так? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
MAKCim
Клиент подключен к серверу через узел посредник на котором установлена винда XP, и на котором и работает моя программа. На этом узле два сетевых адаптера, мне нужно добиться хотя бы того чтобы пакеты транслировались с одного интерфейса на другой, т.е. организовать подключение типа мост. Но именно усилиями моей программы, а не винды, т.к. моя прога в будущем должна будет в нужные моменты подменять трафик отправляемый серверу. Прием обычных IP пакетов проходит нармально. Собственно, сложились такие технические обстоятельства, что передачу этих обычных пакетов я проверить пока не могу, но могу в полной мере проверить прием и передачу DHCP запросов клиента. Ну вот и возникла проблема, обычные и широковещательные пакеты с конкретным адресом отправителя вижу, а DHCP запросы нет. Вот я и пытаюсь понять, или опции сокета выставить какие-то нужно, или в операционной системе причина, или еще что-то. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
Black_Wolf,
ну и чем по-твоему они (запросы) отличаются? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
MAKCim
Тем что в запросах клиента (например, DHCPDISCOVER) IP адрес отправителя заполняеться нулями. Пока решал одну проблему медленно всплыла другая. На Windows Vista отправка пакетов по sendto работает, на XP SP2 sendto дает ошибку 10004 Из msdn
На форумах читал что в SP2 якобы отправка пакетов raw сокетами с ручным формированием IP заголовка запрещена, и в результате возникает ошибка 10004 при вызове sendto. |
|||
|
||||
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
MAKCim
Если сильно упростить мою проблему, то можно представить так. Два узла соеденены между собой по Ethernet напрямую. На первом узле установлена ОС Windows XP SP2 и запущена моя прога, на втором узле ОС допустим Windows, Linux или FreeBSD. На первом узле сетевому адаптеру присвоен статический IP, на втором узле сетевой адаптер настроен на DHCP. Запускаем мою прогу на первом узле и слушаем единственный интерфейс. Перезагружаем второй узел. При загрузке второго узла мы должны увидеть его DHCP запросы DHCPDISCOVER на первом узле. Или у меня руки кривые или ОС так настроена на первом узле, но я их не вижу. Пока склоняюсь к первому варианту. |
|||
|
||||
| Black_Wolf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.6.2007 Где: Свердловская обла сть Репутация: нет Всего: нет |
Интересная статья по этому поводу
http://www.xakep.ru/magazine/xa/109/050/1.asp И http://technet.microsoft.com/en-us/library...57156.aspx#EHAA
На XP SP2 выход один: Использовать Winpcap Это сообщение отредактировал(а) Black_Wolf - 18.11.2008, 14:09 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
Black_Wolf,
ну как бы внешний IP (адрес отправителя) проверяется только в случае если он был определен через connect() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |