
Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / 2 / lab.05.by mice / spice / src / csp_parser
.h/*******************************************************************************
* file: csp_parser.h *
* version: 0.0.1 *
* author: d-evil [tmd] (mailto:d-evil.tmd@mail.ru) *
* description: not available *
*******************************************************************************/
#ifndef CSP_PARSER_INCLUDED
#define CSP_PARSER_INCLUDED
////////////////////////////////////////////////////////////////////////////////
// headers
#include <afx.h>
#include <winsock2.h>
#include "cdm_addr_info.h"
#include "win_errors.h"
static const char *protocols[] = {
"Reserved", // 0
"ICMP", // 1
"IGMP", // 2
"GGP", // 3
"IP", // 4
"ST", // 5
"TCP", // 6
"UCL", // 7
"EGP", // 8
"IGP", // 9
"BBN-RCC-MON", // 10
"NVP-II", // 11
"PUP", // 12
"ARGUS", // 13
"EMCON", // 14
"XNET", // 15
"CHAOS", // 16
"UDP", // 17
"MUX", // 18
"DCN-MEAS", // 19
"HMP", // 20
"PRM", // 21
"XNS-IDP", // 22
"TRUNK-1", // 23
"TRUNK-2", // 24
"LEAF-1", // 25
"LEAF-2", // 26
"RDP", // 27
"IRTP", // 28
"ISO-TP4", // 29
"NETBLT", // 30
"MFE-NSP", // 31
"MERIT-INP", // 32
"SEP", // 33
"3PC", // 34
"IDPR", // 35
"XTP", // 36
"DDP", // 37
"IDPR-CMTP", // 38
"TP++", // 39
"IL", // 40
"SIP", // 41
"SDRP", // 42
"SIP-SR", // 43
"SIP-FRAG", // 44
"IDRP", // 45
"RSVP", // 46
"GRE", // 47
"MHRP", // 48
"BNA", // 49
"SIPP-ESP", // 50
"SIPP-AH", // 51
"I-NLSP", // 52
"SWIPE", // 53
"NHRP", // 54
"unknown", // 55
"unknown", // 56
"unknown", // 57
"unknown", // 58
"unknown", // 59
"unknown", // 60
"unknown", // 61
"CFTP", // 62
"unknown", // 63
"SAT-EXPAK", // 64
"KRYPTOLAN", // 65
"RVD", // 66
"IPPC", // 67
"unknown", // 68
"SAT-MON", // 69
"VISA", // 70
"IPCV", // 71
"CPNX", // 72
"CPHB", // 73
"WSN", // 74
"PVP", // 75
"BR-SAT-MON", // 76
"SUN-ND", // 77
"WB-MON", // 78
"WB-EXPAK", // 79
"ISO-IP", // 80
"VMTP", // 81
"SECURE-VMTP", // 82
"VINES", // 83
"TTP", // 84
"NSFNET-IGP", // 85
"DGP", // 86
"TCF", // 87
"IGRP", // 88
"OSPFIGP", // 89
"Sprite-RPC", // 90
"LARP", // 91
"MTP", // 92
"AX.25", // 93
"IPIP", // 94
"MICP", // 95
"SCC-SP", // 96
"ETHERIP", // 97
"ENCAP", // 98
"unknown", // 98
"GMTP" // 99
};
static const char *proto_unknown_str = "unknown";
static const char *icmp_types[] = {
"EchoRply", // 0
"HZ (1)", // 1
"HZ (2)", // 2
"DestUnRch", // 3
"SrcQuench", // 4
"Redirect", // 5
"HZ (6)", // 6
"HZ (7)", // 7
"Echo", // 8
"HZ (8)", // 9
"HZ (9)", // 10
"TimeExceed", // 11
"ParamProbl", // 12
"TimeStmp", // 13
"TimeStmpRp", // 14
"InfoReqst", // 15
"InfoRply", // 16
};
#pragma pack(1)
struct header_ip {
unsigned char hlen:4;
unsigned char ver:4;
unsigned char type_of_service;
unsigned short total_len;
unsigned short id;
unsigned short flags;
unsigned char ttl;
unsigned char proto;
unsigned short checksum;
unsigned int sourceIP;
unsigned int destIP;
};
struct header_icmp {
unsigned char type;
unsigned char code;
unsigned short checksum;
};
struct header_udp {
unsigned short src_port;
unsigned short dest_port;
unsigned short length;
unsigned short check_sum;
};
struct header_tcp {
unsigned short src_port;
unsigned short dest_port;
unsigned int seq_num;
unsigned int ackn_num; // Acknowledgment Number
unsigned short data_offset:4;
unsigned short reserved:6;
unsigned short flags:6;
unsigned short wnd;
unsigned short check_sum;
unsigned short urgent_ptr;
};
#pragma pack()
////////////////////////////////////////////////////////////////////////////////
// csp_parser declaration
class csp_parser {
public:
csp_parser();
~csp_parser();
int get_id() { return _id; }
void set_id(const int id) { _id = id; }
int parse(char *const dtgm, const int sz, const bool resolve = false);
char *html() { return _html.GetBuffer(); }
int html_len() const { return _html.GetLength(); }
CString *html_str() { return &_html; }
static const char *proto_str(const int proto);
protected:
int _parse_ip(const bool resolve = false);
int _parse_ip_params();
int _parse_proto();
int _parse_icmp();
int _parse_udp();
int _parse_tcp();
int _parse_unknown();
int _print_content();
const char *_icmp_type_str(const int type);
private:
char *_dtgm;
int _dtgm_sz;
char *_proto_d;
int _proto_dsz;
char *_data2pr;
int _data2pr_sz;
CString _str;
header_ip _header_ip;
CString _html;
cdm_addr_info _addr_solver;
static int _id;
};
#endif
Соседние файлы в папке src