Используя C#/C++, возможно ли ограничить сетевой трафик?

Я разрабатываю приложение для родительского мониторинга / отслеживания, которое имеет функцию блокировки всей интернет-активности. Хотя отключение сетевого адаптера может показаться простым решением, приложение должно иметь возможность удаленного включения Интернета - поэтому сеть должна оставаться включенной до определенного предела.

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

С моим приложением мне нужно выполнить два требования:

  1. Отбросьте всю интернет-активность. а потом
  2. Включите только интернет-активность для указанного порта и IP-адреса. (мой сервис, который будет опрошен)

Простая цель, верно? Не так много в последнее время.

Хотя я и стремлюсь достичь этого в C#, я понимаю, что это может быть долгосрочно, и я открыт для решений C++, которые могут быть вызваны в качестве ресурса через мое приложение.

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

Заранее спасибо!

3 ответа

Решение

Вам необходимо внедрить пользовательский слой в стек IP, используя платформу фильтрации Windows. Этот SDK предназначен специально для программ родительского контроля и тому подобного. Излишне говорить, что, как и любой модуль ядра, он должен быть разработан на C, и вы должны обладать экспертными знаниями о внутренностях Windows:

API-интерфейс платформы фильтрации Windows предназначен для программистов, использующих программное обеспечение для разработки на C/C++. Программисты должны быть знакомы с сетевыми концепциями и проектированием систем с использованием компонентов пользовательского режима и режима ядра.

Вы можете использовать WinINET API для этого; WinINET определяет основные настройки Интернета для большинства / многих приложений Windows и может использоваться для определения информации о прокси. Имея это в виду, вы можете создать прокси, который отклоняет все запросы, кроме ваших сообщений.

Не прямой ответ, но такого рода действия обычно выполняются вне полосы с последовательным соединением или со вторым сетевым адаптером, подключенным к "доверенной" ЛВС.

Другие вопросы по тегам