Aracılığıyla paylaş


PATTERNMATCH Filtresi Yazma

Desen eşleştirme filtresi, sürücüye belirli bir uzaklıkta belirli bir desene sahip çerçeveleri kabul ettiğini bildirir. Ağ İzleyicisi sürücü değerlendirmesi için mantıksal AND veya OR deyimlerinde birleştirilebilen en fazla dört ayrıntılı desen eşleşmesi belirtebilirsiniz.

Desen eşleşmelerini uygulamak için aşağıdaki Ağ İzleyicisi yapılarını kullanın:

VEYA deyimini değerlendirmek için, bir ANDEXP yapısıyla eşleşen iki ile dört deseni birleştirin (PatternMatch1 || PatternMatch2 || PatternMatch3). AND deyimini değerlendirmek için, bir ile dört ANDEXP yapısını ve bir EXPRESSION yapısını (AndExp1 && AndExp2) birleştirin.

Desen Eşleştirme Tanımları

Tek bir desen eşleşmesi, PATTERNMATCH yapısı tarafından tanımlanır. Tek bir eşleşme iki şekilde çalışabilir.

Normalde, sürücü uzaklık temelini alır (OFFSET_BASIS_RELATIVE_TO_FRAME, OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL, OFFSET_BASIS_RELATIVE_TO_IPX veya OFFSET_BASIS_RELATIVE_TO_IP olabilir) ve orada saymaya başlar. Sürücü, buradan uzaklık baytlarını sayar ve bulduğu verileri PatternToMatchiçindeki ilk uzunluk baytlarıyla eşleştirir. Bunlar aynıysa ve PATTERN_MATCH_FLAGS_NOT bayrağı ayarlanmadıysa, bu desen kabul edilir. Bunlar farklıysa ve PATTERN_MATCH_FLAGS_NOT olarak ayarlanmışsa, desen geçer. Aksi takdirde bu düzen başarısız olur.

Veya:

PATTERN_MATCH_FLAGS_PORT_SPECIFIED bayrağı ayarlanırsa ve temel OFFSET_BASIS_RELATIVE_TO_IPX veya OFFSET_BASIS_RELATIVE_TO_IP olarak ayarlanırsa, karşılaştırma daha karmaşıktır. İlk olarak, sürücü uzaklık temel protokolünün orada olmasını sağlar, ardından sürücü belirtilen bağlantı noktasının çerçevedeki bağlantı noktasıyla eşleşip eşleşmediğini doğrular. Son olarak sürücü, PatternToMatch üyesinin önceki durumla aynı şekilde eşleştiğinden emin olur, ancak buradaki fark uzaklığın IP veya IPX'in sonundan gelmesidir. Temel bu iki seçenekten biri değilse, PATTERN_MATCH_FLAGS_PORT_SPECIFIED bayrağı yoksayılır ve desen yukarıdaki gibi değerlendirilir.

Tek bir desen eşleşmesini değerlendirmek için, EXPRESSION yapısının tek bir desen eşleşmesi içeren bir AndExp üyesi olmalıdır.

Desen eşleştirme filtresinin oluşturulması, PATTERNMATCH yapıları oluşturmayı ve bunları EXPRESSION ve ANDEXP yapıları ile mantıksal olarak birleştirmeyi içerir.

PATTERNMATCH filtresi yazmak için

  1. ANDEXP yapısında diziyi desen eşleşmeleriyle doldurun.
  2. EXPRESSION yapısını AndExp üyeleri dizisiyle doldurun.
  3. Yakalama filtresi için toplam dört desen eşleşmesini aşmayın.
  4. PATTERNMATCH yapısında bir bayrak türü seçin.
  5. Bir ofset temeli seçin.
  6. Bağlantı noktası değerini numaralandır.
  7. Ofset değerini tanımlayın.
  8. Desen uzunluğunu tanımlayın.
  9. Desen değerini numaralandırın.

PATTERNMATCH Örnekleri

Bu çerçeve standart bir ofseti temsil eder.

standart offset çerçevesi

Kod parçası şu şekilde uygulanır:

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

Bu çerçeve, bağlantı noktası tarafından belirtilen uzaklığı (IPX'e karşı) gösterir.

bağlantı noktası tarafından belirtilen uzaklık çerçevesi

Örnek kod şu şekilde uygulanır:

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