WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как socket установить в режим прослушивания?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как socket установить в режим прослушивания?
Gilbert опубликован 31-10-2001 11:46 MSK   Click Here to See the Profile for Gilbert   Click Here to Email Gilbert  
Я в книжке читал, написано сделай так:

s=socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL));

Не работает, ошибку даёт на SOCK_PACKET.Может это под *NIX?
Как мне в windows сделать прослушивающий сокет?

purpe опубликован 31-10-2001 11:52 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
чёт я не совсем понил.
вроде всегда для этого использовалась функция listen

или я всё-таки тебя не понял ? :)

purpe опубликован 31-10-2001 11:53 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
правда ента функция работает только для сокета TCP
Gilbert опубликован 31-10-2001 00:09 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
нее не то.
Я хочу сделать маленький сниффер, что бы он ловил пакеты.
Gilbert опубликован 31-10-2001 00:37 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
я прочитал, что есть два варианта как сделать сниффер:
1. это использовать какие-то там уже написанные драйверы, которые на уровне ядра работают.
2. Можно создать сокет и настроить его что бы он ловил пакеты.

Понятно что 2 вариант будет медленнее, но хотя бы такой сделать.
Может что-то я ещё не так понял?

Gilbert опубликован 31-10-2001 16:18 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
да, значит я всё таки что-то напутал...
server_mouse опубликован 31-10-2001 16:35 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Снифер перехватывает все пакеты проходящие через твою сетевуху. IMHO Работает он на уровень ниже сокетов, на транспортном уровне (модель OSI знаешь?) Если упростить, то проимерно так:
Сетевуха чего-то получает и передаёт это драйверу.
Драйвер передаёт нужному драйверу протокола через NDIS (IP например).
А драйв протокола уже сокетской DLL.

Снифер работает как NDIS.

IMHO Через сокеты написать снифер импосибл. Ну разве что подменить DLL -- но это путь для извращенцев.

Lord_DEMON опубликован 31-10-2001 16:36 MSK     Click Here to See the Profile for Lord_DEMON  Click Here to Email Lord_DEMON     
Сниффер ты сможешь написать только на UDP BroadCast пакеты, TCP пакеты ны не поймаешь, потому что они все адресные!
Для того, чтоб сниффить пакеты, тебе надо как минимум спустится ниже IP

На уровне NDIS можешь попробовать че нить написать, но разбираться долго... ковыряй MSDN

Хотя в принципе я не знаю как IP передает пакеты, если там MAC адрес учитывается, то тогда надо еще ниже копать...

Gilbert опубликован 31-10-2001 16:52 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
Понятно. А есть где-нибудь исходники сниффера или библиотека какая-нибудь под Windows? Ну например, чтобы ловила все пакеты а фильтровать уже самому?
Gilbert опубликован 31-10-2001 17:05 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
Библиотеку libpcap которая идёт вместе с tcpdump можно использовать?
server_mouse опубликован 31-10-2001 17:08 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
На сайте MS есть пример pass-through intermediate драйвера,
который ничего не делает (просто пропускает пакеты).
Точнее не скажу, поищи...
Примеры NDIS есть также и в DDK. Если собираешся NDIS ваять он тебе пригодится.
Как альтернативу, могу предложить winpcap. Там попроще всё, по придётся везде его с собой потом тягать.
server_mouse опубликован 31-10-2001 17:14 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Советую прислушатся к советам, даваемым в pcap касательно скорости обработки пропускаемого пакета. А то тоска смотреть будет, как сеть работает...
Gilbert опубликован 31-10-2001 17:25 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
а DDK это где? :)
Lord_DEMON опубликован 31-10-2001 17:44 MSK     Click Here to See the Profile for Lord_DEMON  Click Here to Email Lord_DEMON     
MSDN Library Visual Studio \ DDK Documentation\ В ПУТЬ :)
Lord_DEMON опубликован 31-10-2001 17:47 MSK     Click Here to See the Profile for Lord_DEMON  Click Here to Email Lord_DEMON     
Вопрос состоит в том, кто отсекает пакеты, предназначенные для других МАС адресов...
В принципе это работа драйвера...
Если что нить найдешь, напиши плз :)))
Для общего развития :)
server_mouse опубликован 31-10-2001 17:56 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Знаю такую штуку: ежели послать пакет юникастом на конкретый MAC, то можно удалённо загрузить машину. Ну исесно при поддержке сетевухи и биоса. А ведь машина полностью выключена, драйвера нет...
Gilbert опубликован 31-10-2001 18:46 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
хорошо, путь понятен.
При прохождении нового материала, буду задавать вопросы и писать предложения. :)))
SergeyAksuchenko опубликован 31-10-2001 19:02 MSK     Click Here to See the Profile for SergeyAksuchenko  Click Here to Email SergeyAksuchenko     
Пользуйтесь.
SOCKADDR_IN sa;
SOCKET soc;
soc = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
sa.sin_family = AF_INET;
sa.sin_port = htons(7000);
sa.sin_addr.s_addr= localhost_ip;
bind(soc,(PSOCKADDR)&sa, sizeof(sa));
WSAIoctl(soc, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);
Остальное, тот кому нужно сам додумает.
РАБОТАЕТ ТОЛЬКО ПОД WIN2000!
Gilbert опубликован 01-11-2001 06:18 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
как я понимаю под win98 ничего подобного нет?
очень бы хотелось...
Gilbert опубликован 05-11-2001 08:16 MSK     Click Here to See the Profile for Gilbert  Click Here to Email Gilbert     
что-то я не до конца въехал в функцию
WSAIoctl(soc, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);

Можно по подробней о параметрах этой функции?

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.