在Wireshark中按进程/ PID过滤

时间:2009-08-27 08:35:54

标签: wireshark

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

11 个答案:

答案 0 :(得分:85)

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

答案 1 :(得分:51)

我不知道怎么做。 PID不会使它成为线路(一般来说),而且Wireshark允许您查看线路上的内容 - 可能所有通过线路进行通信的机器。无论如何,进程ID在不同的机器上并不是唯一的。

答案 2 :(得分:13)

您可以将wireshark中的端口号与端口号匹配,例如netstat,它将告诉您侦听该端口的进程的PID。

答案 3 :(得分:11)

使用Microsoft Message Analyzer v1.4

从字段选择器导航到ProcessId。

Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId

右键单击添加为列

答案 4 :(得分:3)

在Windows上,有一个实验性版本可以执行此操作,如邮件列表 Filter by local process name

所述

答案 5 :(得分:3)

能够监视某些进程尝试连接的位置是一件很重要的事情,而且似乎没有任何方便的方法可以在Linux上执行此操作。但是,有几种解决方法是可行的,所以我觉得值得一提。

有一个名为nonet的程序,它允许运行一个无法访问Internet的程序(我的系统上的大多数程序启动程序都设置了它)。它使用setguid在组nonet中运行进程,并设置iptables规则以拒绝来自该组的所有连接。

更新:到现在为止,我使用了一个更简单的系统,您可以轻松地使用ferm进行可读的iptables配置,只需使用程序sg来运行具有特定组的程序。 Iptables还允许您重新路由流量,因此您甚至可以将其路由到单独的接口或端口上的本地代理,如果您不想在禁用所有互联网时,您可以直接从iptables过滤wireshark或LOG数据包正在检查交通。

使用它来运行组中的程序并使用iptables切断所有其他流量以执行生命周期并不是很复杂,然后您只能从此进程捕获流量。

如果我来写这篇文章,我会在这里发布一个链接。

另一方面,您可以随时在虚拟机中运行一个进程并嗅探正确的界面以隔离它所建立的连接,但这将是一个非常低劣的解决方案......

答案 6 :(得分:1)

如果您想关注仍然需要启动的应用程序,那么它当然是可能的:

  1. 安装泊坞窗(请参阅https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
  2. 打开终端并运行一个小容器:docker run -t -i ubuntu /bin/bash(将“ubuntu”更改为您喜爱的发行版,这不一定与您的真实系统相同)
  3. 使用与在真实系统中安装应用程序相同的方式在容器中安装应用程序。
  4. 在真实系统中启动wireshark,转到捕获>选项。在打开的窗口中,您将看到所有界面。而不是选择anywlan0eth0,...而是选择新的虚拟界面docker0
  5. 开始捕捉
  6. 在容器中启动您的应用程序
  7. 您可能对在容器中运行软件有疑问,因此以下是您可能想要问的问题的答案:

    • 我的应用程序是否可以在容器中运行?几乎肯定是的,但您可能需要了解一些有关docker才能使其正常工作的信息
    • 我的应用程序不会运行缓慢吗?可忽略不计。如果你的程序在一周内运行繁重的计算,那么现在可能需要一周3秒
    • 如果我的软件或其他东西在容器中破坏怎么办?这对容器来说是件好事。无论在里面运行什么都只能打破当前的容器,不会伤害系统的其他部分。

答案 7 :(得分:0)

在某些情况下,您无法按进程ID进行过滤。例如,在我的情况下,我需要从一个进程嗅探流量。但我发现在其配置目标机器的IP地址中添加了过滤器ip.dst==someip和瞧。它在任何情况下都不会起作用,但对某些人来说它很有用。

答案 8 :(得分:0)

使用netstat获取端口号:

netstat -b

然后使用Wireshark过滤器:

tcp.port == portnumber

答案 9 :(得分:-1)

使用strace更适合这种情况。

strace -f -e trace=network -s 10000 -p <PID>;

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

您还只能跟踪某些调用,例如send,recv,read操作。

strace -f -e trace=send,recv,read -s 10000 -p <PID>;

答案 10 :(得分:-13)

您可以在wireshark上使用以下命令示例检查端口号: -

tcp.port == 80

tcp.port == 14220