Итак, я создаю утилиту для мониторинга файловой системы, реестра и сетевой активности (процесс мудрый, только активность по выбранным процессам). Я выполнил часть файловой системы и реестра, разработав драйвер minifilter. Однако я не уверен, как мне это сделать для сети. То, что я хочу сделать, очень похоже на то, что sysinternal's TCPView делает, однако я только хочу контролировать ESTABLISHED соединения выбранными процессами. Вот что я хочу, чтобы получить в режиме реального времени для каждого соединения:Какая технология/API/технология используется для мониторинга сети?
-Протокола (TCP или UDP)
-source порт
-Дистанционного IP и порт
- [опционально] количество байтов, переданных по определенному соединению с момента начала мониторинга
Что я должен использовать? я слышал о LSP, но, прочитав в нем немного дальше, я понял, что очень сложно писать правильно функционирующие LSP, не говоря уже о том, что едва ли можно найти материал, который можно было бы изучить с нуля. Кроме того, они устаревают. Проблема в том, что у меня есть только 2-3 недели времени, чтобы узнать + написать этот модуль. Из-за ограничения времени я, конечно же, не хочу идти на что-то вроде WFP, если у него нет очень хорошего учебника, и я не говорю о документации MSDN. Я не знаю, можно ли это «легко» сделать с помощью NDIS и т. Д.
Во всяком случае, что мне делать, где я должен сосредоточить свои усилия. Должен ли я рискнуть, узнав о LSP, или NDIS выполнит задачу или что-то еще. Сейчас я как бы бессознателен. Помогите мне здесь!
Я также хочу, чтобы получить ProcessId/процесс для каждого соединения. Также я не хочу отслеживать «сетевой трафик», просто хочу получить конечные точки TCP и UDP в реальном времени, точно так же, как TCPView, за исключением только для подключений ESTABLISHED. – user1831704