다음을 통해 공유


PATTERNMATCH 필터 작성

패턴 일치 필터는 특정 오프셋에 특정 패턴이 있는 프레임을 허용하도록 드라이버에 알깁니다. 네트워크 모니터 드라이버 평가를 위해 논리 AND 또는 OR 문으로 결합할 수 있는 최대 4개의 자세한 패턴 일치를 지정할 수 있습니다.

패턴 일치를 구현하려면 다음 네트워크 모니터 구조를 사용합니다.

OR 문을 평가하려면 ANDEXP 구조체와 일치하는 2~4개의 패턴을 결합합니다(PatternMatch1 || PatternMatch2 || PatternMatch3). AND 문을 평가하려면 1~4개의 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 설정되면 비교가 더 복잡해집니다. 먼저 드라이버는 오프셋 기본 프로토콜이 있는지 확인한 다음 지정된 포트가 프레임의 포트와 일치하는지 확인합니다. 마지막으로 드라이버는 오프셋이 IP 또는 IPX의 끝에서 온 것을 제외하고 PatternToMatch 멤버가 이전과 일치하도록 합니다. 이 두 가지 중 하나가 아닌 경우 PATTERN_MATCH_FLAGS_PORT_SPECIFIED 플래그가 무시되고 패턴이 위와 같이 평가됩니다.

단일 패턴 일치를 평가하려면 EXPRESSION 구조에 단일 패턴 일치를 포함하는 하나의 AndExp 멤버가 있어야 합니다.

패턴 일치 필터를 빌드하려면 PATTERNMATCH 구조를 만들고 EXPRESSION 및 ANDEXP 구조체와 논리적으로 결합해야 합니다.

PATTERNMATCH 필터를 작성하려면

  1. ANDEXP 구조에서 배열을 패턴 일치 항목으로 채웁다.
  2. ANDExp 멤버의 배열로 EXPRESSION 구조를 채웁다.
  3. 캡처 필터에 대해 총 4개의 패턴 일치 항목을 초과하지 마세요.
  4. PATTERNMATCH 구조체에서 플래그 유형을 선택합니다.
  5. 오프셋 기준을 선택합니다.
  6. 포트 값을 열거합니다.
  7. 오프셋 값을 정의합니다.
  8. 패턴 길이를 정의합니다.
  9. 패턴 값을 열거합니다.

PATTERNMATCH 예제

이 프레임은 표준 오프셋을 나타냅니다.

standard offset frame

코드 조각은 다음과 같이 구현됩니다.

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

이 프레임은 IPX에 대해 포트 지정 오프셋을 보여 줍니다.

port-specified offset frame

예제 코드는 다음과 같이 구현됩니다.

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