![隔离应用程序并检查其通过互联网发送的数据包](https://linux22.com/image/599406/%E9%9A%94%E7%A6%BB%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%B9%B6%E6%A3%80%E6%9F%A5%E5%85%B6%E9%80%9A%E8%BF%87%E4%BA%92%E8%81%94%E7%BD%91%E5%8F%91%E9%80%81%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85.png)
我不确定这类问题在这里是否合适,所以如果我错了,请原谅我。
这里有一个问题:我想查看特定程序向互联网发送了什么,但问题是计算机上有很多应用程序和服务都在使用互联网。因此,无法弄清楚我感兴趣的应用程序发送了哪些数据包。
一种方法是尝试关闭所有其他应用程序,但这是不可能的。
那么有没有办法隔离特定应用程序?我正在使用 windows7 并使用 wireshark 捕获数据包。
答案1
鉴于您使用的是 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
答案2
如果你使用Microsoft 的进程监视器,您可以更改过滤器以仅显示来自特定进程的网络通信。它不会向您提供数据包的内容,但它会显示应用程序正在与哪些主机通信。
答案3
Microsoft 网络监视器将向您显示负责流量流动的进程。
答案4
使用系统内部进程监视器获取应用程序进程号,并检查其他系统内部工具:
https://docs.microsoft.com/en-us/sysinternals/
打开cmd.exe并运行,显示netstat命令行选项,netstat /?。
现在尝试 netstat -bo 1 >> c:/test.log 。这将允许您在不断更新的文件中找到特定应用程序的网络连接数据。
请记住,您需要在 cmd 窗口中输入 ctl-C 来阻止 netstat -bo >> c:/test.log 写入日志。