Я не уверен, что такой вопрос здесь уместен, так что простите меня, если я ошибаюсь.
Вот проблема: я хочу увидеть, что конкретная программа отправляет в Интернет, но дело в том, что на компьютере есть множество приложений и служб, которые используют Интернет. Поэтому невозможно понять, какие пакеты были отправлены приложением, которое меня интересует.
Один из способов - попытаться закрыть все другие приложения, но это невозможно.
Так есть ли способ изолировать конкретное приложение? Я работаю над windows7 и собираю пакеты с помощью wirehark
Учитывая, что вы используете Wireshark, ваши номера портов не преобразуются автоматически в имя приложения, поэтому вам нужно будет сделать еще немного, чтобы уточнить информацию, которую вы ищете. Каждое приложение, использующее TCP / IP для связи по сети, будет использовать порты, так что сетевой стек знает, куда доставлять сегменты (я люблю называть это адресом приложения).
Клиентам, подключающимся к серверному приложению через определенный порт, будет динамически назначаться номер порта из динамического диапазона. Итак, сначала вам нужно выяснить, какие TCP / UDP-соединения открыты вашим приложением:
netstat -b
в командной строке отобразится список подключений с именем исполняемого файла, создавшего подключение. Каждый исполняемый файл имеет одно или несколько подключений, перечисленных как 127.0.0.1:xxxxx, где X - номер локального порта для подключения.
Теперь в wirehark вам нужно указать ему отображать пакеты, которые исходят или предназначены для этого порта, используя один или несколько из этих фильтров:
tcp.port == xxxxx
или udp.port == xxxxx
Добавить дополнительный or tcp.port == xxxxx
для каждого соединения, которое вы хотите показать.
Это позволит вам видеть весь трафик для соединений, открытых вашим приложением, и Wireshark не будет включать только необработанные сегменты TCP / UDP, но он будет включать различные протоколы уровня приложения (например, HTTP), которые также использовали эти номера портов.
Если ваше приложение взаимодействует только с одним сервером, вы можете просто использовать IP-адрес этого сервера для фильтрации по:
ip.addr == x.x.x.x
Если вы используете Монитор процессов от Microsoft, вы можете изменить фильтры, чтобы отображать только сетевые соединения от определенных процессов. Он не дает вам содержимого пакетов, но показывает, с какими хостами обращается приложение.
Microsoft Network Monitor покажет вам процесс, отвечающий за поток трафика.
я нашел Анализатор сообщений Microsoft очень полезно для той же цели. Это позволяет захватывать сетевой трафик и агрегировать его по дереву процессов.
Используйте System Internals Process Monitor, чтобы получить номер процесса приложения и проверить другие внутренние инструменты системы по адресу:
https://docs.microsoft.com/en-us/sysinternals/
Откройте cmd.exe и запустите, покажите параметры командной строки netstat, netstat /? .
Теперь попробуйте netstat -bo 1 >> c: /test.log. Это позволит вам найти данные сетевого подключения ваших конкретных приложений в постоянно обновляемом файле.
Помните, что вам нужно остановить netstat -bo >> c: /test.log от записи в журнал, введя ctl-C в окно cmd.
Просто замените My_Application
с вашим приложением PNAME
или PID
netstat --programs | grep "My_Application"
Я не тестирую его на Windows 7. но он работает в Linux.