Создание фильтра пакетов в C # / C ++? - PullRequest
3 голосов
/ 04 марта 2012

В прошлом я писал плагины для C ++, которые отключали функцию recvfrom () в Winsock и отбрасывали / манипулировали входящим трафиком из основного приложения.

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

Каков наилучший способ сделать это? Это будет использоваться на компьютерах с Windows Server 2008, которые имеют большое количество статических IPv4-адресов, назначенных сетевой карте. Я подумывал о возможном обходе Winsock, но, поскольку это не многофункциональное приложение, любой способ, который проще всего реализовать, был бы великолепен.

Примечание Я начал реализовывать это с помощью Pcap.Net, но понял, что не могу отбрасывать пакеты таким образом, поэтому я не совсем уверен, как к этому подойти.

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

Это может быть не самая простая задача в C #, поскольку фильтрация сети, вероятно, свяжет вас с низкоуровневым кодом, работающим с ядром ОС.

В Windows Server 2008 также есть некоторые API для настройки пользовательских фильтров пакетов.

Хотя, вероятно, с возможностью переноса в p / invoke, я предлагаю перейти на C ++ и нативныйскорее код.

Дополнительное чтение, которое может вас заинтересовать, находится на здесь, на codeproject .

0 голосов
/ 05 марта 2012

Вы хотите использовать EasyHook. Если вы говорите, что на самом деле вам нужно беспокоиться только об одном основном приложении, вы можете создать простой пользовательский режим, который перехватывает send () и receive (). Вы можете посмотреть, как это делает oSpy (хотя проект oSpy довольно большой). EasyHook делает подключение довольно простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...