Привет господа Гуру. Решил написать сетевой sniffer. Изучив некоторые статьи по реализации фильтрации пакетов, у меня появилось несколько вопросов: 1) Можно ли в kernel-mode узнать какой процесс владеет портом с которого или на который направляется пакет ? Если да то как ? 2) Является ли подход Windows 2000 Filter-Hook Driver в принципе применимым - ведь нет гарантии что на компе не стоит ни один аналогичный фильтр (из DDK, только один такой hook может стоять). Можно ли сделать так что при установке моего Filter-hook driver-a любой существующий удалялся? Какова вообще вероятность что Filter-hook driver уже установлен? Есть ли какой то полезный софт (firewall-i, antivirusi, и т.д.), которые используют такой подход и работа которых нарушится при установке моего hooka, поверх их hooka? Такой подход меня в принципе заинтересовал т.к. имеется уже готовое решение (NT Kernel Resources, winpkflt) используещее этот подход и предоставляющее API user mod-у. 3) Можно ли написать такой сетевой driver-фильтр, который гарантированно будет лежать в стеке ниже всех firewall-ов ? Как я понял из всех известных подходов наиболее "низким" является NDIS intermidiate driver. Будет ли он гарантированно лежать ниже всех firewall-ов? 4) Вопрос вытекающий из 3-го. Можно ли написать такой driver, который сам обрабатывает пакеты присланные из внешнего мира (сохраняет данные на HDD и т.д.) не передавая их вверх по стеку так, чтобы такой приём пакетов был гарантированно невидимым для firewall-ов? Заранее спасибо.
kralex 1) Можно 2) Применим, вероятность редкая 3) Имхо самый низкий уровень - мост от драйвера виртуальной сетевой карточки до драйвера физической карточки. Последний нужно как-то прятать от непосредственного использования драйвером NDIS. Как это сделать - отдельный вопрос, но в-принципе это возможно 4) Можно Сейчас набегут более знающие товарищи, может что-то добавят
2. Выкинь Filter-Hook Driver как хлам. (нехочу повторяться 4-й раз) 3. Спасёт NDIS IM драйвер. Его можно размещать на любом уровне IM драйверов, но OutPost перехватывает главные ф-ции для работы с сетью и поговорить об его обходе лучше к Ms-Rem 4. Да
Спасибо за респонсы. Т.е. я так понял filter-hook drivers лучше не использовать? По той причине что в системе он может быть только одын? По поводу 1го, 2го и 3го вопросов - нельзя ли поподробнее? Может линки какие-то имеются?
Ещё вопрос: SteelRat Насколько я знаю его надо дигитально подписывать у MS, иначе будет появлятся confirmation dialog. Можно это как-то обойти? Кроме того из статьи на этом же сайте сказано что NDIS IM driver сложны и неудобны в разработке. Действительно ли так всё критично (добавлю что опыта в разработке driverov, да и вообще kernel-development и меня нету)?