⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sf_attribute_table.y

📁 著名的入侵检测系统snort的最新版本的源码
💻 Y
📖 第 1 页 / 共 2 页
字号:
/*** Copyright (C) 2006-2007 Sourcefire, Inc.**** 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.*//* * Author: Steven Sturges * sf_attribute_table.y *//* * * AttributeTable * * YACC Grammar/language definition */%{#ifdef TARGET_BASED#include <stdlib.h>#include <string.h>#include "snort.h"#include "util.h"#include "sftarget_reader.h"#include "log.h"#include "debug.h"#define YY_ACCEPT return 1;#define YY_ABORT return 0;extern ServiceClient sfat_client_or_service;extern char *sfat_grammar_error;extern int sfat_lex();extern void sfat_error(char*);%}%union{  char stringValue[STD_BUF];  u_int32_t numericValue;  AttributeData data;  MapData mapEntry;}%token SF_AT_COMMENT%token SF_AT_WHITESPACE%token SF_START_SNORT_ATTRIBUTES%token SF_END_SNORT_ATTRIBUTES%token SF_AT_START_MAP_TABLE%token SF_AT_END_MAP_TABLE%token SF_AT_START_ENTRY%token SF_AT_END_ENTRY%token SF_AT_START_ENTRY_ID%token SF_AT_END_ENTRY_ID%token SF_AT_START_ENTRY_VALUE%token SF_AT_END_ENTRY_VALUE%token SF_AT_START_ATTRIBUTE_TABLE%token SF_AT_END_ATTRIBUTE_TABLE%token SF_AT_START_HOST%token SF_AT_END_HOST%token SF_AT_START_HOST_IP%token SF_AT_END_HOST_IP%token <stringValue>  SF_AT_STRING%token <numericValue> SF_AT_NUMERIC/*%token <stringValue> SF_AT_IPv4%token <stringValue> SF_AT_IPv4CIDR*/%token SF_AT_IPv6%token SF_AT_IPv6Cidr%token SF_AT_START_OS%token SF_AT_END_OS%token SF_AT_START_ATTRIBUTE_VALUE%token SF_AT_END_ATTRIBUTE_VALUE%token SF_AT_START_ATTRIBUTE_ID%token SF_AT_END_ATTRIBUTE_ID%token SF_AT_START_CONFIDENCE%token SF_AT_END_CONFIDENCE%token SF_AT_START_NAME%token SF_AT_END_NAME%token SF_AT_START_VENDOR%token SF_AT_END_VENDOR%token SF_AT_START_VERSION%token SF_AT_END_VERSION%token SF_AT_START_FRAG_POLICY%token SF_AT_END_FRAG_POLICY%token SF_AT_START_STREAM_POLICY%token SF_AT_END_STREAM_POLICY%token SF_AT_START_SERVICES%token SF_AT_END_SERVICES%token SF_AT_START_SERVICE%token SF_AT_END_SERVICE%token SF_AT_START_CLIENTS%token SF_AT_END_CLIENTS%token SF_AT_START_CLIENT%token SF_AT_END_CLIENT%token SF_AT_START_IPPROTO%token SF_AT_END_IPPROTO%token SF_AT_START_PORT%token SF_AT_END_PORT%token SF_AT_START_PROTOCOL%token SF_AT_END_PROTOCOL%token SF_AT_START_APPLICATION%token SF_AT_END_APPLICATION%type <mapEntry> MapEntryData%type <data> AttributeInfo%type <stringValue> MapValue%type <numericValue> MapId%type <stringValue> AttributeValueString%type <numericValue> AttributeValueNumber%type <numericValue> AttributeConfidence%type <numericValue> AttributeId%%  /*  Grammar rules and actions follow  *//* The Main Grammar... Either a mapping table and attribute table, * or just the attribute table by itself. */AttributeGrammar:  SnortAttributes  {    YY_ACCEPT;  };SnortAttributes:  SF_START_SNORT_ATTRIBUTES MappingTable AttributeTable SF_END_SNORT_ATTRIBUTES  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "SnortAttributes: Got Attribute Map & Table\n"););  }  |  SF_START_SNORT_ATTRIBUTES AttributeTable SF_END_SNORT_ATTRIBUTES  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "SnortAttributes: Got Attribute Table\n"););  };/* The name-id map table for data reduction */MappingTable:  SF_AT_START_MAP_TABLE ListOfMapEntries SF_AT_END_MAP_TABLE  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "Got Attribute Map\n"););  };ListOfMapEntries:   {     DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "Empty Mapping Table\n"););   }   | MapEntry ListOfMapEntries;MapEntry:  MapEntryStart MapEntryData MapEntryEnd  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "MapEntry: Name: %s, Id %d\n",        $2.s_mapvalue, $2.l_mapid););    SFAT_AddMapEntry(&$2);  };MapEntryStart:  SF_AT_START_ENTRY;MapEntryEnd:  SF_AT_END_ENTRY;MapEntryData:  MapId MapValue  {    $$.l_mapid = $1;    SnortStrncpy($$.s_mapvalue, $2, STD_BUF);  };MapValue:  SF_AT_START_ENTRY_VALUE SF_AT_STRING SF_AT_END_ENTRY_VALUE  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "MapValue: %s\n", $2);)    SnortStrncpy($$, $2, STD_BUF);  };MapId:  SF_AT_START_ENTRY_ID SF_AT_NUMERIC SF_AT_END_ENTRY_ID  {    $$ = $2;    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "MapId: %d\n", $2););  };/* The table of hosts and their respective attributes */AttributeTable:  SF_AT_START_ATTRIBUTE_TABLE ListOfHosts SF_AT_END_ATTRIBUTE_TABLE  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "Got Attribute Table\n"););  };ListOfHosts:  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "EmptyHostEntry\n"););  }  | ListOfHosts HostEntry;HostEntry:  HostEntryStart HostEntryData HostEntryEnd  {    if (SFAT_AddHostEntryToMap() != SFAT_OK)    {        YY_ABORT;    }    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "Host Added\n"););  };HostEntryStart:  SF_AT_START_HOST  {    /* Callback to create a host entry object */    SFAT_CreateHostEntry();  };HostEntryEnd:  SF_AT_END_HOST;HostEntryData:  IpCidr HostOS ServiceList ClientList  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "HostEntryData\n"););  }  |  IpCidr HostOS ClientList  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "HostEntryData: No Services\n"););  }  |  IpCidr HostOS ServiceList  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "HostEntryData: No Clients\n"););  }  |  IpCidr HostOS  {    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "HostEntryData: No Services or Clients\n"););  }  ;IpCidr:  SF_AT_START_HOST_IP SF_AT_STRING SF_AT_END_HOST_IP  {    /* Convert IP/CIDR to Snort IPCidr Object */    /* determine the number of bits (done in SetHostIp4) */    if (SFAT_SetHostIp4($2) != SFAT_OK)    {        YY_ABORT;    }  };HostOS:  SF_AT_START_OS OSAttributes SF_AT_END_OS;  OSAttributes: OSAttribute | OSAttributes OSAttribute;OSAttribute: OSName | OSVendor | OSVersion | OSStreamPolicy | OSFragPolicy;OSName:  SF_AT_START_NAME AttributeInfo SF_AT_END_NAME  {    /* Copy OSName */    DEBUG_WRAP(PrintAttributeData("OS:Name", &$2););    SFAT_SetOSAttribute(&$2, HOST_INFO_OS);  };OSVendor:  SF_AT_START_VENDOR AttributeInfo SF_AT_END_VENDOR  {    /* Copy OSVendor */    DEBUG_WRAP(PrintAttributeData("OS:Vendor", &$2););    SFAT_SetOSAttribute(&$2, HOST_INFO_VENDOR);  };OSVersion:  SF_AT_START_VERSION AttributeInfo SF_AT_END_VERSION  {    /* Copy OSVersion */    DEBUG_WRAP(PrintAttributeData("OS:Version", &$2););    SFAT_SetOSAttribute(&$2, HOST_INFO_VERSION);  };OSFragPolicy:  SF_AT_START_FRAG_POLICY SF_AT_STRING SF_AT_END_FRAG_POLICY  {    /* Copy OSFragPolicy */    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "OS:FragPolicy: %s\n", $2););    SFAT_SetOSPolicy($2, HOST_INFO_FRAG_POLICY);  };OSStreamPolicy:  SF_AT_START_STREAM_POLICY SF_AT_STRING SF_AT_END_STREAM_POLICY  {    /* Copy OSStreamPolicy */    DEBUG_WRAP(DebugMessage(DEBUG_ATTRIBUTE, "OS:StreamPolicy: %s\n", $2););    SFAT_SetOSPolicy($2, HOST_INFO_STREAM_POLICY);  };AttributeInfo:

⌨️ 快捷键说明

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