我不确定这个问题在这里是否合适,所以如果我错了,请原谅我。
这是一个问题:我想看看一个特定的程序发送到互联网,但是在计算机上有很多使用互联网的应用程序和服务。 所以我们不可能找出我感兴趣的应用程序发送的数据包。
一种方法是尝试closures所有其他应用程序,但这是不可能的。
那么有没有办法来隔离一个特定的应用程序? 我正在使用windows7并使用wireshark捕获数据包
鉴于您正在使用Wireshark,您的端口号不会自动parsing为应用程序名称,因此您需要再做一些改进您所查找的信息。 每个使用TCP / IP通过networking进行通信的应用程序都将使用端口,以便networking堆栈知道将分段传送到哪里(我喜欢称之为应用程序地址)。
连接到特定端口上的服务器应用程序的客户端将dynamic分配dynamic范围内的端口号。 所以你首先需要找出你的应用程序打开的TCP / UDP连接:
netstat -b
在命令行会给你一个连接列表,其中包含创build连接的可执行文件的名称。 每个可执行文件都有一个或多个127.0.0.1:xxxxx列出的连接,其中X是连接的本地端口号。
现在在wireshark中,您需要通过使用一个或多个这些filter来告诉它显示来自或注定到该端口的数据包:
tcp.port == xxxxx或udp.port == xxxxx
为每个要显示的连接添加一个附加的or tcp.port == xxxxx 。
这将允许你看到你的应用程序已经打开的连接的所有stream量,Wireshark将不包括原始的TCP / UDP段,但它将包括使用这些端口号的各种应用层协议(例如HTTP)。
如果您的应用程序似乎只与一台服务器通信,则可以使用该服务器的IP地址进行筛选:
ip.addr == xxxx
如果您使用Microsoft的Process Monitor ,则可以更改filter以仅显示来自特定进程的networking通信。 它不给你的数据包的内容,但它确实显示应用程序正在交谈的主机。
Microsoftnetworking监视器将显示负责stream量的stream程。
我发现Microsoft Message Analyzer对于同样的目的非常有用。 它允许捕获networkingstream量并通过stream程树进行聚合。
只需将My_Applicationreplace为应用程序的PNAME或PID
netstat –programs | grep“My_Application”
我不testing它在Windows 7,但它在Linux上。