На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (4) 1 2 [3] 4  все  ( Перейти к последнему сообщению )  
    > Перехват пакетов локальной сети
      ViGOur
      Было бы интересно оооччень :o
      Что то у меня какое-то внутреннее чувство, что какая-то клизма здесь есть, и четко детерминированная, неужели только winpcap на уровне NDIS? Почему :wall:
      Сообщение отредактировано: Oleg2004 -
        Цитата ViGOur @
        мы как-то по этому поводу с Uncle_Bob'ом говорили...

        Не, там было другое - ты говорил, что на W95 нет второго винсока, а я тебе ссылку на апдейт дал.
          Каюсь перепутал! :whistle:
          Но запомнил с точностью до x. :)
            Значит облом с таким способом перехвата пакетов сети в Windows 9x?
              Цитата progr @
              Значит облом с таким способом перехвата пакетов сети в Windows 9x?

              WinPCap отменно работает под WIn9x! Даже модем слушал :D
                progr
                Я тоже сожалею :wacko:
                Но обещаю - в идеологии, почему нельзя, я разберусь - если кто другой не поможет - в ближайшее время. Ведь по идее должно все работать <_<
                  Насколько мне известно Win98 не поддерживает io_ctrl recv_all и поэтому RAW socket на ней не работает :yes:
                    Я еще раз посмотрел в MSDN.
                    SIO_RCVALL
                    Enables a socket to receive all IP packets on the network. The socket handle passed to the WSAIoctl function must be of AF_INET address family, SOCK_RAW socket type, and IPPROTO_IP protocol. The socket also must be bound to an explicit local interface, which means that you cannot bind to INADDR_ANY.
                    Вроде все ОК, но дальше:
                    Once the socket is bound and the ioctl set, calls to the WSARecv or recv functions return IP datagrams passing through the given interface. Note that you must supply a sufficiently large buffer. Setting this ioctl requires Administrator privilege on the local computer. SIO_RCVALL is available in Windows 2000 and later versions of Windows.

                    Читаем дальше:
                    Some IOCTL codes require additional header files. For example, use of the SIO_RCVALL IOCTL requires the Mstcpip.h header file.
                    Requirements
                    Client Requires Windows XP, Windows 2000 Professional, Windows NT Workstation 3.51 and later, Windows Me, Windows 98, or Windows 95.
                    Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 3.51 and later.
                    Header
                    Declared in Winsock2.h.
                    Library
                    Link to Ws2_32.lib.
                    DLL Requires Ws2_32.dll.
                    Вот и пойми, чем это 98-ой отличается от 2000? Требования то одни и теже для клиента??? Ну может хедера Mstcpip.h нет в 98, так его можно поставить!
                    Непонятки :wacko:
                      А как с помощью RAW сокетов перехватывать IPX пакеты?
                        progr
                        Для этого естественно должен быть установлен стек IPX/SPX
                        Функция сокета должна содержать адресную константу AF_IPX
                        Для стека IPX/SPX структура IPX-сокета выглядит так:
                        ExpandedWrap disabled
                          struct sockaddr_ipx
                          {
                              short sa_family;        /* Семейство AF_IPX */
                              char  sa_netnum[4];         /* Номер сети */
                              char  sa_nodenum[6];    /* Номер узла */
                              unsigned short sa_socket;
                          }

                        В остальном вроде все как и для TCP/IP
                        Вот здесь все расписано
                        Сообщение отредактировано: Oleg2004 -
                          Я пишу: SOCKET ipx_socket=socket(PF_IPX,SOCK_RAW,NSPROTO_IPX)
                          и ioctlsocket(ipx_socket,SIO_RCVALL,&flag) возвращает -1
                            progr
                            -1 в общем ни о чем не говорит, надо ставить WSAGetLastError, чтобы увидеть код ошибки.
                            А вы продолжаете все это на win98?
                              Нет, на XP
                                Цитата Oleg2004 @
                                Вот и пойми, чем это 98-ой отличается от 2000? Требования то одни и теже для клиента??? Ну может хедера Mstcpip.h нет в 98, так его можно поставить!
                                Непонятки

                                Имеется в виду, что сама функция доступна в 9x линейке. Разумеется, с оговорками, указанными напротив каждого параметра.
                                  WSAGetLastError для ioctlsocket выдает WSAENOTSOCK (Socket operation on non-socket). Кстати, для bind WSAGetLastError тоже выдает WSAENOTSOCK.
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (4) 1 2 [3] 4  все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0609 ]   [ 16 queries used ]   [ Generated: 27.04.24, 03:35 GMT ]