Я пишу простую программу сетевой безопасности на С#. Для захвата трафика в сети я буду использовать библиотеку sharppcap, которая может захватывать все пакеты и отображать их данные в пользовательском интерфейсе. Тем не менее, я не могу найти какие-либо методы в библиотеке, которые могут быть использованы для удаления любых пакетов, подверженных их содержимому порта, источника, адресата или данных. Поддерживает ли Sharppcap такую функцию? Если нет, будет ли какая-нибудь библиотека, которую я могу использовать?
Библиотека sharppcap просто предоставляет общий API для перехвата пакетов и передачи. В Windows вы, вероятно, будете использовать WinPcap с sharppcap. В Windows вы не можете проверять и изменять пакеты без написания специального типа драйвера для платформы фильтрации пакетов Windows. Это также означает, что вам нужно будет использовать C++ или C.
WinPcap поддерживает чтение пакетов, которые поступают на сетевую карту, а также поддерживает передачу необработанных данных с сетевой карты, которая включает в себя возможность передачи пользовательских пакетов для отладки, исследований безопасности или разработки инструментов для зондирования сетей или того, что у вас есть.
Короткий ответ: no sharppcap не поддерживает это, и вам нужно будет сделать свой собственный драйвер. Если вы можете отойти от Windows, вы можете настроить выделенный аппаратный брандмауэр с помощью специального перехватчика, написанного на C, в течение одного дня, если вы пойдете с дистрибутивом Linux, таким как Debian или Arch Linux.
Если вы решите придерживаться Windows, вы также столкнетесь с неприятным сюрпризом в моменты, когда ваша нагрузка составляет около 50% от возможностей сетевой карты. Windows перестанет пересылать в стек сетевой фильтрации при значительной нагрузке, чтобы повысить производительность. Я заметил, что на гигабитной сетевой карте размером около 200 Мбит/с WinPcap не видел даже 5% всех пакетов. Чтобы проверить это, я использовал специальное устройство захвата, которое находилось между переключателем и тестируемой машиной. Устройство захвата может захватывать с линейной скоростью, а удаленный компьютер также может работать, но стек сетевой фильтрации в Windows этого не делает.