//Our TCP socket
class CTCPScanner : public CTCPSocketAsync
{
public:
//Our async connection
virtual BOOL Connect(unsigned short usSourcePort,
IP aDestinationAddress,
unsigned short usDestinationPort,
BOOL bDisableAsync=FALSE,
BOOL bForceErrorEvent=FALSE)
{
return CTCPSocketAsync::Connect(2000,
aDestinationAddress,
usDestinationPort,
bDisableAsync,
bForceErrorEvent);
}
//Ctor and Dtor
CTCPScanner() : CTCPSocketAsync(TRUE)
{
}
virtual ~CTCPScanner()
{
}
protected:
//No events
NO_OnSocketAccept
NO_OnSocketOOB
NO_OnSocketWrite
NO_OnSocketTimeout
NO_OnSocketConnect
NO_OnSocketClose
NO_OnSocketReceive
};
//Our sniffing socket
class CSniffingSocket : public CSniffSocket
{
public:
//Stop sniffing
void Stop();
//Ctor and Dtor
CSniffingSocket(CTCPPortScannerStealth* pScanner);
virtual ~CSniffingSocket();
protected:
//Our sniff handler
virtual BOOL OnSocketReceive(int iErrorCode);
private:
//Analyze the TCP packet
void AnalyzeTCP(const char* pTCPBuffer);
//Our father
CTCPPortScannerStealth* m_pFather;
//Are we stopped
BOOL m_bStop;
};
//Our map of ports
typedef std::map<unsigned short,unsigned long> PortsMap;