共用方式為


撰寫 PATTERNMATCH 篩選器

模式匹配過濾器會通知驅動程式接受在特定偏移量具有特定模式的框架。 您可以指定最多四個詳細的模式比對,這可以在邏輯 AND 或 OR 語句中結合,以進行網路監視器驅動程式評估。

若要實作模式比對,請使用下列網路監視器結構:

若要評估 OR 語句,請結合兩到四個模式符合 ANDEXP 結構(模式匹配1 || 模式匹配2 || 模式匹配3)。 若要評估 AND 語句,請結合一到四個 ANDEXP 結構和 EXPRESSION 結構 (AndExp1 && AndExp2)。

模式比對定義

單一模式比對是由 PATTERNMATCH 結構所定義。 個別比對可以透過兩種方式之一運作。

通常,驅動程式會採用位移基礎(可以是OFFSET_BASIS_RELATIVE_TO_FRAME、OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL、OFFSET_BASIS_RELATIVE_TO_IPX或OFFSET_BASIS_RELATIVE_TO_IP),然後開始計算該處。 驅動程式會計算來自該處的位移位元組,然後比對它找到的數據與 patternToMatch 中的第一個長度位元組。 如果它們相同,且未設定PATTERN_MATCH_FLAGS_NOT旗標,則此模式會通過。 如果兩者不同,且設定了 PATTERN_MATCH_FLAGS_NOT,則該模式會通過。 否則,此模式會失敗。

或:

如果已設定PATTERN_MATCH_FLAGS_PORT_SPECIFIED旗標,且基礎設定為OFFSET_BASIS_RELATIVE_TO_IPX或OFFSET_BASIS_RELATIVE_TO_IP,比較會更加複雜。 首先,驅動程式會確保位移基礎通訊協定存在,然後驅動程式會確認指定的埠符合框架中的埠。 最後,驅動程式可確保 patternToMatch 成員與之前相符,但例外狀況是位移來自 IP 或 IPX 的結尾。 請注意,如果基礎不是這兩者之一,則會忽略PATTERN_MATCH_FLAGS_PORT_SPECIFIED旗標,並將模式評估為上述。

若要評估單一模式比對,EXPRESSION 結構必須有一個包含單一模式比對的 AndExp 成員。

建置模式比對篩選條件牽涉到建立 PATTERNMATCH 結構,並以邏輯方式將它們與 EXPRESSIONANDEXP 結構結合。

撰寫 PATTERNMATCH 篩選條件

  1. ANDEXP 結構中,使用模式匹配填入陣列。
  2. 使用 AndExp 成員的陣列來填充 EXPRESSION 結構。
  3. 請勿超過捕獲篩選器中模式匹配的總數四個。
  4. PATTERNMATCH 結構中,選取旗標類型。
  5. 選擇偏移基準。
  6. 列舉埠值。
  7. 定義位移值。
  8. 定義模式長度。
  9. 列舉模式值。

PATTERNMATCH 範例

此框代表標準偏移。

標準位移框架

代碼段被實作為:

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

此框架描述埠指定的位移(針對IPX)。

由埠指定的偏移框架

範例程式代碼實現為:

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