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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? op_decode.c

?? 知名的開(kāi)源IDS的日志工具
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    /* set the IP header length */    hlen = IP_HLEN(p->iph) << 2;    if(len < hlen)    {        if(pv.verbose >= 3)            LogMessage("[!] WARNING: ICMP Unreachable IP len (%d bytes) "                    "< IP hdr len (%d bytes), packet discarded\n",                     ip_len, hlen);        p->iph = NULL;        return(0);    }    p->ip_option_count = 0;    /* set the remaining packet length */    ip_len = len - hlen;    /* check for fragmented packets */    p->frag_offset = ntohs(p->iph->ip_off);    /*      * get the values of the reserved, more      * fragments and don't fragment flags      */    if(((p->frag_offset & 0x8000) >> 15))        p->pkt_flags |= PKT_RB_FLAG;    if(((p->frag_offset & 0x4000) >> 14))        p->pkt_flags |= PKT_DF_FLAG;    if(((p->frag_offset & 0x2000) >> 13))        p->pkt_flags |= PKT_MF_FLAG;    /* mask off the high bits in the fragment offset field */    p->frag_offset &= 0x1FFF;    if(p->frag_offset || (p->pkt_flags & PKT_MF_FLAG))    {        /* set the packet fragment flag */        p->pkt_flags |= PKT_FRAG_FLAG;        /* set the payload pointer and payload size */        p->data = pkt + hlen;        p->dsize = ip_len;    }    else    {        switch(p->iph->ip_proto)        {            case IPPROTO_TCP: /* decode the interesting part of the header */                if(ip_len > 4)                {                    p->tcph =(TCPHdr *)(pkt + hlen);                    /* stuff more data into the printout data struct */                    p->sp = ntohs(p->tcph->th_sport);                    p->dp = ntohs(p->tcph->th_dport);                }                break;            case IPPROTO_UDP:                if(ip_len > 4)                {                    p->udph = (UDPHdr *)(pkt + hlen);                    /* fill in the printout data structs */                    p->sp = ntohs(p->udph->uh_sport);                    p->dp = ntohs(p->udph->uh_dport);                }                break;        }    }    return(1);}/* * Function: DecodeTCP(u_int8_t *, const u_int32_t, Packet *) * * Purpose: Decode the TCP transport layer * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet *            p   => Pointer to packet decode struct * * Returns: void function */void DecodeTCP(u_int8_t * pkt, const u_int32_t len, Packet * p){    u_int32_t hlen;            /* TCP header length */    //u_short csum;              /* checksum */    if(len < 20)    {        if(pv.verbose >= 3)            LogMessage("[!] WARNING: TCP packet (len = %d) cannot contain "                    "20 byte header\n", len);        p->tcph = NULL;    }    /* lay TCP on top of the data cause there is enough of it! */    p->tcph = (TCPHdr *) pkt;    /* multiply the payload offset value by 4 */    hlen = TCP_OFFSET(p->tcph) << 2;    if(hlen < 20)    {        if(pv.verbose >= 3)            LogMessage("[!] WARNING: TCP Data Offset %d < 5 \n",                    TCP_OFFSET(p->tcph));        hlen = 20;        return;    }    /* Return if we do not have enough data to finish decoding the     * TCP header */    if(len < hlen)        return;    /* if options are present, decode them */    p->tcp_options_len = hlen - 20;    if(p->tcp_options_len > 0)    {        p->tcp_options_data = pkt + 20;        DecodeTCPOptions((u_int8_t *) (pkt + 20), p->tcp_options_len, p);    }    else    {        p->tcp_option_count = 0;    }    /* stuff more data into the printout data struct */    p->sp = ntohs(p->tcph->th_sport);    p->dp = ntohs(p->tcph->th_dport);    /* set the data pointer and size */    p->data = (u_int8_t *) (pkt + hlen);    if(hlen < len)    {        p->dsize = len - hlen;    }    else    {        p->dsize = 0;    }}/* * Function: DecodeUDP(u_int8_t *, const u_int32_t, Packet *) * * Purpose: Decode the UDP transport layer * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet *            p   => pointer to decoded packet struct   * * Returns: void function */void DecodeUDP(u_int8_t * pkt, const u_int32_t len, Packet * p){    if(len < sizeof(UDPHdr))    {        if(pv.verbose >= 3)            LogMessage("[!] WARNING: Truncated UDP header (%d bytes)\n", len);        p->udph = NULL;        return;    }    /* set the ptr to the start of the UDP header */    p->udph = (UDPHdr *) pkt;    /* fill in the printout data structs */    p->sp = ntohs(p->udph->uh_sport);    p->dp = ntohs(p->udph->uh_dport);    p->data = (u_int8_t *) (pkt + UDP_HEADER_LEN);    if((len - UDP_HEADER_LEN) > 0)    {        p->dsize = len - UDP_HEADER_LEN;    }    else    {        p->dsize = 0;    }}/* * Function: DecodeICMP(u_int8_t *, const u_int32_t, Packet *) * * Purpose: Decode the ICMP transport layer * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet *            p   => pointer to the decoded packet struct * * Returns: void function */void DecodeICMP(u_int8_t * pkt, const u_int32_t len, Packet * p){    if(len < ICMP_HEADER_LEN)    {        if(pv.verbose >= 3)            LogMessage("[!] WARNING: Truncated ICMP header(%d bytes)\n", len);        p->icmph = NULL;        return;    }    /* set the header ptr first */    p->icmph = (ICMPHdr *) pkt;    p->dsize = len - ICMP_HEADER_LEN;    p->data = pkt + ICMP_HEADER_LEN;    switch(p->icmph->icmp_type)    {        case ICMP_ECHOREPLY:        case ICMP_ECHO:            if(len < 8)            {                if(pv.verbose >= 3)                    LogMessage("[!] WARNING: Truncated ICMP-UNREACH "                            "header (%d bytes)\n", len);                p->icmph = NULL;            }            p->dsize -= 4;            p->data += 4;            break;        case ICMP_DEST_UNREACH:            /* if unreach packet is smaller than expected! */            if(len < 16)            {                if(pv.verbose >= 3)                    LogMessage("[!] WARNING: Truncated ICMP-UNREACH "                            "header (%d bytes)\n", len);                p->icmph = NULL;            }            break;    }    return;}/* * Function: DecodeARP(u_int8_t *, u_int32_t, Packet *) * * Purpose: Decode ARP stuff * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet *            p   => pointer to decoded packet struct * * Returns: void function */void DecodeARP(u_int8_t * pkt, u_int32_t len, Packet * p){    p->ah = (EtherARP *) pkt;    if(len < sizeof(EtherARP))    {        if(pv.verbose >= 3)            LogMessage("Truncated ARP packet\n");        return;    }    return;}/* * Function: DecodeIPV6(u_int8_t *, u_int32_t) * * Purpose: Just like IPX, it's just for counting. * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet * * Returns: void function */void DecodeIPV6(u_int8_t *pkt, u_int32_t len){    /* total placeholder */    return;}/* * Function: DecodeIPX(u_int8_t *, u_int32_t) * * Purpose: Well, it doesn't do much of anything right now... * * Arguments: pkt => ptr to the packet data *            len => length from here to the end of the packet * * Returns: void function * */void DecodeIPX(u_int8_t *pkt, u_int32_t len){    /* another placeholder */    return;}/* * Function: DecodeTCPOptions(u_int8_t *, u_int32_t, Packet *) * * Purpose: Fairly self explainatory name, don't you think? * * Arguments: o_list => ptr to the option list *            o_len => length of the option list *            p     => pointer to decoded packet struct * * Returns: void function */void DecodeTCPOptions(u_int8_t *o_list, u_int32_t o_len, Packet *p){    u_int8_t *option_ptr;    u_int32_t bytes_processed;    u_int32_t current_option;    u_char done = 0;    option_ptr = o_list;    bytes_processed = 0;    current_option = 0;    while((bytes_processed < o_len) && (current_option < 40) && !done)    {        p->tcp_options[current_option].code = *option_ptr;        switch(*option_ptr)        {            case TCPOPT_NOP:            case TCPOPT_EOL:                if(*option_ptr == TCPOPT_EOL)                    done = 1;                                    p->tcp_options[current_option].len = 0;                p->tcp_options[current_option].data = NULL;                bytes_processed++;                current_option++;                option_ptr++;                break;            case TCPOPT_SACKOK:                p->tcp_options[current_option].len = 0;                p->tcp_options[current_option].data = NULL;                bytes_processed += 2;                option_ptr += 2;                current_option++;                break;            case TCPOPT_WSCALE:                p->tcp_options[current_option].len = 3;                p->tcp_options[current_option].data = option_ptr + 2;                option_ptr += 3;                bytes_processed += 3;                current_option++;                break;            default:                p->tcp_options[current_option].len = *(option_ptr + 1);                if(p->tcp_options[current_option].len > 40)                {                    p->tcp_options[current_option].len = 40;                }                else if( p->tcp_options[current_option].len == 0)                {                    /* got a bad option, we're all done */                    done = 1;                    p->pkt_flags |= PKT_TCPOPTS_BAD;                }                p->tcp_options[current_option].data = option_ptr + 2;                option_ptr += p->tcp_options[current_option].len;                bytes_processed += p->tcp_options[current_option].len;                current_option++;                break;        }    }    if(bytes_processed > o_len)    {        p->tcp_options[current_option].len =        p->tcp_options[current_option].len - (bytes_processed - o_len);        /*         * in reality shouldn't happen until we got the option type and len         * on the packet header boundary.. then we just drop last option (as         * it is corrupted anyway).         */        if(p->tcp_options[current_option].len < 0)            current_option--;    }    p->tcp_option_count = current_option;    return;}/* * Function: DecodeIPOptions(u_int8_t *, u_int32_t, Packet *) * * Purpose: Once again, a fairly self-explainatory name * * Arguments: o_list => ptr to the option list *            o_len => length of the option list *            p     => pointer to decoded packet struct * * Returns: void function */void DecodeIPOptions(u_int8_t *o_list, u_int32_t o_len, Packet *p){    u_int8_t *option_ptr;    u_int32_t bytes_processed;    u_int32_t current_option;    u_char done = 0;    option_ptr = o_list;    bytes_processed = 0;    current_option = 0;    while((bytes_processed < o_len) && (current_option < 40) && !done)    {        p->ip_options[current_option].code = *option_ptr;        switch(*option_ptr)        {            case IPOPT_RTRALT:            case IPOPT_NOP:            case IPOPT_EOL:                /* if we hit an EOL, we're done */                if(*option_ptr == IPOPT_EOL)                    done = 1;                p->ip_options[current_option].len = 0;                p->ip_options[current_option].data = NULL;                bytes_processed++;                current_option++;                option_ptr++;                break;            default:                p->ip_options[current_option].len = *(option_ptr + 1);                if(p->ip_options[current_option].len > 40)                {                    p->ip_options[current_option].len = 40;                }                else if(p->ip_options[current_option].len == 0)                {                    /*                      * this shouldn't happen, indicates a bad option list                      * so we bail                     */                     done = 1;                     p->pkt_flags |= PKT_IPOPTS_BAD;                }                p->ip_options[current_option].data = option_ptr + 2;                option_ptr += p->ip_options[current_option].len;                bytes_processed += p->ip_options[current_option].len;                current_option++;                break;        }    }    if(bytes_processed > o_len)    {        p->ip_options[current_option].len =        p->ip_options[current_option].len - (bytes_processed - o_len);        if(p->ip_options[current_option].len < 0)            current_option--;    }    p->ip_option_count = current_option;    return;}/* for anyone that needs to print a TCP flag string... */void CreateTCPFlagString(Packet *p, char *flagBuffer){    memset(flagBuffer, '\0', 9);    /* parse TCP flags */    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_RES1) ? '1' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_RES2) ? '2' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_URG)  ? 'U' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_ACK)  ? 'A' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_PUSH) ? 'P' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_RST)  ? 'R' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_SYN)  ? 'S' : '*');    *flagBuffer++ = (char) ((p->tcph->th_flags & TH_FIN)  ? 'F' : '*');}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久人人爽爽爽人久久久| 欧美日韩亚洲综合在线 | 2020国产精品| 亚洲欧美在线另类| 亚洲aaa精品| 国产麻豆视频一区| 色噜噜狠狠色综合中国| 日韩丝袜美女视频| 国产精品网站在线观看| 亚洲影院免费观看| 国产一二三精品| 色中色一区二区| 日韩欧美123| 亚洲激情在线激情| 国产一区二区毛片| 色婷婷亚洲一区二区三区| 日韩一区二区麻豆国产| 自拍偷拍亚洲综合| 精品伊人久久久久7777人| 91毛片在线观看| 欧美va亚洲va香蕉在线| 一区二区在线观看av| 国产一区二区美女诱惑| 欧美日韩你懂得| 中文字幕不卡的av| 日韩精品欧美成人高清一区二区| 国产成人夜色高潮福利影视| 欧美日韩免费观看一区三区| 中文字幕高清不卡| 美腿丝袜在线亚洲一区| 在线看不卡av| 国产精品人人做人人爽人人添| 日本91福利区| 欧美主播一区二区三区美女| 久久久久久久久岛国免费| 午夜精品福利一区二区蜜股av| 不卡一区中文字幕| 久久麻豆一区二区| 蜜桃免费网站一区二区三区| 欧美最猛性xxxxx直播| 国产精品午夜春色av| 麻豆freexxxx性91精品| 欧美视频在线观看一区二区| 综合欧美亚洲日本| 国产凹凸在线观看一区二区| 精品国产髙清在线看国产毛片| 亚洲亚洲精品在线观看| 91浏览器在线视频| 国产精品欧美久久久久无广告| 狠狠色狠狠色综合系列| 欧美一区二区三区视频在线| 亚洲成人午夜电影| 日本电影欧美片| 亚洲免费在线视频| 99久久综合精品| 国产精品另类一区| 懂色av一区二区在线播放| 亚洲精品一区二区三区四区高清| 蜜臀精品一区二区三区在线观看| 欧美精品在欧美一区二区少妇| 亚洲一区在线观看视频| 91高清视频在线| 亚洲精品精品亚洲| 在线看国产一区| 亚洲成人福利片| 欧美日韩亚州综合| 三级不卡在线观看| 欧美一级免费大片| 青娱乐精品视频在线| 日韩三级视频在线看| 蜜桃一区二区三区在线观看| 日韩欧美亚洲一区二区| 日韩精品乱码免费| 精品国产乱码91久久久久久网站| 九色porny丨国产精品| 精品国产一区二区三区忘忧草 | 国产欧美视频一区二区| 粉嫩高潮美女一区二区三区| 国产精品视频在线看| 成人动漫在线一区| 亚洲美女淫视频| 在线观看一区日韩| 日韩精品免费专区| 欧美精品一区二区三区在线播放| 黑人巨大精品欧美一区| 国产色91在线| 99久久久国产精品| 亚洲国产欧美一区二区三区丁香婷| 欧美三级三级三级爽爽爽| 日本成人在线一区| 久久久久久久综合狠狠综合| 不卡一区中文字幕| 亚洲一区二区综合| 欧美成人激情免费网| 国产成人综合视频| 一区二区成人在线| 欧美成人三级在线| 成人av影视在线观看| 亚洲国产成人porn| xnxx国产精品| 91麻豆国产自产在线观看| 亚洲成人你懂的| 欧美va亚洲va香蕉在线| av男人天堂一区| 午夜精品在线看| 久久久久一区二区三区四区| 91美女精品福利| 日韩av中文在线观看| 中文字幕乱码一区二区免费| 欧美探花视频资源| 国产一区二三区好的| 一区二区三区视频在线看| 一级日本不卡的影视| 欧美一区中文字幕| 成人丝袜高跟foot| 日韩精品国产欧美| 国产精品免费久久久久| 欧美日韩一区二区三区在线| 国产精品99久久久久久久vr| 亚洲一区二区三区四区中文字幕| 欧美精品一区二区三区蜜桃 | 日本亚洲欧美天堂免费| 久久精品一区二区三区不卡| 欧美三级一区二区| 国产精品69久久久久水密桃| 亚洲国产中文字幕在线视频综合 | 欧美精品一区男女天堂| 色8久久精品久久久久久蜜| 精品在线一区二区三区| 一区二区三区日韩欧美精品| 久久亚洲二区三区| 欧美日韩中文字幕精品| 国产精品一二三在| 日本成人在线电影网| 亚洲欧美国产三级| 精品噜噜噜噜久久久久久久久试看 | 欧美日韩在线播| 粉嫩在线一区二区三区视频| 日韩电影网1区2区| 依依成人精品视频| 国产精品沙发午睡系列990531| 欧美一区二区三区免费在线看| 91黄色在线观看| 成人免费毛片高清视频| 九一久久久久久| 日韩成人免费电影| 亚洲一区二区三区四区的| 欧美高清在线精品一区| 欧美一区二区三区视频在线观看| 欧美在线观看视频在线| 91在线你懂得| 国产**成人网毛片九色| 精品一区二区在线视频| 日韩福利视频导航| 午夜精品久久久久久久久| 一区二区三区精品| 综合中文字幕亚洲| 欧美高清在线一区二区| 2欧美一区二区三区在线观看视频| 在线不卡一区二区| 色偷偷一区二区三区| av在线一区二区三区| 国产二区国产一区在线观看| 国内外成人在线| 极品少妇xxxx偷拍精品少妇| 日本成人中文字幕| 日韩va欧美va亚洲va久久| 偷窥少妇高潮呻吟av久久免费| 亚洲欧美国产77777| 国产欧美综合在线观看第十页| 日韩女优av电影| 日韩色在线观看| 日韩欧美二区三区| 日韩欧美国产综合一区| 欧美一区二区三区电影| 日韩一区二区在线观看视频| 欧美一二三区精品| 日韩精品中文字幕在线不卡尤物| 日韩一本二本av| 欧美mv日韩mv亚洲| 久久久久国产精品麻豆ai换脸| 精品第一国产综合精品aⅴ| 欧美成人a∨高清免费观看| 日韩小视频在线观看专区| 亚洲亚洲人成综合网络| 婷婷亚洲久悠悠色悠在线播放 | 欧美成人一区二区三区片免费 | 国产精品66部| 成人高清av在线| 91片在线免费观看| 欧美综合久久久| 91精选在线观看| 亚洲精品在线观看视频| 中文字幕欧美三区| 国产精品对白交换视频 | 欧美电影在线免费观看| 日韩欧美一二区| 久久久不卡影院| 亚洲视频一二三| 亚洲不卡在线观看|