Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: IP Filter Hook: Запись данных в файл  (Прочитано 6547 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Levvi
Новенький

ru
Offline Offline

« : 01-06-2010 22:05 » 

Всем доброго времени суток!
На повестке дня следующая проблема. Необходимо на базе IP Filter-Hook Driver (использует ipfirewall.h) сделать запись содержимого пакетов в файл. Но суть именно вот в чем. Callback-функция, где я могу получить доступ к интересующим меня данным, вызывается на уровне IRQL DISPATCH_LEVEL, где файловые операции запрещены. Разрешены они на PASSIVE.
Вопрос состоит именно в записи в файл. На ум приходит несколько вариантов решения проблемы. 1. Отдельный поток и разделяемый общий буфер данных, например, список (есть станд. структура в ядре). 2. Вообще писать в файл из пользовательского приложения, создать что-то типа разделяемой памяти. IOCTL тут не прокатывает, т.к. пакеты приходят случайно, а механизм этот блокирующий.
Главное: это все пока только версии, попытки реализации пока успехом не увенчались. Кто может подсказать или навести на полезные примеры в данной области, тому буду очень благодарен. Может есть более эффективный вариант решения вопроса. Заранее спасибо.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-06-2010 22:33 » 

Цитата: Levvi
Вообще писать в файл из пользовательского приложения

Я бы так и сделал.

Цитата: Levvi
IOCTL тут не прокатывает

Почему?

Цитата: Levvi
т.к. пакеты приходят случайно, а механизм этот блокирующий

Что он блокирует?

Записан
Levvi
Новенький

ru
Offline Offline

« Ответ #2 : 02-06-2010 07:28 » 

Цитата: resource
Цитата: Levvi
IOCTL тут не прокатывает

Почему?

Ну вроде как логика получается такая. Отправляю я IOCTL. В драйвере идет обработка в функции, указываемой MajorFunction[IRP_MJ_DEVICE_CONTROL], там все идет на PASSIVE_LEVEL, мне же нужно добраться к буферу, обрабатываемому на более высоком IRQL.
PS: К тому же, видимо, в любом случае придется вдобавок исопльзовать что-то типа очереди, так как при приходе каждого нового пакета буфер затирается, а скорость прихода пакетов может быть выше скорости обработки данных

Цитата: resource
Цитата: Levvi
т.к. пакеты приходят случайно, а механизм этот блокирующий

Что он блокирует?


Ну блокирующим я назвал этот механизм в том смысле, что по умолчанию пока запрос не будет полностью выполнен, функция DeviceIoControl полностью не отработает вроде, т.е. в выходном буфере не окажутся нужные данные. Ведь так? Но тут хотя есть немалая поправка. Рассматривается статус IRP_PENDING. Но это не сюда.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 02-06-2010 07:49 » 

Цитата: Levvi
там все идет на PASSIVE_LEVEL, мне же нужно добраться к буферу, обрабатываемому на более высоком IRQL.

Так можно же повысить свой IRQL. Вообще стоит ознакомиться с такой вещью как SpinLock, это решит проблему полностью (включая блокировку буфера).

Цитата: Levvi
PS: К тому же, видимо, в любом случае придется вдобавок исопльзовать что-то типа очереди

Ну типа того. Я всегда использую двусвязный список.
Записан
x64
Участник

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 07-06-2010 09:09 » 

Господа, не используйте IP Filter Driver, Firewall Hooks и т.п. IP Filter Driver был реализован для системного фаервола и подразумевается, что драйвер, использующий этот механизм фильтрации, в системе всего один. Firewall Hooks устарели, начиная с Windows XP:

Цитата
Firewall-Hook Drivers
It is not recommended to implement a firewall-hook driver (or firewall driver) for Microsoft Windows XP and later versions of the operating system.

Пишите TDI/WFP-фильтр, проблем будет меньше.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 07-06-2010 11:05 » 

Согласен. Да и IP Filter это вообще несерьезное что-то. Таким даже в учебных целях неохото было бы заниматься. Просто смысла нет.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines