public.h

来自「监听分析流量中的http流量」· C头文件 代码 · 共 235 行

H
235
字号
// public.h: interface for the SelectSocket class.
//
//////////////////////////////////////////////////////////////////////

#if !defined MTX_PUBLIC_H
#define MTX_PUBLIC_H

#include <string>
using namespace std;

#define IPADDR_LEN		64
#define MAC_LEN			64
#define TIME_MAXLEN		32
#define CMD_MAXLEN		1024
#define PORT_MAXLEN		8

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//server port 


using namespace std;
#include <vector>	// 
#include <string>	//
#include <list>

/************************************************************************/
/*							TELNET协议 (begin)                          */
/************************************************************************/
const	unsigned short IAC		= 255;	//数据字节2 5 5

const	unsigned short DO		= 253;	//选项协商
const	unsigned short DONT		= 254;	//选项协商
const	unsigned short WILL		= 251;	//选项协商
const	unsigned short WONT		= 252;	//选项协商

const	unsigned short SB		= 250;	//子选项开始

const	unsigned short Null      = 0;	//没有操作
const	unsigned short LF        = 10;	//将打印机移动到下打印行, 保持相同的水平位置。
const	unsigned short CR        = 13;	//回车返回
const	unsigned short BEL       = 7;	//产生声音或见信号 NOT (它不移动墨水打印头)
const	unsigned short BS        = 8;	//备份空间
const	unsigned short HT        = 9;	//水平Tab
const	unsigned short VT        = 11;	//垂直 Tab
const	unsigned short FF        = 12;	//表单馈送
const	unsigned short Eof		= 236;	//文件结束符
const	unsigned short SUSP      = 237;	//挂起当前进程(作业控制)
const	unsigned short ABORT     = 238;	//异常中止进程
const	unsigned short EOR       = 239;	//记录结束符
const	unsigned short NOP       = 241;	//无操作
const	unsigned short DM        = 242;	//数据标记
const	unsigned short BRK       = 243;	//中断
const	unsigned short IP        = 244;	//中断或中止进程与 NVT 相连
const	unsigned short AO        = 245;	//允许当前进程来运行方式完成但不向用户发送其输出
const	unsigned short AYT       = 246;	//对方是否还在运行?
const	unsigned short EC        = 247;	//转义字符
const	unsigned short EL        = 248;	//删除行
const	unsigned short GA        = 249;	//在某些情况下用于告诉另一端, 它可传输。
const	unsigned short EXOP      = 255;	//扩展选项列表选项
const	unsigned short SUBLIMINAL= 257;	//Telnet潜意识-信息选项

const	unsigned short SE		= 240;	//子选项结束
const	unsigned short IS		= '0';
const	unsigned short SEND		= '1';
const	unsigned short INFO		= '2';
const	unsigned short VAR		= '0';
const	unsigned short VALUE	= '1';
const	unsigned short ESC		= '2';
const	unsigned short USERVAR	= '3';

//Telnet部分协商子选项
const	unsigned short SUP_GO_AH = 3;	//抑制继续进行
const	unsigned short STATUS    = 5;	//此选项使用户/进程可以远程查看telnet选项
const	unsigned short ECHO      = 1;	//回显
const	unsigned short TIME_MARK = 6;	//有时用户需要知道TELNET另一端已经将传输过去的数据处理完毕,这个选项此时就比较有用了,即使被拒绝进行同步,返回的拒绝代码也表示原来发出的数据都接收到了。
const	unsigned short TERMINAL	= 24;	//终端类型选项
const	unsigned short NAWS		= 31;	//协商窗口的尺寸
const	unsigned short TERMSPEED	= 32;	//终端速率
const	unsigned short REMOTECTRL= 33;	//远程流控制
const	unsigned short MODELINE  = 34;	//行模式
const	unsigned short XDISPLOC	= 35;	//发送者希望在并发的谈判中发送X显示定位
const	unsigned short ENVIRON	= 36;	//环境变量选项



struct TELNET_REQUEST_HEADER //定义Telnet询问首部
{
    unsigned short th_iac;			//16位命令标志头
    unsigned short th_request;		//16位询问头
	unsigned short th_cmd;			//16位命令字
};

struct TELNET_SB_HEADER		//定义Telnet子协商首部
{
    unsigned short th_iac;			//16位命令标志头
    unsigned short th_sb;			//16位询问头
	unsigned short *th_pData;		//数据指针
    unsigned short th_len;			//16位长度
	unsigned short th_iac1;			//16位命令标志头
    unsigned short th_se;			//16位命令标志尾
};

/************************************************************************/
/*							TELNET协议 (end)                            */
/************************************************************************/

//////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/
/*						                TELNET协议解析结构体(begin)                                               */
/******************************************************************************************************************/

typedef struct struct_TELNET_IAC_PACK
{
	char	date[TIME_MAXLEN];				//时间
	char	src_ip[IPADDR_LEN];				// 源ip
	char	des_ip[IPADDR_LEN];				//目的ip
	char	src_mac[MAC_LEN];				//源mac
	char	des_mac[MAC_LEN];				//目的ip
	char	*cmd;							//IAC命令
	char	*data;							//传输数据, 不分源和客户端
}TELNET_IAC_PACK;

