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

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

?? spp_rpc_decode.c

?? 著名的入侵檢測系統snort的最新版本的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    }    /* check the port list */    if(!(RpcDecodePorts[(p->dp/8)] & (1<<(p->dp%8))))    {        return;    }    PREPROC_PROFILE_START(rpcdecodePerfStats);    ret = ConvertRPC(p);    DEBUG_WRAP(DebugMessage(DEBUG_RPC,"Got ret: %d from ConvertRPC\n", ret););        if(ret != 0)    {        switch(ret)        {        case RPC_FRAG_TRAFFIC:            if(rpcpreprocdata.alert_fragments)            {                SnortEventqAdd(GENERATOR_SPP_RPC_DECODE, RPC_FRAG_TRAFFIC,                         1, RPC_CLASS, 3, RPC_FRAG_TRAFFIC_STR, 0);            }            break;        case RPC_MULTIPLE_RECORD:            if(rpcpreprocdata.alert_multi)            {                SnortEventqAdd(GENERATOR_SPP_RPC_DECODE, RPC_MULTIPLE_RECORD,                         1, RPC_CLASS, 3, RPC_MULTIPLE_RECORD_STR, 0);            }            break;        case RPC_LARGE_FRAGSIZE:            if(rpcpreprocdata.alert_large)            {                SnortEventqAdd(GENERATOR_SPP_RPC_DECODE, RPC_LARGE_FRAGSIZE,                         1, RPC_CLASS, 3, RPC_LARGE_FRAGSIZE_STR, 0);            }            break;        case RPC_INCOMPLETE_SEGMENT:            if(rpcpreprocdata.alert_incomplete)            {                SnortEventqAdd(GENERATOR_SPP_RPC_DECODE, RPC_INCOMPLETE_SEGMENT,                         1, RPC_CLASS, 3, RPC_INCOMPLETE_SEGMENT_STR, 0);            }            break;        case RPC_ZERO_LENGTH_FRAGMENT:            if(rpcpreprocdata.alert_multi)            {                SnortEventqAdd(GENERATOR_SPP_RPC_DECODE, RPC_ZERO_LENGTH_FRAGMENT,                         1, RPC_CLASS, 3, RPC_ZERO_LENGTH_FRAGMENT_STR, 0);            }            break;        }    }        PREPROC_PROFILE_END(rpcdecodePerfStats);    return;    }/* most significant bit */#define MSB 0x80000000/* * For proto ref, see rfc1831 section 10 and page 445 UNP vol2 *   * check to make sure we've got enough data to process a record * * Where did the original 16 come from?  It seems that it could be * a last frag of 0 length according to spec. * * The minimum "valid" packet for us is 8 fields * 4 bytes * * This decoder is ignorant of TCP state so we'll have to assume * that reassembled TCP stuff is reinjected to the preprocessor * chain * * This decoder is also ignorant of multiple RPC requests in a * single stream.  To compensate, we can configure alerts * * Additionally, we don't do anything to verify that this is * really an RPC service port so we don't decode anything that * happens as a result * * From rfc1831: * *  Fragment Header ( 1 flag bit, 31 bit uint ) *     RPC Body *   *        unsigned int xid  *        struct call_body { *             unsigned int rpcvers;  // must be equal to two (2)  *             unsigned int prog; *             unsigned int vers; *             unsigned int proc; *             opaque_auth  cred; *             opaque_auth  verf; *        } */int ConvertRPC(Packet *p){    const u_int8_t *data = p->data;   /* packet data */    u_int8_t *norm_index;    u_int8_t *data_index;     /* this is the index pointer to walk thru the data */    u_int8_t *data_end;       /* points to the end of the payload for loop control */    u_int16_t psize = p->dsize;     /* payload size */    int length;          /* length of current fragment */    int last_fragment = 0; /* have we seen the last fragment sign? */    int decoded_len; /* our decoded length is always atleast a 0 byte header */    u_int32_t fraghdr;   /* Used to store the RPC fragment header data */    int fragcount = 0;   /* How many fragment counters have we seen? */    int ret;    u_int8_t *decode_buf_start = &DecodeBuffer[0];    u_int8_t *decode_buf_end = decode_buf_start + DECODE_BLEN;        if(psize < 32)    {        DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Returning due to"                                " small packet size: %d\n ", psize););        return 0;    }    /* on match, normalize the data */    DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Got RPC traffic (%d bytes)!\n", psize););    /* cheesy alignment safe fraghdr = *(uint32_t *) data*/    *((u_int8_t *)  &fraghdr)      = data[0];    *(((u_int8_t *) &fraghdr) + 1) = data[1];    *(((u_int8_t *) &fraghdr) + 2) = data[2];    *(((u_int8_t *) &fraghdr) + 3) = data[3];        /* The fragment header is 4 bytes in network byte order */    fraghdr = ntohl(fraghdr);    length = fraghdr & 0x7FFFFFFF;        /* Check to see if we are on the last fragment */    if(fraghdr & MSB)    {        /* on match, normalize the data */        DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Found Last Fragment: %u!\n",fraghdr););        if((length + 4 != psize) && !(p->packet_flags & PKT_REBUILT_STREAM))        {            DEBUG_WRAP(DebugMessage(DEBUG_RPC, "It's not the only thing in this buffer!"                                    " length: %d psize: %d!\n", length, psize););                        return RPC_MULTIPLE_RECORD;        }        else if ( length == 0 )        {            DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Zero-length RPC fragment detected."                                    " length: %d psize: %d.\n", length, psize););                        return RPC_ZERO_LENGTH_FRAGMENT;        }        return 0;    }    else if(rpcpreprocdata.alert_fragments)    {        return RPC_FRAG_TRAFFIC;    }    norm_index = &DecodeBuffer[0];     data_index = (u_int8_t *)data;    data_end = (u_int8_t *)data + psize;    /* now we know it's in fragmented records, 4 bytes of      * header(of which the most sig bit fragment (0=yes 1=no).      * The header is followed by the value move pointer up 4      * bytes, we need to stuff header in first 4 bytes.       * But the header has the total length...we don't know      * until the end      */        /* This is where decoded data will be written */    norm_index += 4;    decoded_len = 4;    /* always make sure that we have enough data to process atleast     * the header and that we only process at most, one fragment     */        while(((data_end - data_index) >= 4) && (last_fragment == 0))    {        /* get the fragment length (31 bits) and move the pointer to           the start of the actual data */        *((u_int8_t *) &fraghdr)       = data_index[0];        *(((u_int8_t *) &fraghdr) + 1) = data_index[1];        *(((u_int8_t *) &fraghdr) + 2) = data_index[2];        *(((u_int8_t *) &fraghdr) + 3) = data_index[3];        fraghdr = ntohl(fraghdr);        length = fraghdr & 0x7FFFFFFF;                /* move the current index into the packet past the           fragment header */        data_index += 4;                 if(fraghdr & MSB)        {            DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Last Fragment detected\n"););            last_fragment = 1;        }        if((length + decoded_len) < decoded_len)        {            /* don't allow integer overflow to confuse us.  Should be             * caught by length > psize but who knows when weird             * psize's might be allowed */                        DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Integer Overflow"                                    " field(%d) exceeds packet size(%d)\n",                                    length, psize););            return RPC_LARGE_FRAGSIZE;        }        decoded_len += length;        if(length > psize)        {            DEBUG_WRAP(DebugMessage(DEBUG_RPC, "Length of"                                    " field(%d) exceeds packet size(%d)\n",                                    length, psize););            return RPC_INCOMPLETE_SEGMENT;        }        else if(decoded_len > psize)        {            /* The entire request is larger than our current packet             *  size             */            DEBUG_WRAP(DebugMessage(DEBUG_RPC, " Decoded Length (%d)"                                    "exceeds packet size(%d)\n",                                    decoded_len, psize););            return RPC_LARGE_FRAGSIZE;        }        else if((data_index + length) > data_end)        {            DEBUG_WRAP(DebugMessage(DEBUG_RPC,                                    "returning LARGE_FRAGSIZE"                                    "since we'd read past our end\n"););            return RPC_LARGE_FRAGSIZE;        }        else        {            fragcount++;                        DEBUG_WRAP(DebugMessage(DEBUG_RPC,                                    "length: %d size: %d decoded_len: %d\n",                                    length, psize, decoded_len););                                    ret = SafeMemcpy(norm_index, data_index, length, decode_buf_start, decode_buf_end);            if (ret != SAFEMEM_SUCCESS)            {                return 0;            }            norm_index += length;            data_index += length;        }    }    /* rewrite the header on the request packet */    /* move the fragment header back onto the data */        fraghdr = ntohl(decoded_len); /* size */    DecodeBuffer[0] = *((u_int8_t *) &fraghdr);    DecodeBuffer[1] = *(((u_int8_t *) &fraghdr) + 1);    DecodeBuffer[2] = *(((u_int8_t *) &fraghdr) + 2);    DecodeBuffer[3] = *(((u_int8_t *) &fraghdr) + 3);        DecodeBuffer[0] |=  0x80;             /* Mark as unfragmented */    /* is there another request encoded that is trying to evade us by doing     *     * frag last frag [ more data ]?     */    if(decoded_len + ((fragcount - 1) * 4) != psize)    {        DEBUG_WRAP(DebugMessage(DEBUG_RPC, "decoded len does not compute: %d\n",                                decoded_len););        return RPC_MULTIPLE_RECORD;    }    DEBUG_WRAP(DebugMessage(DEBUG_RPC, "New size: %d\n", decoded_len);               DebugMessage(DEBUG_RPC, "converted data:\n");               //PrintNetData(stdout, data, decoded_len);               );    p->alt_dsize = decoded_len;    p->packet_flags |= PKT_ALT_DECODE;    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲精品| 成人免费在线观看入口| 久久毛片高清国产| 国产精品美女久久久久久久网站| 中文字幕一区不卡| 亚洲自拍另类综合| 麻豆精品国产传媒mv男同| 国产一区欧美二区| 在线视频一区二区三| 精品少妇一区二区三区在线视频| 国产精品日韩精品欧美在线| 亚洲va欧美va国产va天堂影院| 精品写真视频在线观看| 色哟哟日韩精品| 精品国产一区久久| 亚洲一区二区三区四区在线观看| 久久9热精品视频| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美三级在线看| 中文字幕av一区二区三区高| 午夜精品久久一牛影视| 国产精品99久久久久久久vr| 91国偷自产一区二区开放时间| 日韩精品一区二区三区四区视频 | 天堂在线一区二区| 国产精品一二一区| 欧美日韩视频在线第一区| 国产欧美一区二区三区鸳鸯浴| 午夜国产不卡在线观看视频| 成人的网站免费观看| 亚洲日本在线视频观看| 国产一区二区电影| 欧美日韩成人在线一区| 中文字幕一区二区不卡| 国内偷窥港台综合视频在线播放| 欧美亚洲综合久久| 国产精品九色蝌蚪自拍| 国内精品在线播放| 7777精品久久久大香线蕉| 136国产福利精品导航| 国内外精品视频| 欧美高清激情brazzers| 亚洲人成伊人成综合网小说| 国产一区二区伦理片| 777亚洲妇女| 亚洲最新视频在线播放| 国产精品一区二区在线观看不卡| 91精品国产综合久久久久久漫画| 亚洲特黄一级片| 国产91精品一区二区麻豆网站| 日韩一区二区三区视频| 午夜在线电影亚洲一区| 色哟哟欧美精品| 成人一级片在线观看| 久久99国产精品免费| 欧美男生操女生| 亚洲综合久久久| 伊人夜夜躁av伊人久久| 成人亚洲一区二区一| 国产亚洲精品资源在线26u| 美女网站在线免费欧美精品| 欧美老肥妇做.爰bbww| 亚洲一线二线三线视频| 色94色欧美sute亚洲线路一久| 欧美激情在线一区二区三区| 国产超碰在线一区| 国产亚洲综合色| 国产v日产∨综合v精品视频| 久久亚洲精华国产精华液| 裸体在线国模精品偷拍| 欧美一级视频精品观看| 蜜桃av噜噜一区二区三区小说| 8v天堂国产在线一区二区| 日韩电影在线免费| 日韩欧美一区二区不卡| 麻豆91精品91久久久的内涵| 精品乱人伦一区二区三区| 精品一区精品二区高清| 精品日韩一区二区三区免费视频| 久久99久久久久久久久久久| 欧美成人艳星乳罩| 国产精品一区二区无线| 中文字幕成人在线观看| 99久久婷婷国产综合精品电影| 17c精品麻豆一区二区免费| 一本高清dvd不卡在线观看| 亚洲精品第1页| 欧美日韩电影一区| 狂野欧美性猛交blacked| 欧美成人精品1314www| 91精品国产欧美一区二区成人| 日韩av电影免费观看高清完整版 | 一区二区三区欧美日韩| 欧美日韩午夜影院| 天天色天天操综合| 精品人伦一区二区色婷婷| 国产不卡在线一区| 亚洲精品一卡二卡| 欧美军同video69gay| 另类的小说在线视频另类成人小视频在线| 精品国产凹凸成av人网站| 粉嫩绯色av一区二区在线观看| 亚洲四区在线观看| 欧美喷潮久久久xxxxx| 精品影视av免费| 亚洲欧洲99久久| 欧美日韩日本视频| 国产一区二区在线观看免费| 1区2区3区国产精品| 欧美日韩国产综合久久| 国产乱国产乱300精品| 亚洲视频一区二区在线观看| 欧美特级限制片免费在线观看| 免费观看久久久4p| 国产精品系列在线| 欧美三区在线观看| 国产一区二区免费在线| 亚洲乱码国产乱码精品精小说| 欧美美女bb生活片| 国产成人自拍网| 亚洲一区二区在线视频| 久久网这里都是精品| 色婷婷av一区二区| 久久99国产乱子伦精品免费| 椎名由奈av一区二区三区| 日韩一二三四区| 91首页免费视频| 久久精品国产免费看久久精品| 亚洲三级免费电影| 精品久久久久久久久久久久包黑料| av电影天堂一区二区在线| 免费久久99精品国产| 亚洲女人****多毛耸耸8| 欧美大片日本大片免费观看| av影院午夜一区| 美女视频黄久久| 一个色在线综合| 国产性做久久久久久| 欧美精品在线观看播放| 成人av在线资源网| 极品美女销魂一区二区三区免费| 亚洲人成影院在线观看| 久久精品视频一区二区| 欧美日韩成人高清| 99久久国产免费看| 国产黑丝在线一区二区三区| 日韩国产欧美在线视频| 亚洲日本在线观看| 国产清纯在线一区二区www| 日韩一区国产二区欧美三区| 色哟哟欧美精品| 东方aⅴ免费观看久久av| 免费成人在线观看视频| 91小宝寻花一区二区三区| 精品一二线国产| 日韩专区中文字幕一区二区| 亚洲男女毛片无遮挡| 中文字幕va一区二区三区| 欧美精品一区二区在线播放| 欧美日韩美女一区二区| 色综合天天做天天爱| 国产91丝袜在线观看| 韩国av一区二区三区在线观看| 日韩黄色片在线观看| 亚洲综合丁香婷婷六月香| 亚洲人成网站影音先锋播放| 国产欧美精品一区aⅴ影院 | 国产成人精品在线看| 久久99精品视频| 奇米888四色在线精品| 亚洲自拍偷拍欧美| 亚洲专区一二三| 一区二区免费看| 夜夜揉揉日日人人青青一国产精品| 中文字幕乱码久久午夜不卡| 国产肉丝袜一区二区| 国产婷婷精品av在线| 国产日韩影视精品| 久久久国产一区二区三区四区小说| 精品国产髙清在线看国产毛片| 日韩亚洲欧美在线| 欧美电影免费观看高清完整版在线 | 欧美精品久久久久久久久老牛影院| 一本一本久久a久久精品综合麻豆| 成人av免费观看| 99综合电影在线视频| 色综合色综合色综合色综合色综合| 成人激情图片网| 色综合中文字幕国产 | 精品国产乱码久久久久久闺蜜 | 国产麻豆日韩欧美久久| 国产高清不卡二三区| 国产91对白在线观看九色| 岛国精品一区二区| 成人激情动漫在线观看| 一本久道中文字幕精品亚洲嫩| 色婷婷久久99综合精品jk白丝| 91国在线观看| 制服.丝袜.亚洲.中文.综合| 日韩亚洲欧美在线|