Создание программы, которая перехватывает сетевой трафик в Windows - PullRequest
6 голосов
/ 16 апреля 2011

В некотором роде я спрашиваю: «Как сделать программный брандмауэр для Windows», но что-то не так сложно.Я удивлен, что могу найти так мало при поиске этого, только случайное упоминание о крючках.Поэтому было бы очень признательно, если бы кто-то мог указать мне правильное направление.

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

Кажется, что это было бы намного проще сделатьв ядре, но я не хочу там дурачиться, да и вообще у меня нет доступа к этому в Windows.Меня не беспокоит эффективность, и я не пытаюсь создать персональный файервол.Это просто для эксперимента с IP-адресами.

Есть ли какие-либо указатели?

Примечание. Важно, чтобы я мог блокировать сетевую активность в сети, а не просто отслеживать ее

Ответы [ 5 ]

5 голосов
/ 16 апреля 2011

Самодельный подход будет идти в режиме ядра, используя драйверы перехвата фильтра (для Windows 2000-XP) или Драйверы выноски WFP .

Если выхотите, чтобы другие выполняли грязную работу в режиме ядра, драйвер / библиотека WinPcap содержит множество сетевых функций низкого уровня, включая те, которые вам нужны, которые вы можете использовать в пользовательском режиме (обратите внимание, чтоиспользуя WinPcap, вы не можете отбрасывать пакеты).

3 голосов
/ 16 апреля 2011

Звучит так, как будто вы ищете Winsock Интерфейс поставщика услуг (SPI) Многоуровневый поставщик услуг (LSP).Из того, что вы сказали, если вы имеете дело с Vista или новее, вы, вероятно, захотите реализовать экземпляр класса LSP_INSPECTOR.Для более старых версий Windows этот класс не применяется точно, но та же самая общая идея делает.В Vista / 7 вы устанавливаете категорию (класс) для своего приложения с помощью WSCSetApplicationCategory.Чтобы установить своего провайдера, вы заполняете структуру WSAPROTOCOL_INFO, а затем регистрируетесь по телефону WSCInstallProvider.

1 голос
/ 16 апреля 2011

Я думаю, что вы ищете перехватчик пакетов, он будет перехватывать почти все коммуникации по сети.Если вы хотите использовать библиотеку, посмотрите WinPCap , который предназначен именно для этой цели.

Кроме того, если вы считаете, что вам нужно что-то предварительно написанное и просто хотите изменить его, посмотрите Wireshark .Хотя читать код зачастую сложнее, чем писать.

1 голос
/ 16 апреля 2011

Вы хотите посмотреть libpcap и tcpdump .

0 голосов
/ 16 апреля 2011

попробуй winpcap .В качестве "tcpdump with GUI" вы можете попробовать wireshark .

...