隔离应用程序并检查其通过互联网发送的数据包


18

我不确定这种问题在这里是否合适,如果我错了,请原谅我。

这是一个问题:我想查看特定程序正在向Internet发送什么,但问题是在计算机上,有许多使用Internet的应用程序和服务。因此,不可能找出我感兴趣的应用程序在哪里发送了哪些数据包。

一种方法是尝试关闭所有其他应用程序,但这是不可能的。

那么有没有办法隔离特定的应用程序?我正在Windows7上工作并使用Wireshark捕获数据包

Answers:


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 Network Monitor派上用场的地方,因为它可以跟踪网络通信所源自的过程并将其分组在该过程下。但是,自编写以来,已经发布了Wireshark的新主版本。可能是这样的情况,也可以使用Wireshark进行这种分组,但是我已经有一段时间没有使用它了。
约翰

7

如果使用Microsoft的Process Monitor,则可以更改筛选器以仅显示来自特定进程的网络通信。它不会为您提供数据包的内容,但可以显示应用程序正在与哪些主机通信。


1
?他想看包裹。
Pacerier



0

使用系统内部过程监控器获取应用程序进程号,并在以下位置查看其他系统内部工具:

https://docs.microsoft.com/zh-cn/sysinternals/

打开cmd.exe并运行,显示netstat命令行选项,netstat /?。

现在尝试netstat -bo 1 >> c:/test.log。这将使您可以在不断更新的文件中找到特定的应用程序网络连接数据。

请记住,您需要通过在cmd窗口中输入ctl-C来停止netstat -bo >> c:/test.log写入日志。


-2

只需替换My_Application为您的应用程序PNAMEPID

netstat-程序| grep“ My_Application”

我没有在Windows 7上对其进行测试,但是它可以在Linux上运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.