/////////////////////////////////////////////////////////////////////////////////////////////
//原始IP包
typedef struct struct_TELNET_RAW_PACK
{
	char	id[37];					//全局唯一标识符
	char	date[TIME_MAXLEN];				//时间
	char	src_ip[IPADDR_LEN];		// 源ip
	char	des_ip[IPADDR_LEN];		//目的ip
	char	src_mac[MAC_LEN];		//源mac
	char	des_mac[MAC_LEN];		//目的ip
	char	*cmd;					//发送命令(用于Client操作命令,非Telnet命令)
	char	*data;					//回显消息(用于Server)
	long	nLenCmd;				//命令长度
	long	nLenEcho;				//回显长度
	bool    type;					//标志,标识是源消息还是客户消息, 如果真,为命令,如果假,为回显
	
}TELNET_RAW_PACK;

//应用数据包
typedef struct struct_TELNET_APP_PACK
{
	unsigned char cmd[CMD_MAXLEN];			//一条命令
	unsigned char *echo;					//一条回显
	long nLenEcho;							//回显长度
	char date[TIME_MAXLEN];					//开始时间

}TELNET_APP_PACK;

//Telnet会话结构体, 用于一个会话的数据存放,会话记录,审计
typedef struct struct_TELNET_SESSION
{
	unsigned long session_ID;						//用于标识是那个会话
	unsigned char server_port[PORT_MAXLEN];			//用于标识服务器端口
	unsigned char server_ip[IPADDR_LEN];			//用于标识服务器IP
	unsigned char server_mac[MAC_LEN];				//用于表示服务器mac
	unsigned char client_port[PORT_MAXLEN];			//用于标识客户端端口
	unsigned char client_ip[IPADDR_LEN];			//用于标识客户端IP
	unsigned char client_mac[MAC_LEN];				//用于标识客户端mac
	unsigned short check_step;						//用于标识核查步骤
	unsigned char begin[TIME_MAXLEN];				//用于标识会话开始时间
	unsigned char end[TIME_MAXLEN];					//用于标识会话结束时间
	unsigned long Conut;

	vector<TELNET_RAW_PACK*>	RawPackList;		//存放IP数据包数据的链表
	vector<TELNET_APP_PACK*>	AppPackList;		//存放命令和回显数据的链表

}TELNET_SESSION;

/*----------------------------------------------------------------------------------------------------------------*/
/*					              	   TELNET协议解析结构体(end)	              								  */
/*----------------------------------------------------------------------------------------------------------------*/

/******************************************************************************************************************/
/*						                HTTP协议解析结构体(begin)                                               */
/******************************************************************************************************************/
/////////////////////////////////////////////////////////////////////////////////////////////
//原始IP包
typedef struct struct_HTTP_RAW_PACK
{
	char	id[37];					//全局唯一标识符
	char	date[TIME_MAXLEN];				//时间
	char	src_ip[IPADDR_LEN];		// 源ip
	char	des_ip[IPADDR_LEN];		//目的ip
	char	src_mac[MAC_LEN];		//源mac
	char	des_mac[MAC_LEN];		//目的ip
	char	*cmd;					//发送命令(用于Client操作命令,非HTTP命令)
	char	*data;					//回显消息(用于Server)
	char	*netaddr;				//网站网址
	long	nLenCmd;				//命令长度
	long	nLenEcho;				//回显长度
	long	nLenaddr;				//网址长度
	bool    type;					//标志,标识是源消息还是客户消息, 如果真,为命令,如果假,为回显
	
}HTTP_RAW_PACK;

//应用数据包
typedef struct struct_HTTP_APP_PACK
{
	unsigned char cmd[CMD_MAXLEN];			//一条命令
	unsigned char *echo;					//一条回显
	unsigned char *pNetAddr;				//一条网址
	long nLenEcho;							//回显长度
	long nLenAddr;
	char date[TIME_MAXLEN];					//开始时间

}HTTP_APP_PACK;

//HTTP会话结构体, 用于一个会话的数据存放,会话记录,审计
typedef struct struct_HTTP_SESSION
{
	unsigned long session_ID;						//用于标识是那个会话
	unsigned char server_port[PORT_MAXLEN];			//用于标识服务器端口
	unsigned char server_ip[IPADDR_LEN];			//用于标识服务器IP
	unsigned char server_mac[MAC_LEN];				//用于表示服务器mac
	unsigned char client_port[PORT_MAXLEN];			//用于标识客户端端口
	unsigned char client_ip[IPADDR_LEN];			//用于标识客户端IP
	unsigned char client_mac[MAC_LEN];				//用于标识客户端mac
	unsigned short check_step;						//用于标识核查步骤
	unsigned char begin[TIME_MAXLEN];				//用于标识会话开始时间
	unsigned char end[TIME_MAXLEN];					//用于标识会话结束时间
	unsigned long Conut;

	vector<HTTP_RAW_PACK*>	RawPackList;		//存放IP数据包数据的链表
	vector<HTTP_APP_PACK*>	AppPackList;		//存放命令和回显数据的链表

}HTTP_SESSION;
/*----------------------------------------------------------------------------------------------------------------*/
/*					              	   HTTP协议解析结构体(end)	              								  */
/*----------------------------------------------------------------------------------------------------------------*/

#endif // !defined MTX_PUBLIC_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?