【问题标题】:How to capture only traffic sent or destined to the local machine using WinPCAP?如何使用 WinPCAP 仅捕获发送或发往本地计算机的流量?
【发布时间】:2014-06-21 11:35:04
【问题描述】:

我只想捕获发送或发往本地计算机的流量(无混杂模式)。尽管如此,广播流量也应该被捕获。

那么,问题是如何打开适配器?应该使用哪些标志?这种捕获没有特定的标志。我只找到了以下标志:

#define PCAP_OPENFLAG_PROMISCUOUS   1
// Defines if the adapter has to go in promiscuous mode. 

#define PCAP_OPENFLAG_DATATX_UDP   2
// Defines if the data trasfer (in case of a remote capture) has to be done with UDP protocol. 

#define PCAP_OPENFLAG_NOCAPTURE_RPCAP   4
// Defines if the remote probe will capture its own generated traffic. 

#define PCAP_OPENFLAG_NOCAPTURE_LOCAL   8
// Defines if the local adapter will capture its own generated traffic. 

#define PCAP_OPENFLAG_MAX_RESPONSIVENESS   16
// This flag configures the adapter for maximum responsiveness. 

那么,我应该在混杂模式下打开适配器并设置适当的过滤器吗?或者是否有更好的可能性来实现这个目标(在 WinPCAP 捕获驱动程序的处理更少方面更好)?

感谢您的澄清! 乔纳斯

【问题讨论】:

    标签: pcap winpcap


    【解决方案1】:

    我只想捕获发送或发往本地计算机的流量(无混杂模式)。

    那就不要开启混杂模式。

    不过,广播流量也应该被捕获。

    将始终捕获广播流量(除非您指定过滤器,例如 !broadcast,将其明确过滤掉)。

    【讨论】:

    • 感谢您的回答。所以,为了我的澄清,你建议我将标志值设置为 0,是吗?您还要设置过滤器吗?例如。如果另一个 pcap 应用程序,例如 Wireshark,以混杂模式运行怎么办?如果我只是将标志设置为 0 并且不使用过滤器会发生什么。在这种情况下,我的应用程序会收到所有帧,尽管那些帧不是发往机器的吗?再次感谢!
    • "你建议我将标志值设置为 0,是吗?"是的。 “你还要不要设置一个过滤器?”仅当您想进一步限制您看到的数据包时。
    • “例如,如果另一个 pcap 应用程序,例如 Wireshark,以混杂模式运行怎么办?”我不确定 - 这取决于驱动程序(如 WinPcap 驱动程序)的每个 instance 是否具有 NDIS 意义上的单独“过滤器”(它是 NOT 过滤器在 pcap 意义上;混杂与非混杂是 NDIS“过滤器”的一部分),或者每个 驱动程序 都这样做。 Microsoft 文档没有说明这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多