ізолюйте додаток і перевірте, які пакети він надсилає через Інтернет


18

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

Ось проблема: Я хочу побачити, яку конкретну програму надсилає в Інтернет, але річ у тому, що на комп’ютері є безліч додатків та служб, які використовують Інтернет. Тож неможливо розібратися, які пакети куди надсилає додаток, який мене цікавить.

Один із способів - спробувати закрити всі інші програми, але це неможливо.

То чи існує спосіб виділення конкретної програми? Я працюю над Windows7 і захоплюю пакети з дротяним шклом

Відповіді:


13

Зважаючи на те, що ви використовуєте Wireshark, ваші номери портів автоматично не визначаються назвою програми, тому вам доведеться зробити трохи більше, щоб уточнити шукану інформацію. Кожна програма, що використовує TCP / IP для спілкування через мережу, буде використовувати порти, так що мережевий стек знає, куди потрібно доставити сегменти (я люблю називати це адресою програми).

Клієнтам, що підключаються до серверної програми на певному порту, буде динамічно розподілятися номер порту з динамічного діапазону. Отже, спочатку потрібно дізнатися, які TCP / UDP з'єднання відкрито у вашій програмі:

netstat -b

у командному рядку ви побачите список з'єднань з ім'ям виконавчого файлу, який створив з'єднання. Кожен виконуваний файл має одне або більше підключень, перелічених як 127.0.0.1:xxxxx, де X - номер локального порту для з'єднання.

Тепер у wireshark, вам потрібно вказати йому, щоб відобразити пакети, які походять з цього порту або призначені для цього порту, використовуючи один або декілька з цих фільтрів:

tcp.port == xxxxx або udp.port == xxxxx

Додайте додаткове or tcp.port == xxxxxдля кожного з'єднання, яке ви хочете показати.

Це дозволить вам побачити весь трафік для з'єднань, у яких ваша програма відкрита, і Wireshark не буде включати лише необроблені сегменти TCP / UDP, але він буде включати різні протоколи рівня додатків (наприклад, HTTP), які також використовували ці номери портів.

Якщо ваша програма зв’язується лише з одним сервером, ви можете просто використовувати IP-адресу цього сервера для фільтрації за:

ip.addr == x.x.x.x

Найбільша проблема сокетів (використання незарезервованих портів) полягає в тому, що розетка, яку відкриває та закриває програма, має дуже динамічний характер. Якщо ви запускаєте команду netstat -b, вона дасть різні результати для кожної переліченої програми, навіть якщо ви запускаєте її з інтервалом у 5 секунд. Тож дуже важко помітити всі номери портів, які отримують для моєї програми. Я спостерігав те саме за моєю програмою в інструменті "TCPView" (набір sysInternals). Я побачив, що за проміжок часу в 10 секунд моїм додатком було відкрито приблизно 15 підключень TCP-розеток, і багато з них також загинули
RBT

1
Ось тут корисний мережевий монітор Microsoft, оскільки він може простежити процес, з якого походить мережевий зв’язок, і згрупувати його за цим процесом. Однак, оскільки це було написано, була випущена нова основна версія Wireshark. Можливо, таке групування можливо також за допомогою Wireshark, але я його не використовував деякий час.
Джон

7

Якщо ви використовуєте Process Monitor від Microsoft , ви можете змінити фільтри, щоб відображати лише мережеві комунікації з певних процесів. Він не дає вам вмісту пакетів, але він показує, що хостить програму.


1
? Він хотів побачити пакети.
Pacerier

1

Microsoft Network Monitor покаже вам процес, відповідальний за потік трафіку.


1

Мені здалося, що програма Microsoft Message Analyzer дуже корисна з цією ж метою. Це дозволяє захоплювати мережевий трафік та агрегувати його за деревом процесу.


0

Використовуйте Монітор процесів внутрішніх систем, щоб отримати номер процесу подання заявки та ознайомитись з іншими інструментами внутрішніх систем за адресою:

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.


-2

Просто замініть My_Applicationна додаток PNAMEабоPID

netstat --програми | grep "My_Application"

Я не перевіряю його на Windows 7. Але він працює в Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.