亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sp_tcp_flag_check.c

?? 著名的入侵檢測系統snort的最新版本的源碼
?? C
字號:
/*** Copyright (C) 1998-2002 Martin Roesch <roesch@sourcefire.com>**** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License Version 2 as** published by the Free Software Foundation.  You may not use, modify or** distribute this program under any other version of the GNU General** Public License.**** 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.*//* $Id$ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <sys/types.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include "rules.h"#include "decode.h"#include "plugbase.h"#include "parser.h"#include "debug.h"#include "util.h"#include "plugin_enum.h"#define M_NORMAL  0#define M_ALL     1#define M_ANY     2#define M_NOT     3typedef struct _TCPFlagCheckData{    u_char mode;    u_char tcp_flags;     u_char tcp_mask; /* Mask to take away from the flags check */} TCPFlagCheckData;void TCPFlagCheckInit(char *, OptTreeNode *, int);void ParseTCPFlags(char *, OptTreeNode *);int CheckTcpFlags(Packet *, struct _OptTreeNode *, OptFpList *);void SetupTCPFlagCheck(void){    RegisterPlugin("flags", TCPFlagCheckInit, OPT_TYPE_DETECTION);    DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "Plugin: TCPFlagCheck Initialized!\n"););}void TCPFlagCheckInit(char *data, OptTreeNode *otn, int protocol){    if(protocol != IPPROTO_TCP)    {        FatalError("Line %s (%d): TCP Options on non-TCP rule\n", file_name, file_line);    }    /* multiple declaration check */     if(otn->ds_list[PLUGIN_TCP_FLAG_CHECK])    {        FatalError("%s(%d): Multiple TCP flags options in rule\n", file_name,                file_line);    }    otn->ds_list[PLUGIN_TCP_FLAG_CHECK] = (TCPFlagCheckData *)            SnortAlloc(sizeof(TCPFlagCheckData));    /* set up the pattern buffer */    ParseTCPFlags(data, otn);    DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "Adding TCP flag check function (%p) to list\n",			    CheckTcpFlags););    /* link the plugin function in to the current OTN */    AddOptFuncToList(CheckTcpFlags, otn);    DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "OTN function CheckTcpFlags added to rule!\n"););}/**************************************************************************** * * Function: ParseTCPflags(char *) * * Purpose: Figure out which TCP flags the current rule is interested in * * Arguments: rule => the rule string  * * Returns: void function * ***************************************************************************/void ParseTCPFlags(char *rule, OptTreeNode *otn){    char *fptr;    char *fend;    int comma_set = 0;    TCPFlagCheckData *idx;    idx = otn->ds_list[PLUGIN_TCP_FLAG_CHECK];    fptr = rule;    /* make sure there is atleast a split pointer */    if(fptr == NULL)     {        FatalError("[!] ERROR Line %s (%d): Flags missing in TCP flag rule\n", file_name, file_line);    }    while(isspace((u_char) *fptr))        fptr++;    if(strlen(fptr) == 0)    {        FatalError("[!] ERROR Line %s (%d): Flags missing in TCP flag rule\n", file_name, file_line);    }    /* find the end of the alert string */    fend = fptr + strlen(fptr);     idx->mode = M_NORMAL; /* this is the default, unless overridden */    while(fptr < fend && comma_set == 0)    {        switch(*fptr)        {            case 'f':            case 'F':                idx->tcp_flags |= R_FIN;                break;            case 's':            case 'S':                idx->tcp_flags |= R_SYN;                break;            case 'r':            case 'R':                idx->tcp_flags |= R_RST;                break;            case 'p':            case 'P':                idx->tcp_flags |= R_PSH;                break;            case 'a':            case 'A':                idx->tcp_flags |= R_ACK;                break;            case 'u':            case 'U':                idx->tcp_flags |= R_URG;                break;            case '0':                idx->tcp_flags = 0;                break;            case '1': /* reserved bit flags */                idx->tcp_flags |= R_RES1;                break;            case '2': /* reserved bit flags */                idx->tcp_flags |= R_RES2;                break;            case '!': /* not, fire if all flags specified are not present,                         other are don't care */                idx->mode = M_NOT;                break;            case '*': /* star or any, fire if any flags specified are                          present, other are don't care */                idx->mode = M_ANY;                break;            case '+': /* plus or all, fire if all flags specified are                         present, other are don't care */                idx->mode = M_ALL;                break;            case ',':                comma_set = 1;                break;            default:                FatalError("%s(%d): bad TCP flag = \"%c\"\n"                           "Valid otions: UAPRSF12 or 0 for NO flags (e.g. NULL scan),"                           " and !, + or * for modifiers\n",                           file_name, file_line, *fptr);        }        fptr++;    }    while(isspace((u_char) *fptr))        fptr++;        /* create the mask portion now */    while(fptr < fend && comma_set == 1)    {        switch(*fptr)        {            case 'f':            case 'F':                idx->tcp_mask |= R_FIN;                break;            case 's':            case 'S':                idx->tcp_mask |= R_SYN;                break;            case 'r':            case 'R':                idx->tcp_mask |= R_RST;                break;            case 'p':            case 'P':                idx->tcp_mask |= R_PSH;                break;                            case 'a':            case 'A':                idx->tcp_mask |= R_ACK;                break;                            case 'u':            case 'U':                idx->tcp_mask |= R_URG;                break;                            case '1': /* reserved bit flags */                idx->tcp_mask |= R_RES1;                break;            case '2': /* reserved bit flags */                idx->tcp_mask |= R_RES2;                break;            default:                FatalError(" Line %s (%d): bad TCP flag = \"%c\"\n  Valid otions: UAPRS12 \n",                           file_name, file_line, *fptr);        }        fptr++;    }}int CheckTcpFlags(Packet *p, struct _OptTreeNode *otn_idx, OptFpList *fp_list){    TCPFlagCheckData *flagptr;    u_char tcp_flags;        flagptr = otn_idx->ds_list[PLUGIN_TCP_FLAG_CHECK];    if(!p->tcph)    {        /* if error appeared when tcp header was processed,         * test fails automagically */        return 0;     }    /* the flags we really want to check are all the ones     */    tcp_flags = p->tcph->th_flags & (0xFF ^ flagptr->tcp_mask);    DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "           <!!> CheckTcpFlags: "););    switch((flagptr->mode))    {        case M_NORMAL:            if(flagptr->tcp_flags == tcp_flags) /* only these set */            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Got TCP [default] flag match!\n"););                return fp_list->next->OptTestFunc(p, otn_idx, fp_list->next);            }            else            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"No match\n"););            }            break;        case M_ALL:            /* all set */            if((flagptr->tcp_flags & tcp_flags) == flagptr->tcp_flags)            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "Got TCP [ALL] flag match!\n"););                return fp_list->next->OptTestFunc(p, otn_idx, fp_list->next);            }            else            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"No match\n"););            }            break;        case M_NOT:            if((flagptr->tcp_flags & tcp_flags) == 0)  /* none set */            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Got TCP [NOT] flag match!\n"););                return fp_list->next->OptTestFunc(p, otn_idx, fp_list->next);            }            else            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "No match\n"););            }            break;        case M_ANY:            if((flagptr->tcp_flags & tcp_flags) != 0)  /* something set */            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"Got TCP [ANY] flag match!\n"););                return fp_list->next->OptTestFunc(p, otn_idx, fp_list->next);            }            else            {                DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN,"No match\n"););            }            break;        default:  /* Should never see this */            DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "TCP flag check went to default case"				    " for some silly reason\n"););            break;    }    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美揉bbbbb揉bbbbb| 亚洲国产一区二区在线播放| 欧美调教femdomvk| 3atv在线一区二区三区| 久久精品男人的天堂| 亚洲永久免费视频| 国产一区二区三区久久悠悠色av | 91看片淫黄大片一级在线观看| 欧美人与性动xxxx| 国产精品对白交换视频| 国产在线不卡一区| 91精品国产综合久久精品图片| 国产精品欧美极品| 久久se精品一区精品二区| 色综合一区二区| 国产精品美女久久久久久2018| 奇米777欧美一区二区| 色婷婷久久综合| 国产精品久久久久9999吃药| 久久精品99久久久| 欧美日本一道本在线视频| 亚洲欧美偷拍三级| 成人性生交大片| 久久久亚洲精华液精华液精华液| 免费精品视频在线| 欧美一区二区视频在线观看| 亚洲成av人片www| 色综合久久中文综合久久牛| 国产精品久久久久久久久图文区 | 制服丝袜日韩国产| 亚洲欧美韩国综合色| 成人av电影在线播放| 欧美激情一区二区三区不卡 | 亚洲成人免费在线| 欧美三片在线视频观看| 亚洲一区在线观看视频| 91国偷自产一区二区三区观看| **欧美大码日韩| 91在线精品一区二区| 国产精品另类一区| 99re视频精品| 有码一区二区三区| 欧美视频中文一区二区三区在线观看 | 香蕉av福利精品导航| 欧美午夜不卡在线观看免费| 亚洲电影中文字幕在线观看| 欧美日韩久久一区| 久久精品国产久精国产| 欧美精品一区男女天堂| 国模无码大尺度一区二区三区 | 欧美日韩专区在线| 日韩精品一二区| 精品对白一区国产伦| 国内一区二区视频| 国产精品久久久久精k8| 欧美优质美女网站| 蜜臀av在线播放一区二区三区| 日韩视频免费观看高清完整版| 国产精品一区二区三区乱码| 国产精品高潮呻吟| 欧美久久久久久久久中文字幕| 久久激情五月激情| 成人免费在线视频观看| 欧美日韩免费不卡视频一区二区三区| 日韩极品在线观看| 国产日本欧美一区二区| 在线亚洲一区二区| 麻豆精品在线视频| 亚洲欧洲精品一区二区精品久久久| 色老汉av一区二区三区| 美女mm1313爽爽久久久蜜臀| 中文一区一区三区高中清不卡| 色婷婷久久久久swag精品| 奇米精品一区二区三区四区 | 久久久久99精品国产片| 一本久道久久综合中文字幕| 久久国产麻豆精品| 一区二区三区中文字幕电影| 精品少妇一区二区三区在线视频| 99国产精品久久久久久久久久| 日韩电影在线一区二区三区| 国产精品久久久久久亚洲毛片| 欧美一区二区三区四区视频 | 亚洲精品大片www| 精品99久久久久久| 欧美性大战久久| 成人精品国产一区二区4080| 亚洲成a人在线观看| 国产精品久久久久久久久免费桃花 | 一区二区三区四区不卡在线| 久久美女高清视频| 欧美喷潮久久久xxxxx| 成人av在线电影| 精品亚洲国内自在自线福利| 亚洲午夜私人影院| 亚洲日本护士毛茸茸| 国产三级一区二区| 欧美成人女星排名| 欧美精品色一区二区三区| 91女神在线视频| 91在线porny国产在线看| 久久99国产精品免费| 天天亚洲美女在线视频| 国产欧美日韩不卡| 亚洲精品一区二区三区99| 日韩三级电影网址| 91麻豆精品国产91| 欧美精品1区2区3区| 欧美日韩亚洲综合一区二区三区| gogogo免费视频观看亚洲一| 丁香网亚洲国际| 国产成都精品91一区二区三| 激情小说亚洲一区| 精品综合免费视频观看| 日韩**一区毛片| 一区二区三区日韩精品| 亚洲精品视频免费看| 亚洲综合视频在线| 国产精品少妇自拍| 国产偷国产偷亚洲高清人白洁| 久久综合网色—综合色88| 欧美人与性动xxxx| 欧美综合久久久| 91国偷自产一区二区三区观看| 91免费国产在线观看| 色综合天天综合网天天看片| 国产成人免费在线观看| 国产在线播放一区三区四| 日韩电影免费在线看| 午夜精品久久久| 久久精品国产秦先生| 青椒成人免费视频| 美日韩一级片在线观看| 日本少妇一区二区| 奇米精品一区二区三区在线观看一| 久久精品国产亚洲高清剧情介绍 | 成人视屏免费看| 国产成人精品免费一区二区| 国内精品伊人久久久久影院对白| 久久精品久久综合| 国产成人免费视频网站| 成人黄色一级视频| 99久久免费国产| 色94色欧美sute亚洲13| 欧美一级片在线看| 日韩欧美国产一区二区三区| 日韩精品一区二区三区中文不卡| 欧美mv日韩mv国产网站| 久久亚洲影视婷婷| 亚洲天堂精品在线观看| 亚洲欧美日本在线| 亚洲成人午夜电影| 国内精品不卡在线| 99久久精品国产导航| 欧美一级黄色录像| 久久久久国色av免费看影院| 国产精品美女久久久久久| 亚洲另类一区二区| 日韩va欧美va亚洲va久久| 成人性生交大片免费看在线播放 | 亚洲综合区在线| 日韩激情一二三区| 国产精品一区二区三区乱码 | 久久久91精品国产一区二区三区| 国产午夜精品福利| 一区二区三区四区不卡在线| 日韩电影在线观看网站| 美脚の诱脚舐め脚责91| 国产成人av电影在线观看| 91免费在线视频观看| 这里只有精品免费| 一区二区三区中文字幕精品精品 | 综合在线观看色| 日韩精品一级二级| av成人动漫在线观看| 日韩欧美一区二区免费| 国产精品久久夜| 日产精品久久久久久久性色| 国产精品一区免费视频| 欧美性猛片aaaaaaa做受| 日韩一区二区免费高清| 亚洲国产精品二十页| 婷婷国产v国产偷v亚洲高清| 成人在线综合网站| 91精品国产综合久久精品图片| 亚洲一级不卡视频| 成人性生交大合| 日韩欧美一区二区三区在线| 日韩电影在线看| 激情五月激情综合网| 一本色道久久综合亚洲aⅴ蜜桃 | 成人白浆超碰人人人人| 欧美日韩国产中文| 国产精品美女一区二区在线观看| 国产馆精品极品| 宅男噜噜噜66一区二区66| 亚洲人成网站色在线观看| 国产一区二区精品久久91| 欧美成人性战久久| 美女被吸乳得到大胸91|