在Wireshark中按进程/ PID过滤

Rya*_*des 112 wireshark

有没有办法使用Wireshark根据特定进程ID 过滤/跟踪TCP/SSL流?

小智 88

如果您正在寻找替代方式,并且您使用的环境是Windows,Microsoft的Network Monitor 3.3是一个不错的选择.它有进程名称列.您可以使用上下文菜单轻松将其添加到过滤器并应用过滤器.通常,GUI非常直观...

  • 还有[Microsoft Message Analyzer](http://www.microsoft.com/en-ca/download/details.aspx?id=44226),它基本上是微软的Wireshark版本(据我所知,是网络监视器的继承者) ,但更好一体化.在列选择器中,在'Etw' - >'EtwProviderMsg'下有一个'PID'列.它运作良好! (38认同)
  • Microsoft Network Monitor 3.4位于http://www.microsoft.com/en-us/download/details.aspx?id=4865 (10认同)
  • 对于任何寻找 Microsoft Message Analyzer 下载的人:https://web.archive.org/web/20191104120802/https://download.microsoft.com/download/2/8/3/283DE38A-5164-49DB-9883- 9D1CC432174D/MessageAnalyzer.msi <-- 32 位 https://web.archive.org/web/20191104120853/https://download.microsoft.com/download/2/8/3/283DE38A-5164-49DB-9883- 9D1CC432174D/MessageAnalyzer64.msi <-- 64 位 (9认同)
  • 确切的路径是EtwProviderMsg - > EventRecord - > Header - > ProcessId (3认同)
  • Microsoft Message Analyzer 已于 2019 年 11 月 25 日停用。他们建议改用 Wireshark。https://docs.microsoft.com/en-us/openspecs/blog/ms-winintbloglp/dd98b93c-0a75-4eb0-b92e-e760c502394f (3认同)
  • 我最近才发现 Microsoft 消息分析器,**它是如此有用的工具!** 我怎么可能从未听说过它。所以被低估了。由于与 Windows 的集成比 Wireshark 好得多,因此它具有强大的过滤功能。我已经在每天工作的大约 3 个月内在我公司的所有主机上切换到它。**非常感谢@Cameron 在该答案下的评论!** :-) (2认同)

Vin*_*jip 54

我不知道怎么样.PID不会将其带到电线上(一般来说),而Wireshark允许您查看电线上的内容 - 可能是所有通过电线进行通信的机器.无论如何,进程ID在不同的机器上并不是唯一的.

  • Wireshark知道正在使用哪个端口,并且操作系统知道正在使用该端口的进程的PID.通过代码更改,Wireshark应该可以将端口映射到PID.在某些情况下,如果操作系统在Wireshark查询操作系统的PID以获取端口之前将端口重新分配给其他应用程序,则会失败.因此,这不是万无一失的证据,但如果用户意识到这些限制,它仍然是一个有用的功能. (23认同)
  • 好点..也就是我的想法..让我等一天才关闭这个,只是因为有一个wirehark忍者在那里设法做到这一点.. (6认同)

tw3*_*124 15

您可以将wireshark中的端口号与netstat中的端口号进行匹配,这将告诉您侦听该端口的进程的PID.

  • 好吧,这可能不起作用..程序打开并关闭了很多本地和远程端口 (12认同)

Enk*_*nki 12

使用Microsoft Message Analyzer v1.4

从字段选择器导航到ProcessId.

Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Run Code Online (Sandbox Code Playgroud)

右键单击并添加为列


小智 9

使用strace比较适合这种情况。

strace -f -e trace=network -s 10000 -p <PID>;
Run Code Online (Sandbox Code Playgroud)

选项:

  • -f还可以跟踪所有分叉进程,
  • -e trace=network仅过滤网络系统调用,
  • -s显示最多 10000 个字符的字符串长度。

您还可以跟踪特定的调用,例如发送、接收和读取操作:

strace -f -e trace=send,recv,read -s 10000 -p <PID>;
Run Code Online (Sandbox Code Playgroud)


Gar*_*aro 8

如果您想跟踪仍然需要启动的应用程序,那么这当然是可能的:

  1. 安装docker(参见https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
  2. 打开终端并运行一个小容器:(docker run -t -i ubuntu /bin/bash将“ubuntu”更改为您最喜欢的发行版,这不必与您的真实系统中的相同)
  3. 使用与在真实系统中安装应用程序相同的方式在容器中安装应用程序。
  4. 在您的真实系统中启动wireshark,转到“捕获”>“选项”。在打开的窗口中,您将看到所有界面。不要选择any, wlan0, eth0, ...,而是选择新的虚拟接口docker0
  5. 开始捕捉
  6. 在容器中启动您的应用程序

您可能对在容器中运行软件有一些疑问,因此以下是您可能想问的问题的答案:

  • 我的应用程序可以在容器内运行吗?几乎可以肯定是的,但是您可能需要了解一些有关 docker 的知识才能使其正常工作
  • 我的应用程序运行速度不会很慢吗?微不足道。如果您的程序需要运行一周的大量计算,那么现在可能需要一周零 3 秒
  • 如果我的软件或其他东西在容器中损坏怎么办?这就是容器的好处。无论里面运行的是什么,都只会破坏当前容器,而不会伤害系统的其余部分。