Мы можем прослушать сетевой трафик какой-нибудь программы?
Я хочу разработать программу на C#, которая может предназначаться для трафика приложения или порта и пытается просмотреть этот трафик. Например, я выбираю программу example.exe в своем приложении, и она дает мне данные о сетевом трафике. Возможно ли это? Если да, дайте мне несколько указаний. Я пытаюсь не использовать airPcap или winPcap или что-то подобное, потому что эти библиотеки предназначены для сетевой карты, и я не знаю, какой тип интерфейсной карты может использовать пользователь.
3 ответа
Вы должны либо перехватывать пакеты, где вы получаете дубликаты от NIC (pcap), либо перенаправлять запросы через ваше собственное приложение, чтобы вы могли проверить поток пакетов в реальном времени (подобный прокси-серверу).
Для реализации WinPcap в C# взгляните на SharpPcap. Для прокси смотрите здесь.
winPcap - очень хорошая библиотека для того, что вы хотите сделать. Если вы решите сделать это самостоятельно, вы будете заново изобретать колесо и, возможно, не сможете поддерживать столько сетевых карт, сколько оно делает.
Если вы хотите видеть только трафик, вам придется использовать прокси между ними. Но я считаю, что вы не хотите создавать что-то вроде, например, скрипача, которое находится между ними и позволяет вам отслеживать трафик.
Если я вас правильно понимаю, вы хотите создать приложение aC#, в котором вы выбираете из списка запущенных приложений и отображаете сетевой трафик в / из этого приложения. Вы можете сделать это с помощью C#, но вам придется звонить в Windows API, чтобы получить необходимую информацию. Кроме того, вам понадобится не-C# библиотека для захвата пакетов, например WinPcap. В Windows появился новый API-интерфейс NetMon, который делает вещи в стиле pcap. Я не использовал его, но вам, вероятно, лучше использовать pcap и библиотеку SharpPcap, которую разместил CodeCaster.