Я всегда задавался вопросом, как брандмауэры программного обеспечения работают под обложками, и хотели бы иметь возможность писать собственные инструменты для анализа или перехвата пакетов до их отправки или получения ОС. Я знаком с основными принципами сетевого взаимодействия; Я просто не знаю, с чего начать, если я хочу написать программное обеспечение, которое вписывается в сетевой стек, аналогичный тому, как это делают брандмауэры. Может ли кто-нибудь дать мне несколько указателей?Как анализировать/перехватывать пакеты перед их отправкой/получением ОС?
Мне было бы особенно интересно, если это можно сделать с помощью C#, но я могу делать и другие языки. Я в основном сосредоточен на Windows, но хотел бы знать, есть ли там кросс-платформенные библиотеки.
EDIT Использование драйвера NDIS (как Wireshark) звучит как хороший вариант, и возможность фильтрации пакетов в Vista звука в чистом виде, но как брандмауэры сделать это, скажем, на Windows XP? Им не нужно устанавливать специальный драйвер, о котором я знаю.
+1 Большое спасибо, я искал этот API с давних пор. – Searock