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 + -
显示快捷键?