0

Wi-Fi上のプローブとブロードキャストフレームだけを除外しようとしています。

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 に答える