Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Network Monitor volá funkci RecognizeFrame analyzátoru, aby určil, že analyzátor rozpozná neupřidělená data rámce. Nezařazená data mohou být na začátku rámce, ale obvykle se nacházejí uprostřed rámce. Následující obrázek znázorňuje nezařazená data umístěná uprostřed rámce.
Network Monitor poskytuje následující informace při volání funkce RecognizeFrame:
- Úchyt na rám.
- Ukazatel na začátek rámce.
- Ukazatel na začátek nepřiřazených dat.
- Hodnota MAC prvního protokolu v paketovém rámci.
- Počet bajtů v nezpracovaných datech; to znamená, bajty, které zůstávají v rámci.
- Popisovač předchozího protokolu.
- Posun předchozího protokolu.
Pokud knihovna DLL analyzátoru určuje, že nezařazená data začínají protokolem analyzátoru, knihovna DLL analyzátoru určuje, kde se spouští další protokol a který protokol následuje. Funkce knihovny DLL analyzátoru fungují následujícími podmíněnými způsoby:
- Pokud knihovna DLL analyzátoru rozpozná nezařazená data, knihovna DLL analyzátoru nastaví parametr pProtocolStatus a vrátí ukazatel na buď další protokol v rámci, nebo NULL. je vrácena hodnota NULL, pokud je aktuální protokol posledním protokolem v rámci.
- Pokud knihovna DLL analyzátoru rozpozná nepřidělená data a identifikuje následující protokol (z informací uvedených v protokolu), vrátí knihovna DLL analyzátoru ukazatel na popisovač dalšího protokolu v phNextProtocol parametru funkce.
- Pokud knihovna DLL analyzátoru nerozpozná neznámá data, vrátí ukazatel na začátek těchto dat a Sledování sítě se nadále snaží tyto neznámé údaje analyzovat.
implementace nástroje RecognizeFrame
Otestujte, abyste zjistili, že protokol rozpoznáte.
Pokud rozpoznáte nepřiřazená data a víte, který protokol následuje, nastavte pProtocolStatus na PROTOCOL_STATUS_NEXT_PROTOCOL, nastavte phNextProtocol na ukazatel, který ukazuje na popisovač pro další protokol, a pak vraťte ukazatel na další protokol.
–nebo–
Pokud rozpoznáte nepřiřazená data a nevíte, jaký protokol následuje, nastavte pProtocolStatus na PROTOCOL_STATUS_RECOGNIZED a pak vraťte ukazatel na další protokol.
–nebo–
Pokud rozpoznáte nepřihlášená data a váš protokol je posledním protokolem v rámci, nastavte pProtocolStatus na PROTOCOL_STATUS_CLAIMED a pak vraťte NULL.
–nebo–
Pokud nerozpoznáte neznámá data, nastavte pProtocolStatus na PROTOCOL_STATUS_NOT_RECOGNIZED a poté vraťte ukazatel, který je vám předán v pProtocol.
Následuje základní implementace RecognizeFrame.
#include <windows.h>
LPBYTE BHAPI MyProtocol_RecognizeFrame( HFRAME hFrame,
LPBYTE pMacFrame,
LPBYTE pProtocol,
DWORD MacType,
DWORD BytesLeft,
HPROTOCOL hPrevProtocol,
DWORD nPreviuosProtOffset,
LPDWORD pProtocolStatus,
LPHPROTOCOL phNextProtocol,
LPDWORD InstData)
// Test unclaimed data.
// If unclaimed data is recognized, but you do not know what follows.
*pProtocolStatus = PROTOCOL_STATUS_RECOGNIZED;
return pProtocol + MY_PROTOCOL_LENGTH;
// If unclaimed data is recognized and you know what follows.
*pProtocolStatus = PROTOCOL_STATUS_NEXT_PROTOCOL;
phNextProtocol = GetProtocolFromTable(
hTable,
ItemToFind,
lpInstData);
return pProtocol + MY_PROTOCOL_LENGTH;
// If unclaimed data is recognized and the protocol is the last
// protocol in the frame.
*pProtocolStatus = PROTOCOL_STATUS_CLAIMED;
return NULL;
// If the unclaimed data is not recognized.
*pProtocolStatus = PROTOCOL_STATUS_NOT_RECOGNIZED;
return *pProtocol;
}