0

我试图过滤掉 wifi 上的 Probes 和 Broadcast 帧。

使用 SharpPcap。

((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "wlan.fc.type eq 0";

不工作

((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "wlan.fc.type == 0";

这条线似乎允许广播

((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "broadcast";

但需要真正获得所有管理框架。

4

1 回答 1

0

我认为您的问题如下:Wireshark 解码数据包,因此当您应用这些过滤器时,数据包已经解码,因此能够访问 wlan.fc.type 字段。

根据我的个人经验和 SharpPcap 的使用,您尝试使用的过滤器是根据字节 [] 计算的,因此您需要更加具体以确保正确应用它。

例如,我一直在使用这个过滤器来达到我的目的。

private const String filteringSV = "(ether[0:4] = 0x010CCD04)";

此外,请记住仅在已打开的设备上设置过滤器。

if (nicToUse != null)
         {
            try
            {
               nicToUse.OnPacketArrival -= OnPackectArrivalLive;
               nicToUse.OnPacketArrival += OnPackectArrivalLive;
               try
               {
                  if (nicToUse.Started)
                     nicToUse.StopCapture();
                  if (nicToUse.Opened)
                     nicToUse.Close();
               }
               catch (Exception)
               {
                  //no handling, just do it.
               }

               nicToUse.Open(OpenFlags.Promiscuous|OpenFlags.MaxResponsiveness,10);                 

               nicToUse.Filter = "(ether[0:4] = 0x010CCD04)";

               nicToUse.StartCapture();
            }
            catch (Exception ex)
            {
               throw new Exception(Resources.SharpPCapPacketsProducer_Start_Error_while_starting_online_capture_, ex);
            }
         }

希望它有所帮助。

于 2013-03-14T08:49:43.323 回答