Назад | Перейти на главную страницу

изолировать приложение и проверить, какие пакеты оно отправляет через Интернет

Я не уверен, что такой вопрос здесь уместен, так что простите меня, если я ошибаюсь.

Вот проблема: я хочу увидеть, что конкретная программа отправляет в Интернет, но дело в том, что на компьютере есть множество приложений и служб, которые используют Интернет. Поэтому невозможно понять, какие пакеты были отправлены приложением, которое меня интересует.

Один из способов - попытаться закрыть все другие приложения, но это невозможно.

Так есть ли способ изолировать конкретное приложение? Я работаю над 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.