Wireshark本地主机流量捕获

147

我用C语言编写了一个简单的服务器应用程序,它在本地主机上运行。如何使用Wireshark捕获本地主机流量?


为什么这个问题被关闭了? - Sylvain Rodrigue
为什么这个问题被关闭了? - Sylvain Rodrigue
9个回答

80
如果您正在使用Windows,就不能直接捕获数据包,但可以使用本地地址作为替代方案来获取数据。请查看 CaptureSetup/Loopback。在Linux、Mac OS X等各种BSD以及Digital/Tru64 UNIX上均可捕获回环接口上的数据包,也许在Irix和AIX上也可以,但是您绝对无法在Solaris、HP-UX上进行捕获。此页面虽然提到了这在 Windows 上不可能使用 Wireshark 单独完成,但事实上可以使用一个解决办法来记录它,具体请参见另一个答案
编辑:三年后,这个答案不再完全正确。链接页面包含了有关如何在回环接口上捕获数据包的说明。

feuGene的答案确实有效。 - GWLlosa
@GWLlosa 是的。你可以使用你机器的本地地址 - cnicutar
7
仅仅在Wireshark中将自己的IP地址替换为回环地址是不够的,需要添加路由才能使它在我的情况下正常工作。 - GWLlosa
1
谢谢。在OS X上,环回接口是lo0。选择en1或者你的默认接口似乎行不通。 - sudo
请尝试使用Npcap:https://github.com/nmap/npcap,它基于WinPcap并支持在Windows上捕获环回流量。 Npcap是Nmap(http://nmap.org/)的子项目,因此请在Nmap的开发列表(http://seclists.org/nmap-dev/)上报告任何问题。 - hsluoyz
显示剩余2条评论

56

由于某种原因,以前的答案都不适用于我的情况,所以我会发布一些有效的东西。有一个叫做RawCap的小工具可以在Windows上捕获本地主机流量。优点:

  • 仅17 kB!
  • 无需外部库
  • 非常简单易用(只需启动它,选择环回接口和目标文件即可)

捕获流量后,您可以正常打开Wireshark并检查它。我发现唯一的缺点是您不能设置过滤器,即必须捕获所有本地主机流量,可能会很大。还有一个关于Windows XP SP 3的错误

更多建议:


1
无需设置,非常简单。 - vibhu
你可以让Wireshark立即读取RawCap的输出,从而实现实时捕获。请参阅我的答案以获取详细信息。 - Richard Kiefer

49
在 Windows 平台上,也可以使用 Wireshark 捕获 localhost 流量。 需要做的是安装 Microsoft Loopback Adapter,然后对其进行嗅探。

19
在Windows 7上,我设法让它正常工作。设备管理器->添加旧版硬件->我会选择->网络->Microsoft->环回适配器。 安装完成后,使用您选择的IP地址对其进行配置。 然后:重新安装wireshark以便在新接口上重新安装捕获驱动程序 - 每次向Windows添加新接口(loopback或真实接口)时都必须执行此操作。 - antiduh
4
按照 @antiduh 在 Win 7 的指示操作了一遍,虽然我看到了一些 NetBIOS 查询,但是没有在本地主机上看到 HTTP 流量。 - Carlos Rendon
在Windows 7上设置环回适配器时,我发现这个YouTube视频非常有用。https://www.youtube.com/watch?v=KsWICPPO_N8 - developer747
这似乎在 Windows 8 上无法工作 - 可以在 Wireshark 中看到环回适配器,并且它的 IP 作为一个环回,但没有流量被记录。 - jsalter
1
Wireshark Wiki提到了这个适配器的问题,例如“但它不能在127.0.0.1 IP地址上工作;它将使用自己的IP地址”。 - Richard Kiefer
显示剩余4条评论

26

我并没有亲自尝试过,但网上的这个答案听起来很有希望:

由于 Windows TCP 栈的性质,Wireshark 实际上无法在 Windows XP 上捕获本地数据包。当数据包在同一台机器上发送和接收时,它们似乎不会跨越 Wireshark 监视的网络边界。

但是有一个解决办法,您可以通过在 Windows XP 计算机上设置(临时)静态路由,将本地流量路由到您的网络网关(路由器)以外。

