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