Отключить сеть в kernel mode

Тема в разделе "WASM.NT.KERNEL", создана пользователем Marik, 25 фев 2010.

  1. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Доброго времени суток!
    Как в режиме ядра отключить\включить сетевой интерфейс? По сути требуется в определенное время накрывать всю сетевую активность интерфейса, пакеты фильтровать не нужно. Причем желательно универсальный метод для ОС от XP до Win7. Опыта написания TDI фильтра еще не было, есть ли вариант более простого решения? :)
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    написать простой фильтр, который будет комплитить все запросы с STATUS_ACCESS_DENIED. либо на TDI, либо на afd вешаться.
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    а что если удалить симв. ссылку, ну или и ссылку и девайс, или вообще попытаться выгрузить драйвер?))) что-то мне подсказывает, что фильтр - самое простое и надежное решение)))
     
  4. x64

    x64 New Member

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

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    IpFilterDriver если оно еще существует в win7
     
  6. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    http://www.wasm.ru/forum/viewtopic.php?id=35781
    хотелось решить задачу только документированными возможностями, получается для ОС ниже Виста TDI фильтр, на ОС выше с помощью NPI
     
  7. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    TDI-фильтр решит твою проблему на всех существующих системах. Даже думать не надо. Закройте уже тему кто-нибудь.
     
  8. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    можно найти у своего сетевого адаптера в его ресурсах диапазон I/O и затем дать ему какую нить команду закрыться
     
  9. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    см. IOCTL_PF_SET_EXTENSION_POINTER об Firewall-Hook Driver http://www.codeproject.com/KB/IP/FwHookDrv.aspx
     
  10. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    а если усложнить задача, и скажем что какой то интерфейс должен жить? то и есть на компьютере несколько сетевых интерфейсов и надо оставить один, а все остальные опустить ? И что бы не кто не мог поднять(ну хотя бы что бы это было сложно)....
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Блочить все запросы в принципе вполне документировано) Парсить ioctl отдельные не требуется.
     
  12. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    int2eh
    IOCTL_PF_SET_EXTENSION_POINTER простое решение, но боюсь не подойдет, так как только один драйвер может воспользоваться и мой хук могут легко снять другие продукты
     
  13. x64

    x64 New Member

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

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    int2eh
    самое реальное
     
  15. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    ZwLoadDriver возвращает STATUS_INVALID_DEVICE_REQUEST
    IoCallDriver с IRP_MN_REMOVE_DEVICE вешает систему (код вроде бы правильный, так как IRP_MN_QUERY_REMOVE_DEVICE корректно отрабатывает)

    Можно немного поподробнее?
     
  16. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Marik
    Поможет пример кода из MSDN 2003 “HOWTO: Get Configuration and Location Information of PCI Device”. PSS ID Number: 253232. Например, ReadWriteConfigSpace(DeviceObject, 0, (PVOID)&config, 0, sizeof(PCI_COMMON_CONFIG)); и там см. PCI_COMMON_CONFIG::u.type0.BaseAddresses[0], причем там базовый адрес Диапазона I/O адаптера может быть больше на +1 (так $M защищается от... :) хакеров) или во втором примере того кода см. PBUS_INTERFACE_STANDARD.
     
  17. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    вот аттач!!!
     
  18. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    PSS ID Number: 253232
     
  19. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    PSS ID Number: 253232
     
  20. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    x64
    Вы правы без TDI фильтра ни как не обойтись.
    Скачал себе несколько примеров реализации (http://sourceforge.net/projects/tdifw/). В принципе все понятно, но фильтруется по ip адресам, т.е. есть информация откуда, куда, какой процесс... тот же TDImon например не показывает сетевой интерфейс (http://www.symcod.com/sniffers/) Как узнать к какому интерфейсу принадлежит запрос?