是否可以通过Wireshark嗅探特定进程的TCP通信量,甚至可以通过插件根据进程ID过滤TCP通信量?

我正在Windows 7上工作,但我想听听同样适用于Linux的解决方案。

评论

strace,请在AskUbuntu上查看此答案,否则,如果您将问题限制为特定于WireShark,我认为没有这种事情。在Windows上,您可以使用网络监视器,它是MS自己创建的嗅探器。另外,还有一个针对Windows的实验性构建,请参阅此邮件列表条目。

Wireshark在网络接口级别上工作,它不知道哪个进程发送了数据包。

@IgorSkochinsky:作为KM驱动程序开发人员,我可以告诉您至少该信息可用。但是,libpcap不仅具有Windows实现,而且我认为此限制可能归因于该库的跨平台性质。

#1 楼

您可能正在寻找DigitalOperatives的网络流量(PAINT)/ Wireshark中的进程归因。它基于Wireshark 1.6.5,可与Windows Vista和更高版本一起使用。它已于2012年12月发布以供研究,从那时起我一直在使用它。

开发人员在博客文章“网络流量中的过程归因”中对其开发人员进行了详细说明。

/>

评论


糟糕,我的糟糕。以为我已经添加了它。链接看来我不能添加两个以上的链接。

–TDKPS
13年5月3日,0:11



好吧,为您修复该问题。希望这样很好。

– 0xC0000022L♦
13年5月3日,0:16

第二个链接坏了

– Hayden Thring
19年2月5日在2:20

#2 楼

好吧,如果您不愿意使用Wireshark,则可以使用Microsoft Network Monitor即时进行。

更好的消息是,在Windows 7(或Win2008 R2)及更高版本上,您可以从命令行开始/停止捕获而无需安装任何程序(甚至可以远程执行)。

此MSDN博客文章介绍了整个(简单)过程。




简短版本:


打开提升的命令提示符并运行:“ netsh trace start持久性=是捕获=是tracefile = c:\ temp \ nettrace-boot.etl”(确保您具有\ temp目录或选择其他位置)。
如果跟踪缓慢的启动方案,请重现此问题或重新启动。
打开提升的命令提示符并运行:“ netsh trace stop”您的跟踪将存储在c:\ temp \ nettrace-boot.el或您保存该跟踪的任何位置。您可以使用netmon在另一台计算机上查看跟踪。



#3 楼

到2018年为止,Wireshark的另一种建议是,由Microsoft开发的,已取代Microsoft Network Monitor的解决方案是Microsoft Message Analyzer。

10月28日发布了此版本的最新版本1.4, 2016年,并且在此之前的常规发布之后,消息分析器TechNet博客在2016年9月之前一直神秘地广播寂静。

评论


Microsoft Messenger Analyzer的下载页面的链接不再存在。因此,这是32位和64位版本的手动下载链接。 32位:download.microsoft.com/download/2/8/3/…64位:download.microsoft.com/download/2/8/3/…v1.4中的已知问题:download.microsoft.com / download / 2/8/3 /…

–dsasmblr
17年12月1日14:12



@dsasmblr您能否更具体地说明哪些链接不起作用?我发布的内容仍在工作。

–TGP1994
17年1月1日在20:39

嗯您拥有的第一个链接最初并不起作用(不过现在是)。即使当我用Google搜索应用程序名称并尝试单击搜索结果中的链接时,它也带我进入了404页。那时MS可能正在更新某些内容。我从页面的缓存版本中获取下载链接。

–dsasmblr
17年12月1日在22:07

我认为您对MS更新某些内容可能是正确的;我记得昨天晚上在下载站点中看到一个奇怪的错误,但是当我刷新时它消失了。

–TGP1994
17年2月2日,下午1:58

#4 楼

在Mac上

sudo unbuffer tshark -lni utun1 2>/dev/null |unbuffer -p grep TCP |tee /dev/tty | unbuffer -p awk -v ip=`ifconfig utun1 |grep inet |awk '{print }'` '{if(==ip){print }else{print }}'  |unbuffer -p grep -owE "[0-9]{1,5}" |xargs  -I {} sh -c  'G=$(echo {}|tr -d "\r"); sudo lsof -i TCP -OPn -o | grep $G'


在Linux上用lsof -i TCP -OPn -o更改netstat -aptun

#5 楼

任意数据包通常不与进程关联。对于已建立的TCP套接字,可以即时查找此信息,但是无法表达捕获过滤器以将过滤限制为单个进程。

其中一些选项是:


如果您知道某个应用程序与某些IP地址或端口联系,则可以指定捕获过滤器,例如udp port 53host example.com
在虚拟机(VM)中运行程序)并捕获来自VM内部或连接到VM外部的网桥的流量。
在Linux上,创建隔离的网络名称空间,并使用虚拟以太网(对)对将新的网络名称空间与主网络名称空间。从veth界面的任一端捕获并在网络名称空间中启动您的过程。对于后一种方法,我编写了一些脚本来使其自动化,可以在https://github.com上找到。 / Lekensteyn / netns。它正是为此目的而专门设计的,它可以从单个流程(及其子流程)创建网络捕获,而不会泄漏其他流量。在Wireshark问题跟踪器中的以下问题中可以找到针对Windows和macOS的潜在方法:


错误16194-允许我们通过发送或接收进程来过滤流量
错误1184-* Shark应该支持将TCP和UDP数据包与进程相关联