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

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

?? snort_smtp.c

?? 著名的入侵檢測系統snort的最新版本的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/**************************************************************************** * * Copyright (C) 2005-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. * ****************************************************************************//************************************************************************** * snort_smtp.c * * Author: Andy Mullican * Author: Todd Wease * * Description: * * This file handles SMTP protocol checking and normalization. * * Entry point functions: * *     SnortSMTP() *     SMTP_Init() *     SMTP_Free() * **************************************************************************//* Includes ***************************************************************/#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <sys/types.h>#include "sf_types.h"#include <stdlib.h>#include <string.h>#include <ctype.h>#include <pcre.h>#include "snort_smtp.h"#include "smtp_config.h"#include "smtp_normalize.h"#include "smtp_util.h"#include "smtp_log.h"#include "smtp_xlink2state.h"#include "sf_snort_packet.h"#include "stream_api.h"#include "debug.h"#include "profiler.h"#include "bounds.h"#include "sf_dynamic_preprocessor.h"/**************************************************************************//* Externs ****************************************************************/#ifdef PERF_PROFILINGextern PreprocStats smtpDetectPerfStats;extern int smtpDetectCalled;#endifextern SMTPConfig _smtp_config;extern SMTPCmdConfig *_smtp_cmd_config;extern DynamicPreprocessorData _dpd;#ifdef DEBUGextern char smtp_print_buffer[];#endif/**************************************************************************//* Globals ****************************************************************/SMTP          *_smtp = NULL;SMTP           _smtp_no_session;SMTPPcre       _mime_boundary_pcre;char           _smtp_pkt_direction;char           _smtp_normalizing;SMTPSearchInfo _smtp_search_info;const SMTPToken _smtp_known_cmds[] ={    {"ATRN",          4, CMD_ATRN},    {"AUTH",          4, CMD_AUTH},    {"BDAT",          4, CMD_BDAT},    {"DATA",          4, CMD_DATA},    {"DEBUG",         5, CMD_DEBUG},    {"EHLO",          4, CMD_EHLO},    {"EMAL",          4, CMD_EMAL},    {"ESAM",          4, CMD_ESAM},    {"ESND",          4, CMD_ESND},    {"ESOM",          4, CMD_ESOM},    {"ETRN",          4, CMD_ETRN},    {"EVFY",          4, CMD_EVFY},    {"EXPN",          4, CMD_EXPN},    {"HELO",          4, CMD_HELO},    {"HELP",          4, CMD_HELP},    {"IDENT",         5, CMD_IDENT},    {"MAIL",          4, CMD_MAIL},    {"NOOP",          4, CMD_NOOP},    {"ONEX",          4, CMD_ONEX},    {"QUEU",          4, CMD_QUEU},    {"QUIT",          4, CMD_QUIT},    {"RCPT",          4, CMD_RCPT},    {"RSET",          4, CMD_RSET},    {"SAML",          4, CMD_SAML},    {"SEND",          4, CMD_SEND},    {"SIZE",          4, CMD_SIZE},    {"STARTTLS",      8, CMD_STARTTLS},    {"SOML",          4, CMD_SOML},    {"TICK",          4, CMD_TICK},    {"TIME",          4, CMD_TIME},    {"TURN",          4, CMD_TURN},    {"TURNME",        6, CMD_TURNME},    {"VERB",          4, CMD_VERB},    {"VRFY",          4, CMD_VRFY},    {"X-EXPS",        6, CMD_X_EXPS},    {"XADR",          4, CMD_XADR},    {"XAUTH",         5, CMD_XAUTH},    {"XCIR",          4, CMD_XCIR},    {"XEXCH50",       7, CMD_XEXCH50},    {"XGEN",          4, CMD_XGEN},    {"XLICENSE",      8, CMD_XLICENSE},    {"X-LINK2STATE", 12, CMD_X_LINK2STATE},    {"XQUE",          4, CMD_XQUE},    {"XSTA",          4, CMD_XSTA},    {"XTRN",          4, CMD_XTRN},    {"XUSR",          4, CMD_XUSR},    {NULL,            0, 0}};/* new commands can be allocated via the smtp configuration */SMTPToken *_smtp_cmds;SMTPSearch *_smtp_cmd_search;const SMTPToken _smtp_resps[] ={	{"220",  3,  RESP_220},  /* Service ready - initial response and STARTTLS response */	{"250",  3,  RESP_250},  /* Requested mail action okay, completed */	{"354",  3,  RESP_354},  /* Start mail input - data response */	{"421",  3,  RESP_421},  /* Service not availiable - closes connection */	{"450",  3,  RESP_450},  /* Mailbox unavailable */	{"451",  3,  RESP_451},  /* Local error in processing */	{"452",  3,  RESP_452},  /* Insufficient system storage */	{"500",  3,  RESP_500},  /* Command unrecognized */	{"501",  3,  RESP_501},  /* Syntax error in parameters or arguments */	{"502",  3,  RESP_502},  /* Command not implemented */	{"503",  3,  RESP_503},  /* Bad sequence of commands */	{"504",  3,  RESP_504},  /* Command parameter not implemented */	{"550",  3,  RESP_550},  /* Action not taken - mailbox unavailable */	{"551",  3,  RESP_551},  /* User not local; please try <forward-path> */	{"552",  3,  RESP_552},  /* Mail action aborted: exceeded storage allocation */	{"553",  3,  RESP_553},  /* Action not taken: mailbox name not allowed */	{"554",  3,  RESP_554},  /* Transaction failed */	{NULL,   0,  0}};SMTPSearch _smtp_resp_search[RESP_LAST];const SMTPToken _smtp_hdrs[] ={    {"Content-type:", 13, HDR_CONTENT_TYPE},    {NULL,             0, 0}};SMTPSearch _smtp_hdr_search[HDR_LAST];const SMTPToken _smtp_data_end[] ={	{"\r\n.\r\n",  5,  DATA_END_1},	{"\n.\r\n",    4,  DATA_END_2},	{"\r\n.\n",    4,  DATA_END_3},	{"\n.\n",      3,  DATA_END_4},	{NULL,         0,  0}};SMTPSearch _smtp_data_end_search[DATA_END_LAST];SMTPSearch *_smtp_current_search;/**************************************************************************//* Private functions ******************************************************/static void             SMTP_Setup(SFSnortPacket *);static void             SMTP_ResetState(void);static void             SMTP_SessionFree(void *);static void             SMTP_NoSessionFree(void);static int              SMTP_GetPacketDirection(SFSnortPacket *, char);static void             SMTP_ProcessClientPacket(SFSnortPacket *);static int              SMTP_ProcessServerPacket(SFSnortPacket *);static void             SMTP_DisableDetect(SFSnortPacket *);static const u_int8_t * SMTP_HandleCommand(SFSnortPacket *, const u_int8_t *, const u_int8_t *);static const u_int8_t * SMTP_HandleData(SFSnortPacket *, const u_int8_t *, const u_int8_t *);static const u_int8_t * SMTP_HandleHeader(SFSnortPacket *, const u_int8_t *, const u_int8_t *);static const u_int8_t * SMTP_HandleDataBody(SFSnortPacket *, const u_int8_t *, const u_int8_t *);static int              SMTP_SearchStrFound(void *, int, void *);static int              SMTP_BoundaryStrFound(void *, int, void *);static int              SMTP_GetBoundary(const char *, int);static int              SMTP_IsTlsClientHello(const u_int8_t *, const u_int8_t *);static int              SMTP_IsTlsServerHello(const u_int8_t *, const u_int8_t *);/**************************************************************************/void SMTP_InitCmds(void){    const SMTPToken *tmp;    /* add one to CMD_LAST for NULL entry */    _smtp_cmds = (SMTPToken *)calloc(CMD_LAST + 1, sizeof(SMTPToken));    if (_smtp_cmds == NULL)    {        DynamicPreprocessorFatalMessage("%s(%d) => failed to allocate memory for smtp "                                        "command structure\n",                                         *(_dpd.config_file), *(_dpd.config_line));    }    for (tmp = &_smtp_known_cmds[0]; tmp->name != NULL; tmp++)    {        _smtp_cmds[tmp->search_id].name_len = tmp->name_len;        _smtp_cmds[tmp->search_id].search_id = tmp->search_id;        _smtp_cmds[tmp->search_id].name = strdup(tmp->name);        if (_smtp_cmds[tmp->search_id].name == NULL)        {            DynamicPreprocessorFatalMessage("%s(%d) => failed to allocate memory for smtp "                                            "command structure\n",                                             *(_dpd.config_file), *(_dpd.config_line));        }    }    /* initialize memory for command searches */    _smtp_cmd_search = (SMTPSearch *)calloc(CMD_LAST, sizeof(SMTPSearch));    if (_smtp_cmd_search == NULL)    {        DynamicPreprocessorFatalMessage("%s(%d) => failed to allocate memory for smtp "                                        "command structure\n",                                         *(_dpd.config_file), *(_dpd.config_line));    }}/* * Initialize SMTP searches * * @param  none * * @return none */void SMTP_SearchInit(void){    const char *error;    int erroffset;    const SMTPToken *tmp;    /* Initialize searches */    _dpd.searchAPI->search_init(NUM_SEARCHES);    /* Command search */    for (tmp = _smtp_cmds; tmp->name != NULL; tmp++)    {        _smtp_cmd_search[tmp->search_id].name = tmp->name;        _smtp_cmd_search[tmp->search_id].name_len = tmp->name_len;                _dpd.searchAPI->search_add(SEARCH_CMD, tmp->name, tmp->name_len, tmp->search_id);    }    _dpd.searchAPI->search_prep(SEARCH_CMD);    /* Response search */    for (tmp = &_smtp_resps[0]; tmp->name != NULL; tmp++)    {        _smtp_resp_search[tmp->search_id].name = tmp->name;        _smtp_resp_search[tmp->search_id].name_len = tmp->name_len;        _dpd.searchAPI->search_add(SEARCH_RESP, tmp->name, tmp->name_len, tmp->search_id);    }    _dpd.searchAPI->search_prep(SEARCH_RESP);    /* Header search */    for (tmp = &_smtp_hdrs[0]; tmp->name != NULL; tmp++)    {        _smtp_hdr_search[tmp->search_id].name = tmp->name;        _smtp_hdr_search[tmp->search_id].name_len = tmp->name_len;        _dpd.searchAPI->search_add(SEARCH_HDR, tmp->name, tmp->name_len, tmp->search_id);    }    _dpd.searchAPI->search_prep(SEARCH_HDR);    /* Data end search */    for (tmp = &_smtp_data_end[0]; tmp->name != NULL; tmp++)    {        _smtp_data_end_search[tmp->search_id].name = tmp->name;        _smtp_data_end_search[tmp->search_id].name_len = tmp->name_len;        _dpd.searchAPI->search_add(SEARCH_DATA_END, tmp->name, tmp->name_len, tmp->search_id);    }    _dpd.searchAPI->search_prep(SEARCH_DATA_END);    /* create regex for finding boundary string - since it can be cut across multiple     * lines, a straight search won't do. Shouldn't be too slow since it will most     * likely only be acting on a small portion of data */    //"^content-type:\\s*multipart.*boundary\\s*=\\s*\"?([^\\s]+)\"?"    //"^\\s*multipart.*boundary\\s*=\\s*\"?([^\\s]+)\"?"    //_mime_boundary_pcre.re = pcre_compile("^.*boundary\\s*=\\s*\"?([^\\s\"]+)\"?",    //_mime_boundary_pcre.re = pcre_compile("boundary(?:\n|\r\n)?=(?:\n|\r\n)?\"?([^\\s\"]+)\"?",    _mime_boundary_pcre.re = pcre_compile("boundary\\s*=\\s*\"?([^\\s\"]+)\"?",                                          PCRE_CASELESS | PCRE_DOTALL,                                          &error, &erroffset, NULL);    if (_mime_boundary_pcre.re == NULL)    {        DynamicPreprocessorFatalMessage("Failed to compile pcre regex for getting boundary "                                        "in a multipart SMTP message: %s\n", error);    }    _mime_boundary_pcre.pe = pcre_study(_mime_boundary_pcre.re, 0, &error);    if (error != NULL)    {        DynamicPreprocessorFatalMessage("Failed to study pcre regex for getting boundary "                                        "in a multipart SMTP message: %s\n", error);    }}/*  * Initialize run-time boundary search */static int SMTP_BoundarySearchInit(void){    _smtp->mime_boundary.boundary_search = _dpd.searchAPI->search_instance_new();    if (_smtp->mime_boundary.boundary_search == NULL)        return -1;    _dpd.searchAPI->search_instance_add(_smtp->mime_boundary.boundary_search,                                        _smtp->mime_boundary.boundary,                                        _smtp->mime_boundary.boundary_len, BOUNDARY);    _dpd.searchAPI->search_instance_prep(_smtp->mime_boundary.boundary_search);    return 0;}/* * Reset SMTP session state * * @param  none * * @return none */static void SMTP_ResetState(void){    /* save this so we know whether or not to flush when we get 354 data response */    int save_state_flags = _smtp->state_flags & (SMTP_FLAG_GOT_DATA_CMD | SMTP_FLAG_GOT_DATA_RESP);    if (_smtp->mime_boundary.boundary_search != NULL)    {        _dpd.searchAPI->search_instance_free(_smtp->mime_boundary.boundary_search);        _smtp->mime_boundary.boundary_search = NULL;    }    _smtp->state = STATE_COMMAND;    _smtp->data_state = STATE_DATA_INIT;    _smtp->state_flags = save_state_flags;    memset(&_smtp->mime_boundary, 0, sizeof(SMTPMimeBoundary));}/* * Given a server configuration and a port number, we decide if the port is *  in the SMTP server port list. * *  @param  port       the port number to compare with the configuration * *  @return integer *  @retval  0 means that the port is not a server port *  @retval !0 means that the port is a server port */int SMTP_IsServer(u_int16_t port){    if (_smtp_config.ports[port / 8] & (1 << (port % 8)))    {        return 1;    }    return 0;}/* * Do first-packet setup * * @param   p   standard Packet structure * * @return  none */static void SMTP_Setup(SFSnortPacket *p){       /* reset normalization stuff */    _smtp_normalizing = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久**毛片大全| 久久超碰97中文字幕| 蜜桃视频一区二区| 91老师国产黑色丝袜在线| 日韩精品在线一区二区| 亚洲日本va午夜在线影院| 久久精品久久综合| 欧美午夜视频网站| 国产精品久久久久久久久动漫| 久久精品国产一区二区三 | 亚洲欧美在线视频观看| 日韩不卡一区二区三区| jiyouzz国产精品久久| 精品第一国产综合精品aⅴ| 日一区二区三区| 欧美日韩一区二区三区不卡| 国产精品国产精品国产专区不片 | 一区二区在线观看不卡| 国产馆精品极品| 欧美tickle裸体挠脚心vk| 日本在线观看不卡视频| 欧美日韩在线观看一区二区 | 日本一不卡视频| 欧美精品 日韩| 三级亚洲高清视频| 91麻豆精品国产91久久久资源速度 | 综合久久综合久久| 99天天综合性| 亚洲视频每日更新| 色呦呦日韩精品| 玉米视频成人免费看| 色呦呦国产精品| 亚洲制服丝袜在线| 欧美日韩视频在线第一区| 亚洲制服丝袜一区| 欧美日韩亚洲不卡| 麻豆一区二区三| 久久久青草青青国产亚洲免观| 国产精品一色哟哟哟| 国产日韩欧美一区二区三区乱码 | 亚洲精品一区二区三区蜜桃下载| 久久99蜜桃精品| 国产亚洲精品7777| 99国产精品99久久久久久| 亚洲精品国产高清久久伦理二区| 91原创在线视频| 一区二区三区欧美亚洲| 欧美日韩精品一区二区在线播放| 亚洲成人精品在线观看| 欧美大片一区二区| 国产成人av网站| 中文字幕一区免费在线观看| 色综合久久久久| 日韩国产精品久久| 久久久www免费人成精品| 色一区在线观看| 午夜不卡av免费| 久久久91精品国产一区二区三区| 成人高清在线视频| 午夜激情综合网| 久久综合色一综合色88| 97久久人人超碰| 日本视频免费一区| 中文字幕的久久| 欧美日韩精品福利| 国产成人精品1024| 午夜精品影院在线观看| 久久久亚洲精品一区二区三区 | 国产精品一区专区| 亚洲国产欧美在线| 国产日韩欧美电影| 欧美蜜桃一区二区三区| 国产精品99久久久久久宅男| 亚洲黄色在线视频| 欧美激情在线一区二区三区| 欧美三级午夜理伦三级中视频| 国产精品18久久久久| 亚洲综合自拍偷拍| 久久久三级国产网站| 精品视频999| 成+人+亚洲+综合天堂| 视频一区二区三区中文字幕| 国产精品视频观看| 久久影院午夜论| 69堂亚洲精品首页| 在线精品视频免费观看| 成人av在线资源| 国产精品自产自拍| 久久精品国产久精国产爱| 一个色在线综合| 一区二区中文视频| 国产精品网站在线观看| 欧美电影免费观看高清完整版在线| 一本大道久久a久久综合婷婷| 国产aⅴ综合色| 国产老肥熟一区二区三区| 丝袜a∨在线一区二区三区不卡| 亚洲欧美另类小说| 亚洲欧美aⅴ...| 亚洲丝袜美腿综合| 综合久久久久久| 自拍偷拍国产亚洲| 一区二区中文视频| 一区在线观看免费| 亚洲视频一区在线| 亚洲欧美激情在线| 亚洲精品美腿丝袜| 亚洲少妇最新在线视频| 国产精品国产三级国产aⅴ中文 | 亚洲免费观看高清完整| 中文欧美字幕免费| 国产精品网站导航| 亚洲欧洲日韩在线| 亚洲精品水蜜桃| 亚洲一区二区三区四区的| 亚洲一区二区高清| 日本vs亚洲vs韩国一区三区 | 亚洲最色的网站| 亚洲国产婷婷综合在线精品| 一区二区日韩av| 亚洲国产欧美在线人成| 日韩经典中文字幕一区| 久色婷婷小香蕉久久| 国模大尺度一区二区三区| 国产精品一区二区免费不卡 | 成年人网站91| 97久久超碰精品国产| 91成人免费在线| 欧美日韩夫妻久久| 精品国产一二三| 国产精品美女久久久久久久久 | 久久免费美女视频| 日本一区二区三区久久久久久久久不 | 亚洲男人的天堂av| 亚洲电影在线播放| 久久66热偷产精品| 不卡一二三区首页| 欧美日韩中文字幕精品| 欧美成人免费网站| 国产精品国产三级国产aⅴ中文| 亚洲综合色网站| 九九**精品视频免费播放| 懂色av一区二区夜夜嗨| 在线精品观看国产| 欧美精品一区二区三区很污很色的| 国产免费观看久久| 亚洲成人自拍一区| 国产酒店精品激情| 欧美日韩一区在线| 国产亚洲制服色| 亚洲福利视频导航| 丁香婷婷综合激情五月色| 在线看日本不卡| 久久这里只有精品首页| 一区二区国产视频| 国产精品123| 欧美放荡的少妇| 中文字幕在线一区免费| 日韩精品久久久久久| 99久久精品国产一区二区三区| 在线不卡免费欧美| 中文字幕亚洲欧美在线不卡| 免费视频最近日韩| 91九色最新地址| 国产人成亚洲第一网站在线播放 | 中文字幕日韩一区二区| 五月天一区二区三区| 成人av高清在线| 欧美精品一区二区三| 午夜精品福利在线| 色婷婷综合视频在线观看| 精品国产一区二区三区不卡| 亚洲在线成人精品| 92国产精品观看| 欧美国产97人人爽人人喊| 精品一区二区三区av| 欧美精品色综合| 亚洲一区二区美女| 在线区一区二视频| 国产精品美女一区二区三区| 九九九精品视频| 欧美一区2区视频在线观看| 一级做a爱片久久| av亚洲精华国产精华| 中文字幕精品—区二区四季| 久久精品国产免费| 日韩亚洲欧美成人一区| 天天综合色天天综合| 欧美撒尿777hd撒尿| 一级中文字幕一区二区| 欧美专区日韩专区| 亚洲影院免费观看| 欧美日韩你懂的| 天天影视涩香欲综合网| 欧美男男青年gay1069videost| 亚洲va在线va天堂| 91精品在线一区二区| 婷婷综合五月天| 日韩三级高清在线| 激情综合色丁香一区二区|