Мне всегда было интересно, как программные брандмауэры работают под прикрытием, и я хотел бы иметь возможность писать свои собственные инструменты для анализа или перехвата пакетов до того, как они будут отправлены или получены ОС. Я достаточно знаком с основными сетевыми принципами; Я просто понятия не имею, с чего начать, если я хочу написать программное обеспечение, которое вписывается в сетевой стек аналогично тому, как это делают брандмауэры. Кто-нибудь может дать мне несколько советов?
Мне было бы особенно интересно, если бы это можно было сделать с помощью C #, но я могу использовать и другие языки. Я сосредоточен в основном на Windows, но хотел бы знать, есть ли там кроссплатформенные библиотеки.
РЕДАКТИРОВАТЬ Использование драйвера NDIS (как это делает Wireshark) звучит как хороший вариант, а возможности фильтрации пакетов Vista звучат хорошо, но как брандмауэры делают это, скажем, в Windows XP? Им не нужно устанавливать специальный драйвер, о котором я знаю.