Есть ли способ контролировать, какой процесс отправляет UDP-пакеты (IP-адрес / порт источника / адрес) в Windows? - PullRequest
6 голосов
/ 06 февраля 2012

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

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

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

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

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

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

Ответы [ 2 ]

10 голосов
/ 07 февраля 2012

Попробуйте SysInternals TCPView . Несмотря на название, он также обрабатывает UDP.

2 голосов
/ 06 февраля 2012

netstat -b для перечисления всех портов вместе с именами процессов.

...