NDIS IM драйвер и модем (WAN), помогите

Тема в разделе "WASM.NT.KERNEL", создана пользователем ntcdm, 19 май 2007.

  1. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Приветствую, All!

    Есть NDIS Intermediate Driver (обычный passthru из примеров, немного доработанный для сниффанья пакетов). Возникла проблема с тем, что драйвер видит все модемные WAN подключения как один адаптер NDISWANIP, но мне нужно идентифицировать конкретное модемное WAN подключение, а точнее его айпишник в процессе работы. Для получения IP-адресов адапетров я использую функцию GetAdaptersInfo из юзермода, а затем, сравнивая мак-адреса, полученные из драйвера с мак-адресами, полученными из GetAdaptersInfo нахожу айпишник адаптера.

    Такой подход работает с Ethernet-адаптерами, но не с модемными подключениями.

    Функция GetAdaptersInfo вообще не видит модемных подключений, пока они не установлены, а если подключение установлено, то его мак-адрес не совпадает с мак-адресом, полученным из драйвера.

    Почитавши MSDN и погугливши, я понял что NDISWANIP это сборная для всех модемных подключений, при этом различить одно подключение от другого можно по мак-адресам в пакетах, которые они шлют. Но больше никакой информации об этом нет.

    Я вижу 2 пути решения задачи:
    1. Изначально енумить все модемные подключения, которые зарегистрированы в системе и выяснять их мак-адреса, если это возможно.


    2. Получать какое-то уведомление от системы (не важно, в кернел моде или в юзер моде), что установлено или разорвано модемное соединение. После этого уже вызывать GetAdaptersInfo.

    Но мне нужно использовать оба эти метода в иделе, чтобы юзер мог выбрать например модемное соединение, не подключенное изначально, а затем программа ждет установки этого соединения и уже сниффает трафик по нему.

    Что можете посоветовать по данному вопросу? Как идентифицировать модемные соедниения?
     
  2. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Апдейт: В кернел-моде нашел статус-коды NDIS_STATUS_WAN_LINE_UP и
    NDIS_STATUS_WAN_LINE_DOWN а также структуры NDIS_MAC_LINE_UP NDIS_MAC_LINE_DOWN, которые передаються в мой обработчик ProtocolStatus. Теперь коннект/дисконнект модема я отловить могу:) Но, остается вопрос как из этих структур вытащить мак-адрес, от которого этот модем будет слать пакеты?

    также нашел функции RasEnumConnections и RasEnumEntries (в юзермоде), но иноформации они дают очень мало :dntknw:

    Что посоветуете ?
     
  3. vlaman

    vlaman New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    49
    мак адреса зарыты в структурах, которые майкрософт не документирует, плюс они меняются от винды к винде (я смотрел в исходниках NT4, конкретно в NDISWAN драйвере, в XP эти структуры вообще не те уже).
     
  4. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    В документации упоминаются структуры NDIS_MAC_LINE_UP и NDIS_WAN_LINE_UP и написано что он передаются при вызове статуса NDIS_STATUS_WAN_LINE_UP. Так где правда? В структуре NDIS_WAN_LINE_UP уже есть мак-адрес псевдосетевухи, но как его увязать с модемным соединением, не понятно :dntknw:
     
  5. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    А где бы это и мне глянуть исходники ? :) Это бы многое прояснило.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    поиск по форуму. Great вроде выкладывал куда-то.
     
  7. vlaman

    vlaman New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    49
    в edonkey ищи winnt source или чтото в этом роде, легко скачивается, архив мегабайт на 200 гдето.
     
  8. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    А где именно в том сорсе копать? модулей NDIS я там вообще не вижу (сорри за тупость)
     
  9. vlaman

    vlaman New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    49
    nt4/private/ntos/ndis/ndiswan
    если чё могу выложить кудато
     
  10. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Ой, я кажется в сорсах 2000 смотрел. Можешь выложить или дать ссылку где сорсы NT4 вылить ? Заранее благодарен.
     
  11. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Линк на сорцы запрещен как варез.