首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpPcap中的过滤器

SharpPcap中的过滤器
EN

Stack Overflow用户
提问于 2012-05-10 23:21:35
回答 1查看 1.5K关注 0票数 0

我正试着过滤掉wifi上的探测和广播帧。

使用SharpPcap。

代码语言:javascript
复制
((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "wlan.fc.type eq 0";

不工作

同上

代码语言:javascript
复制
((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "wlan.fc.type == 0";

这行似乎允许广播

代码语言:javascript
复制
((SharpPcap.AirPcap.AirPcapDevice)(device)).Filter = "broadcast";

但需要真正获得所有可管理的帧。

EN

回答 1

Stack Overflow用户

发布于 2013-03-14 16:49:43

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

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

例如,我一直在使用这个过滤器。

代码语言:javascript
复制
private const String filteringSV = "(ether[0:4] = 0x010CCD04)";

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

代码语言:javascript
复制
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);
            }
         }

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10537223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档