1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
/* $Id: xprobe_module_param.h,v 1.10 2005/02/08 20:00:36 mederchik Exp $ */
/*
** Copyright (C) 2001 Fyodor Yarochkin <fygrave@tigerteam.net>,
** Ofir Arkin <ofir@sys-security.com>
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
* Changes:
* - Feb 12 14:34:04 2003 meder - added type XPROBE_MODULE_PARAM_ZNZORIG,
* that required addition of an extra argument to the add_param() and
* check_param() methods;
*/
#ifndef XPROBE_MODULE_PARAM_H
#define XPROBE_MODULE_PARAM_H
#include "xprobe.h"
#include "usi++/usi++.h"
#include "target.h"
#include "os_matrix.h"
#include <string>
using namespace std;
#define XPROBE_MODULE_PARAM_BOOL 1 /* y/n */
#define XPROBE_MODULE_PARAM_ZNZ 2 /* zero, not zero -- !0, 0 */
#define XPROBE_MODULE_PARAM_INT 3 /* int - 1234 */
#define XPROBE_MODULE_PARAM_RANGE 4 /* range - <1, >2, 20-40 */
#define XPROBE_MODULE_PARAM_ZNZORIG 5 /* zero, not zero, original value(SENT) */
#define XPROBE_MODULE_PARAM_ZNZVAL 6 /* zero, value, not zero */
#define XPROBE_MODULE_PARAM_INTLIST 7 /* list of integers (1,2,3,4,...) */
#define XPROBE_MODULE_PARAM_STRATEGY 8 /* (R)andom, (I)ncremental, 0 */
#define XPROBE_MODULE_PARAM_FUZZY_DELTA 31
#define XMP_STRATEGY_RANDOM 2
#define XMP_STRATEGY_INCREMENTAL 1
#define XMP_STRATEGY_ZERO 0
#define XMP_STRATEGY_THRESHOLD 256
typedef struct xprobe_module_param_val {
int high;
int low;
vector <int> val_list;
} xprobe_module_param_t;
class Xprobe_Module_Param {
private:
int id;
int type;
map <int, xprobe_module_param_t> osid_sig;
int sig_insert(int os_id, xprobe_module_param_t p);
public:
Xprobe_Module_Param(int t) { type = t; }
virtual ~Xprobe_Module_Param(void) { return; }
// virtual int check_param(ICMP *ip_pkt, ICMP *orig_pkt, OS_Matrix *os) =0;
int parse_param(int os_id, const char *param);
int add_param(int param, int orig, OS_Matrix *os);
void set_id(int i) { id = i; }
int get_id(void) { return id; }
int gen_match(int cnt, OS_Matrix *os);
};
class Xprobe_Module_Param_TCP: public Xprobe_Module_Param {
public:
Xprobe_Module_Param_TCP(int t): Xprobe_Module_Param(t) { return; }
virtual ~Xprobe_Module_Param_TCP(void) { return; }
virtual int check_param(TCP *ip_pkt, TCP *orig_pkt, OS_Matrix *os) =0;
};
class Xprobe_Module_Param_ICMP: public Xprobe_Module_Param {
public:
Xprobe_Module_Param_ICMP(int t): Xprobe_Module_Param(t) {return; }
virtual ~Xprobe_Module_Param_ICMP(void) { return; }
virtual int check_param(ICMP *ip_pkt, ICMP *orig_pkt, OS_Matrix *os) =0;
};
#endif /* XPROBE_MODULE_PARAM */
|