Delen via


Het PATTERNMATCH-filter schrijven

Het patroon filter geeft het stuurprogramma aan om frames te accepteren die een specifiek patroon op een specifieke offset hebben. U kunt maximaal vier gedetailleerde patroonovereenkomsten opgeven, die kunnen worden gecombineerd in logische EN- of OR-instructies voor de evaluatie van stuurprogramma's van Network Monitor.

Gebruik de volgende netwerkmonitorstructuren om patroonovereenkomsten te implementeren:

Als u een OR-instructie wilt evalueren, combineert u twee tot vier patronen die overeenkomen met een ANDEXP structuur (PatternMatch1 || PatternMatch2 || PatternMatch3). Als men een EN-verklaring wil evalueren, combineert men één tot vier ANDEXP structuren en een EXPRESSION structuur (AndExp1 && AndExp2).

Definities van patroonovereenkomst

Eén patroonvergelijking wordt gedefinieerd door de PATTERNMATCH structuur. Een afzonderlijke wedstrijd kan op twee manieren worden uitgevoerd.

Normaal gesproken neemt het stuurprogramma de offsetbasis (deze kan OFFSET_BASIS_RELATIVE_TO_FRAME, OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL, OFFSET_BASIS_RELATIVE_TO_IPX of OFFSET_BASIS_RELATIVE_TO_IP zijn) en begint daar te tellen. Het stuurprogramma telt offsetbytes van daaruit en vergelijkt vervolgens de gevonden gegevens met de eerste lengtebytes in PatternToMatch. Als ze hetzelfde zijn en de vlag PATTERN_MATCH_FLAGS_NOT niet is ingesteld, wordt dit patroon doorgegeven. Als ze verschillend zijn en de PATTERN_MATCH_FLAGS_NOT is ingesteld, wordt het patroon geaccepteerd. Anders mislukt dit patroon.

Of:

Als de vlag PATTERN_MATCH_FLAGS_PORT_SPECIFIED ingesteld is en de uitgangspositie ingesteld is op OFFSET_BASIS_RELATIVE_TO_IPX of OFFSET_BASIS_RELATIVE_TO_IP, wordt de vergelijking gecompliceerder. Eerst zorgt het stuurprogramma ervoor dat het offsetbasisprotocol er is en controleert het stuurprogramma of de opgegeven poort overeenkomt met de poort in het frame. Ten slotte zorgt het stuurprogramma ervoor dat het PatternToMatch-lid overeenkomt zoals voorheen, met uitzondering dat de offset vanaf het einde van IP of IPX is. Houd er rekening mee dat als de basis niet een van deze twee is, de vlag PATTERN_MATCH_FLAGS_PORT_SPECIFIED wordt genegeerd en het patroon wordt geëvalueerd zoals hierboven.

Om een enkele patroonovereenkomst te evalueren, moet een EXPRESSION structuur een AndExp-lid bevatten met een enkele patroonovereenkomst.

Het bouwen van het patroonovereenkomstfilter omvat het maken van PATTERNMATCH structuren en het logisch combineren ervan met EXPRESSION en ANDEXP structuren.

Een PATTERNMATCH-filter schrijven

  1. Vul in de ANDEXP structuur de matrix in met patroonovereenkomsten.
  2. Vul de EXPRESSION structuur in met een matrix van AndExp leden.
  3. Overschrijd niet in totaal vier patroonovereenkomsten voor het opnamefilter.
  4. Selecteer een vlagtype in de PATTERNMATCH structuur.
  5. Selecteer een offsetbasis.
  6. Een poortwaarde enumereren.
  7. Definieer de offsetwaarde.
  8. Definieer de patroonlengte.
  9. De patroonwaarde opsommen.

Voorbeelden van PATTERNMATCH

Dit frame vertegenwoordigt een standaard offset.

standaard offset-frame

Het codefragment wordt geïmplementeerd als:

Basis  ->   IP
Offset ->   4 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}

Dit frame toont een poort-opgegeven offset (tegen IPX).

door poort opgegeven offsetframe

De voorbeeldcode wordt geïmplementeerd als:

Port   ->   544
Basis  ->   IPX
Offset ->   2 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}