Есть ли способ отслеживать, какой процесс посылает UDP-пакеты (IP и порт источника/администратора) в Windows?

Я почти случайно обнаружил, что моя машина отправляет и принимает UDP-пакеты на машину в Польше. Не то чтобы у меня были какие-то проблемы с Польшей, я просто не знаю, зачем моему ноутбуку нужно общаться с сервером в этой стране. Обратный DNS показывает, что провайдер предоставляет адрес конечному пользователю. Используя Wireshark, я могу отслеживать сообщения, которые были неразборчивы, поскольку, вероятно, были зашифрованы. Все пакеты, отправленные с моей машины, имели один и тот же порт источника, так что очевидно, что приложение, которое их отправило, открыло этот UDP-сокет, чтобы использовать его. Я ищу способы:

1) перечислить все текущие сокеты, открытые в системе, включая процесс, который их создал, и, для TCP и UDP, к каким портам и адресам они привязаны в данный момент.

2) поскольку приложения могут открывать эти сокеты, использовать их и тут же закрывать, я хотел бы найти (или, возможно, даже написать) программу, которая после запуска будет каким-то образом получать уведомления каждый раз, когда создается сокет, или, что еще важнее, когда он привязывается к адресу и порту источника и/или назначения. Для UDP я хотел бы также иметь возможность отслеживать IP-адреса назначения и порты, на которые сокет отправил сообщения.

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

Кто-нибудь знает какие-нибудь приложения (для платформы Windows), которые могут это делать? Если нет, есть ли идеи по поводу API .NET или Windows, которые предоставляют такую возможность, если я захочу написать его сам?

Edit: После дальнейшего исследования - похоже, что API, которые нужно использовать, это GetExtendedUdpTable и GetExtendedTcpTable, на CodeProject.com есть несколько примеров, оборачивающих их в .NET (см. http://www.codeproject.com/Articles/14423/Getting-the-active-TCP-UDP-connections-using-the-G). Таким образом, для мониторинга и отслеживания того, с какими хостами, на каких портах, по какому протоколу общается то или иное приложение на вашей машине, потребуется комбинация этого API и некоторого кода сниффера. Если у меня когда-нибудь появится свободное время, я подумаю над созданием этого, если вы знаете приложение, которое делает все это, пожалуйста, дайте мне знать.

6
задан Brian B 6 February 2012 в 18:17
поделиться