www.pudn.com > EthernetSpy.zip > Filter.h
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// Filter.h
//
//
#ifndef __FILTER_H__
#define __FILTER_H__
/////////////////////////////////////////////////////////////////////////////////////////////////
// ///////////////////////////////////////////////////////////////////////
// EthernetHeaderFilter ///////////////////////////////////////////////////////////////////////
//
//
// Filtro software con il quale è possibile selezionare i pacchetti contenenti:
//
// - Un particolare indirizzo sorgente
// - un particolare indirizzo destinazione
// - Un particolare tipo di pacchetto
//
// Queste tre condizioni possono essere specificate tutte o si può usarne un qualunque
// sottoinsieme
// I parametri del filtro (indirizzo sorgente, indirizzo destinazione, tipo di pacchetto)
// vengono impostati tramite apposite funzioni (per i dettagli vedi oltre) alle quali
// possono essere passati si come stringhe (CString) che direttamente come array di byte.
// Gli indirizzi passati come stringa possono essere in una qualunque delle seguenti forme:
// - indirizzo ethernet aspresso da 12 cifre esadecimali
// - indirizzo IP (es. '150.217.8.42')
// - nome della macchina a cui si riferisce (es. 'telemat.die.ing.unifi.it')
// in ogni caso le stringhe vengono convertite in un array di byte che contiene l'indirizzo
// ethernet
//
class EthernetHeaderFilter : public SpyFilter
{
private:
PBYTE Source;
PBYTE Dest;
PBYTE Type;
EthernetSpyReader* SpyReader;
public:
CString sSource;
CString sDest;
CString sType;
public:
EthernetHeaderFilter(PBYTE _Source, PBYTE _Dest, PUSHORT _Type, EthernetSpyReader* _SpyReader);
EthernetHeaderFilter(CString _Source, CString _Dest, CString _Type, EthernetSpyReader* _SpyReader);
~EthernetHeaderFilter();
void SetSourceAddrFlt (PBYTE _Source); // Impostano l'indirizzo sorgente con cui confrontare
void SetSourceAddrFlt (CString _Source); // quello del pacchetto ricevuto
void SetDestAddrFlt (PBYTE _Dest); // Impostano l'indirizzo destinazione con cui confrontare
void SetDestAddrFlt (CString _Dest); // quello del pacchetto ricevuto
void SetPktTypeFlt (PBYTE _Type); // Impostano il tipo di pacchetto con cui confrontare
void SetPktTypeFlt (CString _Type); // quello del pacchetto ricevuto
virtual BOOL Match ( PFRAMEETH Frame );
};
/////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////
// TwoTalkingComputersFilter //////////////////////////////////////////////////////////////////
//
//
// Filtro software con il quale è possibile selezionare i pacchetti ricevuti o inviati da una
// macchina oppure i pacchetti scambiati fra due macchine.
//
// I parametri del filtro (indirizzo sorgente, indirizzo destinazione, tipo di pacchetto)
// vengono impostati tramite apposite funzioni (per i dettagli vedi oltre) alle quali
// possono essere passati si come stringhe (CString) che direttamente come array di byte.
// Gli indirizzi passati come stringa possono essere in una qualunque delle seguenti forme:
// - indirizzo ethernet aspresso da 12 cifre esadecimali
// - indirizzo IP (es. '150.217.8.42')
// - nome della macchina a cui si riferisce (es. 'telemat.die.ing.unifi.it')
// in ogni caso le stringhe vengono convertite in un array di byte che contiene l'indirizzo
// ethernet
//
class TwoTalkingComputersFilter : public SpyFilter
{
private:
PBYTE AddrA;
PBYTE AddrB;
EthernetSpyReader* SpyReader;
public:
CString sAddrA;
CString sAddrB;
public:
TwoTalkingComputersFilter (PBYTE AddrA, PBYTE AddrB, EthernetSpyReader* _SpyReader);
TwoTalkingComputersFilter (CString AddrA, CString AddrB, EthernetSpyReader* _SpyReader);
~TwoTalkingComputersFilter ();
void SetAddresses (PBYTE AddrA, PBYTE AddrB);
void SetAddresses (CString AddrA, CString AddrB);
virtual BOOL Match ( PFRAMEETH Frame );
};
#endif