134

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

4

9 回答 9

75

如果您使用的是 Windows ,这是不可能的- 请阅读下文。您可以改用机器的本地地址,然后您就可以捕获内容。请参阅CaptureSetup/Loopback

总结:你可以在 Linux 上的 loopback 接口上捕获,在包括 Mac OS X 在内的各种 BSD 上,以及在 Digital/Tru64 UNIX 上,你可能可以在 Irix 和 AIX 上进行捕获,但在 Solaris、HP 上绝对不能这样做-UX ...

尽管该页面提到这在单独使用 Wireshark 的 Windows 上是不可能的,但您实际上可以使用其他答案中提到的解决方法来记录它。


编辑:大约 3 年后,这个答案不再完全正确。链接页面包含在环回接口上捕获的说明

于 2011-05-01T07:45:37.607 回答
56

出于某种原因,以前的答案都不适用于我的情况,所以我会发布一些可以解决问题的东西。有一个叫做RawCap的小宝石可以捕获 Windows 上的本地主机流量。好处:

  • 只有 17 KB!
  • 不需要外部库
  • 使用非常简单(只需启动它,选择环回接口和目标文件,仅此而已)

抓到流量后,可以在Wireshark中正常打开查看。我发现的唯一缺点是您无法设置过滤器,即您必须捕获所有可能很重的本地主机流量。还有一个关于 Windows XP SP 3 的错误。

更多建议:

于 2013-01-25T15:59:34.767 回答
48

在 Windows 平台上,还可以使用 Wireshark 捕获 localhost 流量。您需要做的是安装Microsoft 环回适配器,然后对其进行嗅探。

于 2012-01-14T02:25:28.017 回答
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,刚刚访问。

于 2012-03-08T12:55:07.347 回答
12

通过立即读取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 过滤器功能。

于 2017-05-07T18:54:25.083 回答
11

请尝试 Npcap:https ://github.com/nmap/npcap ,它基于 WinPcap,支持 Windows 上的环回流量捕获。Npcap 是 Nmap ( http://nmap.org/ ) 的一个子项目,所以请在 Nmap 的开发列表 ( http://seclists.org/nmap-dev/ )上报告任何问题。

于 2015-08-25T13:08:58.100 回答
9

对于Windows

您无法在Wireshark中为Local Loopback捕获数据包,但是您可以使用一个非常小但有用的程序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
于 2015-12-21T23:56:31.817 回答
6

您无法在 Solaris、HP-UX 或 Windows 上捕获环回,但是您可以使用RawCap等工具轻松解决此限制。

RawCap 可以捕获任何 ip 上的原始数据包,包括127.0.0.1(localhost/loopback)。Rawcap 也可以生成pcap文件。您可以使用Wireshark打开和分析pcap文件。

有关如何使用 RawCap 和 Wireshark 监控 localhost 的完整详细信息,请参见此处。

于 2014-03-14T20:50:40.173 回答
2

是的,您可以使用 Npcap Loopback Adapter 监控 localhost 流量

于 2018-12-01T02:22:19.740 回答