pCap捕获传出的数据包

时间:2012-12-24 09:20:44

标签: c linux networking network-programming libpcap

问题是,pCap库是否允许捕获本地系统生成的数据包?类似于netfitler hook NF_IP_LOCAL_OUT但是在用户空间?
如果pCap不支持这个,那么有没有受到良好支持的库可以吗?

在网上看,有些人提到pCap有一个名为setDirection的功能,它根据流量方向设置我们捕获的流量,但很多人说这个功能只在Windows上运行;而且我有时间了解pCap只是为了测试它是否可以做我需要做的事情。

3 个答案:

答案 0 :(得分:2)

  

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

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

答案 1 :(得分:1)

我当然使用tcpdump(在linux上)来捕获本地接口上的流量并从自己的机器中获取流量。由于tcpdump使用libpcap,因此必须这样做。

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

再次,对于没有“给你代码”的轻微道歉。

答案 2 :(得分:0)

dumpcap -i<捕捉界面>捕获实时流量,

Dumpcap是一种网络流量转储工具。它允许您从实时网络捕获数据包数据并将数据包写入文件。 Dumpcap的本机捕获文件格式是libpcap格式,也是Wireshark,tcpdump和各种其他工具使用的格式。