假设您的 XP IP 地址为 192.168.0.2,网关(路由器)地址为 192.168.0.1,则可以从 Windows XP 命令行运行以下命令,强制所有本地流量出站并跨越网络边界返回,这样 Wireshark 就可以跟踪该数据(请注意,在此情况下,Wireshark 会报告数据包两次,一次是当它们离开您的计算机时,另一次是当它们返回时)。

route add 192.168.0.2 mask 255.255.255.255 192.168.0.1 metric 1

http://forums.whirlpool.net.au/archive/1037087,刚刚访问。


6
我尝试过这个方法,发现它非常有效。 - GWLlosa
无法在Win 7 32位上工作。 - vantrung -cuncon

12
您可以通过让Wireshark实时读取RawCap的输出来查看回环流量。 cmaynard在Wireshark论坛上描述了这种巧妙的方法。我在此引用它:
[...]如果您想在Wireshark中查看实时流量,仍然可以通过从一个命令行运行RawCap并从另一个命令行运行Wireshark来完成。假设您有cygwin的tail可用,可以使用以下命令:
cmd1: RawCap.exe -f 127.0.0.1 dumpfile.pcap cmd2: tail -c +0 -f dumpfile.pcap | Wireshark.exe -k -i -

这需要使用cygwin的tail工具,我无法在Windows的原生工具中找到实现方法。他的方法对我来说非常有效,使我能够在捕获的回环流量上实时使用Wireshark的所有过滤功能。


3
对我来说,关键部分是在延迟一段时间后开始第二个CMD命令,否则Wireshark无法读取.pcap文件。可能是因为需要一些记录的流量才能开始读取。 - Richard Kiefer
这应该是被接受的答案(只需要从 git bash 运行 cmd2)。 - fider
4
更新:Netresec今天宣布(2020年1月30日),RawCap的新版本现在支持写入管道或stdout。因此,从今天开始,上面提供的解决方案可以简化为以下形式,无需使用tail`RawCap.exe -q 127.0.0.1 - | Wireshark.exe -i - -k`您可以在RawCap Redux公告页面上阅读有关新RawCap功能的更多信息:https://www.netresec.com/?page=Blog&month=2020-01&post=RawCap-Redux - Christopher Maynard

11

从Wireshark的文档中选择#1: 从Windows Vista开始: Npcap是WinPcap的更新版本,使用NDIS 6轻量级过滤器(LWF)由Yang Luo为Nmap项目在2013年和2015年的Google Summer of Code期间完成。与传统的WinPcap相比,Npcap添加了许多功能。 - KCD
您可以从此处下载安装程序:https://nmap.org/npcap/ - Wayne Phipps
2
了解NPcap在商业环境中有一些许可限制是很好的。 - Jan Smrčina

9

对于Windows系统,

Wireshark中无法捕获本地环回的数据包,但是您可以使用一个非常小巧但实用的程序RawCap

RawCap

命令提示符上运行RawCap并选择Loopback Pseudo-Interface(127.0.0.1),然后只需编写数据包捕获文件的名称(.pcap)。

以下是一个简单的演示:

C:\Users\Levent\Desktop\rawcap>rawcap
Interfaces:
 0.     169.254.125.51  Local Area Connection* 12       Wireless80211
 1.     192.168.2.254   Wi-Fi   Wireless80211
 2.     169.254.214.165 Ethernet        Ethernet
 3.     192.168.56.1    VirtualBox Host-Only Network    Ethernet
 4.     127.0.0.1       Loopback Pseudo-Interface 1     Loopback
Select interface to sniff [default '0']: 4
Output path or filename [default 'dumpfile.pcap']: test.pcap
Sniffing IP : 127.0.0.1
File        : test.pcap
Packets     : 48^C

6
您无法在Solaris、HP-UX或Windows上捕获环回,但您可以使用像RawCap这样的工具很容易地解决这个限制。

RawCap可以捕获任何IP(包括127.0.0.1本地主机/环回)的原始数据包。Rawcap还可以生成pcap文件,您可以使用Wireshark打开和分析pcap文件。

有关使用RawCap和Wireshark监视本地主机的详细信息,请参见此处


3

是的,您可以使用Npcap Loopback Adapter来监视本地主机流量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接