#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment( lib, "ws2_32.lib" )
using namespace std;
struct IPHeader
{
unsigned char mHeaderLengthAndVersion;
unsigned char mTypeOfService;
unsigned short mTotalLength;
unsigned short mIdentifier;
unsigned short mFragment;
unsigned char mTTL;
unsigned char mProtocolType;
unsigned short mCheckSum;
unsigned int mSourceIP;
unsigned int mDestIP;
int getHeaderLength() const
{
return mHeaderLengthAndVersion
& 0xf;
}
};
struct TCPHeader
{
unsigned short mSourcePort;
unsigned short mDestPort;
unsigned int mSequence;
unsigned int mAck;
unsigned char mLengthAndReserve;
unsigned char mFlags;
unsigned short mWindow;
unsigned short mCheckSum;
unsigned short mUrgent;
};
struct UDPHeader
{
unsigned short mSourcePort;
unsigned short mDestPort;
unsigned short mLength;
unsigned short mCheckSum;
};
struct ICMPHeader
{
unsigned char mType;
unsigned char mCode;
unsigned short mCheckSum;
unsigned short mID;
unsigned short mSequence;
unsigned long mTimeStamp;
};
void ProcessIPPacket( char*, int );
void ProcessTCPPacket( char*, int );
void ProcessUDPPacket( char*, int );
void ProcessICMPPacket( char*, int );
int Welcome();
void SocketDis();
void PortScan();
void main(int argc, char *argv[])
{