我用C语言编写了一个简单的服务器应用程序,该应用程序在localhost上运行。如何使用Wireshark捕获本地主机流量?
我用C语言编写了一个简单的服务器应用程序,该应用程序在localhost上运行。如何使用Wireshark捕获本地主机流量?
Answers:
如果您使用Windows, 则不可能 -请阅读以下内容。您可以改为使用计算机的本地地址,然后就可以捕获东西。请参阅CaptureSetup / Loopback。
简介:您可以在Linux,各种BSD(包括Mac OS X)和Digital / Tru64 UNIX的回送接口上进行捕获,也许可以在Irix和AIX上进行捕获,但是在Solaris,HP上绝对不能捕获-UX ...。
尽管页面提到在单独使用Wireshark的Windows上无法做到这一点,但是您实际上可以使用其他答案中提到的解决方法将其记录下来。
编辑:3年后,此答案不再完全正确。链接的页面包含在回送界面上进行捕获的说明。
由于某种原因,在我的情况下,以前的答案均无效,因此我将发布能够解决问题的方法。有一个名为RawCap的小工具,可以捕获Windows上的本地主机流量。优点:
捕获流量后,您可以将其打开并在Wireshark中正常检查。我发现的唯一缺点是您无法设置过滤器,即必须捕获所有可能很繁重的localhost流量。关于Windows XP SP 3,还有一个错误。
更多建议:
在Windows平台上,也可以使用Wireshark捕获本地主机流量。您需要做的是安装Microsoft回送适配器,然后对其进行嗅探。
我实际上还没有尝试过,但是从网络上得到的答案听起来很有希望:
由于Windows TCP堆栈的性质,Wireshark实际上无法在Windows XP上捕获本地数据包。在同一台计算机上发送和接收数据包时,它们似乎并没有越过wireshark监视的网络边界。
但是,有一种解决方法,可以通过在Windows XP计算机上设置(临时)静态路由,通过网络网关(路由器)路由本地通信。
假设您的XP IP地址为192.168.0.2,而网关(路由器)地址为192.168.0.1,则可以从Windows XP命令行运行以下命令,以强制所有本地流量通过网络边界传回,因此,wireshark可以跟踪数据(请注意,wireshark在这种情况下将报告数据包两次,一次是在离开您的PC时一次,一次是在返回时)。
route add 192.168.0.2 mask 255.255.255.255 192.168.0.1 metric 1
请尝试Npcap:https : //github.com/nmap/npcap,它基于WinPcap并支持Windows上的回送流量捕获。Npcap是Nmap的子项目(http://nmap.org/),因此请在Nmap的开发列表(http://seclists.org/nmap-dev/)上报告任何问题。
Starting from Windows Vista: Npcap is an update of WinPcap using NDIS 6 Light-Weight Filter (LWF), done by Yang Luo for Nmap project during Google Summer of Code 2013 and 2015. Npcap has added many features compared to the legacy WinPcap.
您可以通过即时读取RawCap的输出来查看Wireshark中的回送流量。cmaynard 在Wireshark论坛上描述了这种巧妙的方法。我会在这里引用它:
[...]如果您想查看Wireshark中的实时流量,仍然可以通过从一个命令行运行RawCap并从另一个命令行运行Wireshark来进行。假设您有cygwin的尾巴,可以使用以下方法实现:
cmd1: RawCap.exe -f 127.0.0.1 dumpfile.pcap
cmd2: tail -c +0 -f dumpfile.pcap | Wireshark.exe -k -i -
它需要cygwin的尾巴,而我找不到使用Windows开箱即用工具进行此操作的方法。他的方法对我来说非常有效,并允许我对捕获的环回流量实时使用所有Wiresharks过滤器功能。
stdout
。因此,从今天开始,上述提供的解决方案可以简化为以下内容,而无需tail
进行以下操作: RawCap.exe -q 127.0.0.1 - | Wireshark.exe -i - -k
您可以在以下位置的RawCap Redux公告页面上阅读有关RawCap新功能的更多信息:netresec.com/?
对于Windows,
您无法在Wireshark中捕获本地环回的数据包,但是可以使用一个很小但有用的程序RawCap;
在命令提示符下运行RawCap并选择Loopback Pseudo-Interface(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