Извечный вопрос: NDIS или TDI?

Тема в разделе "WASM.NT.KERNEL", создана пользователем JustAGuest, 21 дек 2009.

  1. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Доброго времени суток, господа!

    Помогите, пожалуйста, определиться что выбрать NDIS или TDI для драйвера для простого контент-фильтра.
    В функции фильтра будут входить стандартные для этого класса программ:
    - слежение за всеми Интернет-подключениями (LAN, Dial-Up, etc);
    - возможность узнать имя процесса владельца перехваченного пакета;
    - возможность не только дропать, но и изменять содержимое пакетов (с изменением длины пакета как в плюс, так и в минус);
    - обмен данными между драйвером и юзерлендом;
    - корректное ожидание драйвером решения юзерской управляющей софтины (время ожидания не определено и не лимитировано).

    Какой тип драйвера подошел бы для этих целей лучше?
    Если это возможно, не плохо было бы заиметь пример подобного драйвера...

    Заранее всем очень благодарен!
     
  2. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Да, забыл еще один важный пункт: хотелось бы иметь поддержку в как можно большем количестве Виндов...
    Хотя я понимаю, что для всех Виндов, одного типа драйверов будет недостаточно. Потому, прошу сориентировать для каких версий ОС какой лучше подойдет тип драйвера?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ответ прост так же, как и вопрос. Если тебе нужно сниффать/модифицировать протоколы сеансового уровня и выше, то удобнее и проще TDI фильтр. Если тебе нужно отслеживать протоколы транспортного/сетевого/канального уровня, то удобнее хукать NDIS.

    JustAGuest
    Насколько я помню, с висты TDI не используется.

    Без разницы, если корректно реализовать.
     
  4. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Т.е. для Висты и выше уже пойдет другой механизм: NDIS или они там что-то свое выдумали?

    ЗЫ. Насчет протоколов: достаточно TCP/IP && UDP, остальное буду рассматривать как приятный и полезный бонус
     
  5. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Да, под NDIS, я имею ввиду NDIS IM
     
  6. C2H5OH

    C2H5OH New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    42
    Только TDI.
    Используются, хотя в MSDN утверждается обратное, их поддержка осталась из соображений совместимости.
    А в целом, ответ, как и сказал Great
     
  7. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Хм, выходит небольшое противоречие.
    Если следовать указаниям Микрософта, то TDI в Висте юзать - моветон, верно?
    А как же тогда получать имя процесса (или хоть что-то, через что на имя можно будет выйти) если идти по пути NDIS IM?
    Данная информация будет важна только в юзермоде.
     
  8. C2H5OH

    C2H5OH New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    42
    Начиная с Vista, вместо TDI MS ввела сетевые интерфейсы NMR и Kernel Socket, http://wasm.ru/article.php?article=npi_subvert тебе в помощь
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Это для клиентов, для фильтров WFP.

    Забыл дать ссылки на официальную документацию.
     
  10. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Да, для фильтрации в Windows Vista рекомендуется использоваться Windows Filtering Platform (WFP).
     
  11. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    TDI однозначно, работать будет на всех версиях Windows.

    Можно посмотреть на tdi_fw, но мне лично не очень нравится это поделие. Я бы посоветовал изучать с нуля по документации и по тому, что пишут на форумах. Ну и здесь можно будет задавать вопросы по ходу дела, что смогу отвечу, опыт какой-никакой имеется.
     
  12. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Спасибо, господа, более менее определился.
    Для себя сделал такой вывод: стоит заняться TDI, т.к. NDIS хоть имеет свои плюсы, но из него нельзя получить информацию о процессе, а это критично.
    Также, TDI позволит выиграть время на изучение и разработку WFP-драйвера за счет того, что в пожарном режиме можно будет в Висте юзать уже к тому моменту готовый TDI-драйвер.

    ЗЫ
    x64
    Спасибо за предложенную помощь. Уверен, что она понадобится :derisive:
     
  13. b000bs

    b000bs New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2009
    Сообщения:
    11
    это опыт показал? )
     
  14. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Кстати, на TDI-уровне тоже иногда проблемы бывают с определением процесса. Подробнее см. здесь, к примеру.
     
  15. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    Грустно, путей решения видимо не существует...
    Но в целом это не сильно ломает всю систему...
     
  16. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    у меня NDIS IM и информацию о процессе я получаю на всех пакетах
    но код весьма сложный и раскрывать его я не могу
    просто хочу сказать что это ВОЗМОЖНО практически
     
  17. JustAGuest

    JustAGuest New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2009
    Сообщения:
    33
    z0mailbox
    Это что-то очень интересно вы сейчас сказали!
    Понимаю, разглашение есть зло, но хотя бы принцип, архитектуру можно услышать? Без кода...

    И что по этому поводу скажут господа специалисты?
     
  18. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Ты уверен? А разве в Vista+ TDI не оставлен исключительно для совместимости, а компоненты сетевой подсистемы ОС используют NPI для взаимодействия?
     
  19. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Да.

    При наличии TDI-фильтров трафик будет идти через них на всех системах.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    JustAGuest
    Господа специалисты поддерживают, что при желании получить информацию о процессе можно.