2

问题是,pCap 库是否允许捕获本地系统生成的数据包?类似于 netfitler 钩子NF_IP_LOCAL_OUT但在用户空间中的东西?
如果 pCap 不能支持这一点,是否有任何支持良好的库可以?

在网上看到有人提到pCap有一个叫setDirection的函数,它可以根据流量方向来设置我们正在捕获的流量,但是很多人说这个函数只有在Windows上;而且我学习 pCap 的时间有点有限,只是为了测试它是否可以做我需要做的事情。

4

3 回答 3

3

问题是,pCap 库是否允许捕获本地系统生成的数据包?

是的。事实上,它默认捕获它们。在较新版本的 libpcap 中,您可以通过调用禁用pcap_setdirection()它,但默认情况下,它会在您捕获的接口上捕获传入和传出数据包。 pcap_setdirection()存在于较新版本的 WinPcap 中,但它只是返回错误;WinPcap-only 有一个标志pcap_open(),可让您禁用捕获传出数据包。

于 2012-12-24T22:38:57.957 回答
1

我当然使用 tcpdump(在 linux 上)来捕获本地接口上的流量并来自自己的机器。由于 tcpdump 使用 libpcap,这一定是可能的。

恐怕这是一个相当垃圾的答案,因为我无法准确告诉您如何配置 libpcap 以捕获本地数据包。但是,我建议 tcpdump 是一个很好的起点——要么简单地使用 tcpdump 本身,要么查看代码 [当然,这可能相当大和复杂,但如果你能弄清楚你需要什么设置来制作 tcpdump做你想做的事,然后你也许可以向 tcpdump 添加一些代码来打印它用于同一件事的设置]。

再次,为没有“给你代码”道歉。

于 2012-12-24T09:34:06.423 回答
0

此外, dumpcap -i < capture interface> 捕获实时流量,

Dumpcap 是一个网络流量转储工具。它允许您从实时网络捕获数据包数据并将数据包写入文件。Dumpcap原生的抓包文件格式是libpcap格式,也是Wireshark、tcpdump等各种工具使用的格式。

于 2012-12-24T09:57:35.133 回答