NDIS драйвер для снифера трафика

Тема в разделе "WASM.BEGINNERS", создана пользователем Dmitry_177, 2 июн 2007.

  1. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    При изучении NDIS что-то я запутался.. Для снифера трафика нужно создавать драйвер протокола, и при проходе через него пакета делать копию пакета и работать уже с копией или нужно создавать драйвер минипорта, и при прохоже через него пакета делать копию пакета и пересылать пакет дальше по цепочке драйверов? Или нужно создавать драйвер протокола и драйвер минипорта?
     
  2. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    Предположительно имеется в виду драйвер NDIS IM (intermediate).

    Как следует из названия он вклинивается между драйвером протокола и минипорта, это должно происходить прозрачно для обоих. Таким образом для протокола он реализует интерфейс минипорта, а для драйвера минипорта интерфейс протокола. Это лучше созерцать на картинках (последняя) : http://msdn2.microsoft.com/en-us/library/ms800889.aspx

    Драйвер один но реализует несколько наборов интерфейсов.
     
  3. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Я как понимаю нужно работать с драйвером протокола и мипорта, т.к. это для того, что когда мой драйвер встанет между драйвером сетевой карты и драйвером TDI, т.е. промежуточным будет, чтобы не нарушить связь между ними.. Заглянув в исходники WinPCap, я не увидел там работы с минипортом, только с провайдером.. Вобщем странно как-то это..

    Поизучав NDIS, я понял что перехватить можно пакет, по заголовку пакета можно узнать IP, порт, данные, протокол и др., но какая программа этот пакет послала или должна принять узнать ИМХО в NDIS нельзя.. Для этого лучше работать с TDI.. Прав ли я?

    Вот к примеру.. Если нужно перехватывать сообщения аськи. То в данных перехваченного пакета будет FLAP пакет аськи.. Но нам же нужно же как-то узнать, что перехваченный пакет принадлежит именно аське или qip-у, а не еще какой-то программе, иначе в данных будет не FLAP пакет а совсем другое..
     
  4. sxd

    sxd Виталий

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    56
    Адрес:
    Москва
    Dmitry_177
    Вот посмотри здесь выложен пример использования библиотеки WinPcap для создания простенького сетевого сниффера:
    http://www.codeproject.com/csharp/pktcap.asp

    А вот здесь пример перехвата пакетов всей сети и перевод сетевой карты в прослушивающий режим (PromiscuousMode):
    http://www.codeproject.com/csharp/sendrawpacket.asp

    Пользуйся на здоровье....
     
  5. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Просто набор байтов... А какой программе он адресован не понятно..
     
  6. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    мне же нужны аськины FLAP пакеты
     
  7. sxd

    sxd Виталий

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    56
    Адрес:
    Москва
    Разница в TDI и NDIS
    TDI - использует существующий стек TCP/IP
    NDIS - надо писать свой стек TCP/IP
     
  8. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    Dmitry_177 да ты прав, для того что бы знать процесс посылающий пакеты нужно использовать TDI драйвер.
     
  9. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Но с другой стороны клонов аськи тоже очень много.. Так что узнавать процесс я думаю мало чем поможет, если я к примеру буду сидеть на самодельной аське, назвав ее как-нибудь SuperICQ =) Как тогда лучше определять что это аськины пакеты? Может по порту?
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а в пакетах не содержится сигнатура?
     
  11. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    n0name например какая?
     
  12. OFFSIDE

    OFFSIDE New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    106
    Dmitry_177

    AIM messaging.
     
  13. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Т.е. это аськины FLAP-пакеты? Они всегда начинаются с 0x2A.. На это и смотреть?
     
  14. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    А еще ведь FLAP-пакет может в нескольких пакетах придти.. В первом будет "0x2A", а в следующих пока не придет весь FLAP-пакет уже не будет.. Вот как можно определить что следующие пакеты это продолжение текущего FLAP-пакета?
     
  15. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    WORD.B xx xx SEQUENCE The FLAP sequence number. It is chosen at random before every connection and increased with every packet. This number is positive; wrap to zero when it becomes negative.

    http://www.micq.org/ICQ-OSCAR-Protocol-v7-v8-v9/Packets/Basic-FLAP.html

    Но это уже относиться к деталям реализации FLAP. Если такой темы ещё нет, то я бы предложил создать новую (наверное было бы интересно покурить).