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

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

?? print-tcp.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
?? 第 1 頁 / 共 2 頁
字號:
                                seq -= th->ack, ack -= th->seq;                        else                                seq -= th->seq, ack -= th->ack;                }                thseq = th->seq;                thack = th->ack;        } else {                /*fool gcc*/                thseq = thack = threv = 0;        }        if (hlen > length) {                (void)printf(" [bad hdr length %u - too long, > %u]",                             hlen, length);                return;        }        if (IP_V(ip) == 4 && vflag && !Kflag && !fragmented) {                u_int16_t sum, tcp_sum;                if (TTEST2(tp->th_sport, length)) {                        sum = tcp_cksum(ip, tp, length);                        (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->th_sum));                        if (sum != 0) {                                tcp_sum = EXTRACT_16BITS(&tp->th_sum);                                (void)printf(" (incorrect -> 0x%04x)",in_cksum_shouldbe(tcp_sum, sum));                        } else                                (void)printf(" (correct)");                }        }#ifdef INET6        if (IP_V(ip) == 6 && ip6->ip6_plen && vflag && !Kflag && !fragmented) {                u_int16_t sum,tcp_sum;                if (TTEST2(tp->th_sport, length)) {                        sum = tcp6_cksum(ip6, tp, length);                        (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->th_sum));                        if (sum != 0) {                                tcp_sum = EXTRACT_16BITS(&tp->th_sum);                                (void)printf(" (incorrect -> 0x%04x)",in_cksum_shouldbe(tcp_sum, sum));                        } else                                (void)printf(" (correct)");                }        }#endif        length -= hlen;        if (vflag > 1 || flags & (TH_SYN | TH_FIN | TH_RST)) {                (void)printf(", seq %u", seq);                if (length > 0) {                        (void)printf(":%u", seq + length);                }        }        if (flags & TH_ACK) {                (void)printf(", ack %u", ack);        }        (void)printf(", win %d", win);        if (flags & TH_URG)                (void)printf(", urg %d", urp);        /*         * Handle any options.         */        if (hlen > sizeof(*tp)) {                register const u_char *cp;                register u_int i, opt, datalen;                register u_int len;                hlen -= sizeof(*tp);                cp = (const u_char *)tp + sizeof(*tp);                printf(", options [");                while (hlen > 0) {                        if (ch != '\0')                                putchar(ch);                        TCHECK(*cp);                        opt = *cp++;                        if (ZEROLENOPT(opt))                                len = 1;                        else {                                TCHECK(*cp);                                len = *cp++;	/* total including type, len */                                if (len < 2 || len > hlen)                                        goto bad;                                --hlen;		/* account for length byte */                        }                        --hlen;			/* account for type byte */                        datalen = 0;/* Bail if "l" bytes of data are not left or were not captured  */#define LENCHECK(l) { if ((l) > hlen) goto bad; TCHECK2(*cp, l); }                        printf("%s", tok2str(tcp_option_values, "Unknown Option %u", opt));                        switch (opt) {                        case TCPOPT_MAXSEG:                                datalen = 2;                                LENCHECK(datalen);                                (void)printf(" %u", EXTRACT_16BITS(cp));                                break;                        case TCPOPT_WSCALE:                                datalen = 1;                                LENCHECK(datalen);                                (void)printf(" %u", *cp);                                break;                        case TCPOPT_SACK:                                datalen = len - 2;                                if (datalen % 8 != 0) {                                        (void)printf("malformed sack");                                } else {                                        u_int32_t s, e;                                        (void)printf(" %d ", datalen / 8);                                        for (i = 0; i < datalen; i += 8) {                                                LENCHECK(i + 4);                                                s = EXTRACT_32BITS(cp + i);                                                LENCHECK(i + 8);                                                e = EXTRACT_32BITS(cp + i + 4);                                                if (threv) {                                                        s -= thseq;                                                        e -= thseq;                                                } else {                                                        s -= thack;                                                        e -= thack;                                                }                                                (void)printf("{%u:%u}", s, e);                                        }                                }                                break;                        case TCPOPT_CC:                        case TCPOPT_CCNEW:                        case TCPOPT_CCECHO:                        case TCPOPT_ECHO:                        case TCPOPT_ECHOREPLY:                                /*                                 * those options share their semantics.                                 * fall through                                 */                                datalen = 4;                                LENCHECK(datalen);                                (void)printf(" %u", EXTRACT_32BITS(cp));                                break;                        case TCPOPT_TIMESTAMP:                                datalen = 8;                                LENCHECK(datalen);                                (void)printf(" val %u ecr %u",                                             EXTRACT_32BITS(cp),                                             EXTRACT_32BITS(cp + 4));                                break;                        case TCPOPT_SIGNATURE:                                datalen = TCP_SIGLEN;                                LENCHECK(datalen);#ifdef HAVE_LIBCRYPTO                                switch (tcp_verify_signature(ip, tp,                                                             bp + TH_OFF(tp) * 4, length, cp)) {                                case SIGNATURE_VALID:                                        (void)printf("valid");                                        break;                                case SIGNATURE_INVALID:                                        (void)printf("invalid");                                        break;                                case CANT_CHECK_SIGNATURE:                                        (void)printf("can't check - ");                                        for (i = 0; i < TCP_SIGLEN; ++i)                                                (void)printf("%02x", cp[i]);                                        break;                                }#else                                for (i = 0; i < TCP_SIGLEN; ++i)                                        (void)printf("%02x", cp[i]);#endif                                break;                        case TCPOPT_AUTH:                                (void)printf("keyid %d", *cp++);                                datalen = len - 3;                                for (i = 0; i < datalen; ++i) {                                        LENCHECK(i);                                        (void)printf("%02x", cp[i]);                                }                                break;                        case TCPOPT_EOL:                        case TCPOPT_NOP:                        case TCPOPT_SACKOK:                                /*                                 * Nothing interesting.                                 * fall through                                 */                                break;                        default:                                datalen = len - 2;                                for (i = 0; i < datalen; ++i) {                                        LENCHECK(i);                                        (void)printf("%02x", cp[i]);                                }                                break;                        }                        /* Account for data printed */                        cp += datalen;                        hlen -= datalen;                        /* Check specification against observed length */                        ++datalen;			/* option octet */                        if (!ZEROLENOPT(opt))                                ++datalen;		/* size octet */                        if (datalen != len)                                (void)printf("[len %d]", len);                        ch = ',';                        if (opt == TCPOPT_EOL)                                break;                }                putchar(']');        }        /*         * Print length field before crawling down the stack.         */        printf(", length %u", length);        if (length <= 0)                return;        /*         * Decode payload if necessary.         */        bp += TH_OFF(tp) * 4;        if ((flags & TH_RST) && vflag) {                print_tcp_rst_data(bp, length);                return;        }         if (sport == TELNET_PORT || dport == TELNET_PORT) {                if (!qflag && vflag)                        telnet_print(bp, length);        } else if (sport == BGP_PORT || dport == BGP_PORT)                bgp_print(bp, length);        else if (sport == PPTP_PORT || dport == PPTP_PORT)                pptp_print(bp);#ifdef TCPDUMP_DO_SMB        else if (sport == NETBIOS_SSN_PORT || dport == NETBIOS_SSN_PORT)                nbt_tcp_print(bp, length);	else if (sport == SMB_PORT || dport == SMB_PORT)		smb_tcp_print(bp, length);#endif        else if (sport == BEEP_PORT || dport == BEEP_PORT)                beep_print(bp, length);        else if (length > 2 &&                 (sport == NAMESERVER_PORT || dport == NAMESERVER_PORT ||                  sport == MULTICASTDNS_PORT || dport == MULTICASTDNS_PORT)) {                /*                 * TCP DNS query has 2byte length at the head.                 * XXX packet could be unaligned, it can go strange                 */                ns_print(bp + 2, length - 2, 0);        } else if (sport == MSDP_PORT || dport == MSDP_PORT) {                msdp_print(bp, length);        }        else if (length > 0 && (sport == LDP_PORT || dport == LDP_PORT)) {                ldp_print(bp, length);        }        return; bad:        fputs("[bad opt]", stdout);        if (ch != '\0')                putchar('>');        return; trunc:        fputs("[|tcp]", stdout);        if (ch != '\0')                putchar('>');}/* * RFC1122 says the following on data in RST segments: * *         4.2.2.12  RST Segment: RFC-793 Section 3.4 * *            A TCP SHOULD allow a received RST segment to include data. * *            DISCUSSION *                 It has been suggested that a RST segment could contain *                 ASCII text that encoded and explained the cause of the *                 RST.  No standard has yet been established for such *                 data. * */static voidprint_tcp_rst_data(register const u_char *sp, u_int length){        int c;        if (TTEST2(*sp, length))                printf(" [RST");        else                printf(" [!RST");        if (length > MAX_RST_DATA_LEN) {                length = MAX_RST_DATA_LEN;	/* can use -X for longer */                putchar('+');			/* indicate we truncate */        }        putchar(' ');        while (length-- && sp <= snapend) {                c = *sp++;                safeputchar(c);        }        putchar(']');}#ifdef HAVE_LIBCRYPTOstatic inttcp_verify_signature(const struct ip *ip, const struct tcphdr *tp,                     const u_char *data, int length, const u_char *rcvsig){        struct tcphdr tp1;        u_char sig[TCP_SIGLEN];        char zero_proto = 0;        MD5_CTX ctx;        u_int16_t savecsum, tlen;#ifdef INET6        struct ip6_hdr *ip6;        u_int32_t len32;        u_int8_t nxt;#endif        tp1 = *tp;        if (tcpmd5secret == NULL)                return (CANT_CHECK_SIGNATURE);        MD5_Init(&ctx);        /*         * Step 1: Update MD5 hash with IP pseudo-header.         */        if (IP_V(ip) == 4) {                MD5_Update(&ctx, (char *)&ip->ip_src, sizeof(ip->ip_src));                MD5_Update(&ctx, (char *)&ip->ip_dst, sizeof(ip->ip_dst));                MD5_Update(&ctx, (char *)&zero_proto, sizeof(zero_proto));                MD5_Update(&ctx, (char *)&ip->ip_p, sizeof(ip->ip_p));                tlen = EXTRACT_16BITS(&ip->ip_len) - IP_HL(ip) * 4;                tlen = htons(tlen);                MD5_Update(&ctx, (char *)&tlen, sizeof(tlen));#ifdef INET6        } else if (IP_V(ip) == 6) {                ip6 = (struct ip6_hdr *)ip;                MD5_Update(&ctx, (char *)&ip6->ip6_src, sizeof(ip6->ip6_src));                MD5_Update(&ctx, (char *)&ip6->ip6_dst, sizeof(ip6->ip6_dst));                len32 = htonl(ntohs(ip6->ip6_plen));                MD5_Update(&ctx, (char *)&len32, sizeof(len32));                nxt = 0;                MD5_Update(&ctx, (char *)&nxt, sizeof(nxt));                MD5_Update(&ctx, (char *)&nxt, sizeof(nxt));                MD5_Update(&ctx, (char *)&nxt, sizeof(nxt));                nxt = IPPROTO_TCP;                MD5_Update(&ctx, (char *)&nxt, sizeof(nxt));#endif        } else                return (CANT_CHECK_SIGNATURE);        /*         * Step 2: Update MD5 hash with TCP header, excluding options.         * The TCP checksum must be set to zero.         */        savecsum = tp1.th_sum;        tp1.th_sum = 0;        MD5_Update(&ctx, (char *)&tp1, sizeof(struct tcphdr));        tp1.th_sum = savecsum;        /*         * Step 3: Update MD5 hash with TCP segment data, if present.         */        if (length > 0)                MD5_Update(&ctx, data, length);        /*         * Step 4: Update MD5 hash with shared secret.         */        MD5_Update(&ctx, tcpmd5secret, strlen(tcpmd5secret));        MD5_Final(sig, &ctx);        if (memcmp(rcvsig, sig, TCP_SIGLEN) == 0)                return (SIGNATURE_VALID);        else                return (SIGNATURE_INVALID);}#endif /* HAVE_LIBCRYPTO *//* * Local Variables: * c-style: whitesmith * c-basic-offset: 8 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品另类一区| 九九久久精品视频 | 久久精品水蜜桃av综合天堂| 中文字幕一区三区| 日本aⅴ免费视频一区二区三区| 99久久精品国产导航| 日韩美一区二区三区| 亚洲电影第三页| 国产精品77777| 欧美一区二区精品久久911| 亚洲人成亚洲人成在线观看图片 | 一二三四社区欧美黄| 国产精品一区二区你懂的| 欧美美女黄视频| 亚洲视频网在线直播| 国产成人精品午夜视频免费| 欧美一区二区三区免费视频| 一区二区三区日韩精品| 99麻豆久久久国产精品免费| www国产成人| 日韩成人免费看| 欧美三级中文字| 亚洲女同ⅹxx女同tv| 91香蕉视频污| 国产精品国产自产拍在线| 成人综合激情网| 国产亚洲综合色| 国产aⅴ综合色| 欧美极品少妇xxxxⅹ高跟鞋| 国产成人精品aa毛片| 久久九九99视频| 国产一区二区三区四| 久久久久久久久蜜桃| 国产精品91一区二区| 久久九九久精品国产免费直播| 寂寞少妇一区二区三区| 久久综合国产精品| 黄色小说综合网站| 久久久综合精品| 国产成人超碰人人澡人人澡| 国产欧美视频在线观看| 成人avav影音| 亚洲一区二区四区蜜桃| 欧美精品自拍偷拍动漫精品| 日本亚洲最大的色成网站www| 日韩一二在线观看| 国产精品自拍一区| 国产精品久久久久久一区二区三区| 成人国产在线观看| 亚洲欧洲av在线| 欧美视频在线一区二区三区| 日日欢夜夜爽一区| 欧美成人官网二区| 国产成人99久久亚洲综合精品| 国产精品久久午夜夜伦鲁鲁| 在线观看亚洲a| 老司机免费视频一区二区 | 免费观看30秒视频久久| 国产亚洲人成网站| 色综合欧美在线视频区| 奇米色一区二区三区四区| 精品国产精品一区二区夜夜嗨| 国产激情一区二区三区| 亚洲自拍偷拍网站| 日韩欧美三级在线| 99天天综合性| 偷拍亚洲欧洲综合| 欧美激情一区二区三区在线| 欧美日韩一卡二卡三卡| 国产激情一区二区三区桃花岛亚洲| 亚洲摸摸操操av| 日韩一级视频免费观看在线| 成人app软件下载大全免费| 亚洲福利一区二区三区| 精品动漫一区二区三区在线观看| 成人白浆超碰人人人人| 午夜视频在线观看一区| 中国av一区二区三区| 91精品国产综合久久久久久| av成人动漫在线观看| 久久国产尿小便嘘嘘| 一级精品视频在线观看宜春院| 久久久久久久久久久99999| 欧美日韩一区三区| 99视频精品全部免费在线| 久久av老司机精品网站导航| 亚洲成人资源在线| 国产精品福利影院| 精品国产麻豆免费人成网站| 欧美裸体bbwbbwbbw| 99re热视频精品| 国产乱人伦偷精品视频免下载 | 中文字幕欧美区| 欧美一区二区视频在线观看2020 | 精品一区二区三区欧美| 亚洲动漫第一页| 中文字幕制服丝袜一区二区三区| 精品欧美一区二区三区精品久久| 欧美撒尿777hd撒尿| 99精品在线观看视频| 国产成人av一区二区三区在线 | 26uuu另类欧美亚洲曰本| 日韩av不卡在线观看| 国产精品美女一区二区| 日韩免费福利电影在线观看| 欧美日韩一区二区欧美激情| 91蜜桃免费观看视频| 国产精品自拍一区| 极品尤物av久久免费看| 欧美成人一区二区| 欧美日韩黄色影视| 精品福利一区二区三区| 成人免费在线观看入口| 性欧美疯狂xxxxbbbb| 久热成人在线视频| 成人网页在线观看| 精品婷婷伊人一区三区三| 久久网这里都是精品| 亚洲欧美另类久久久精品| 日韩中文字幕亚洲一区二区va在线 | 悠悠色在线精品| 免费视频最近日韩| 成人精品gif动图一区| 欧美男男青年gay1069videost| 久久久蜜臀国产一区二区| 亚洲综合在线免费观看| 精品系列免费在线观看| 日本韩国一区二区| 久久亚洲一区二区三区明星换脸| 一区二区三区日韩精品| 高清在线不卡av| 91精品国产乱码久久蜜臀| 亚洲欧美日韩久久| 国产乱子伦一区二区三区国色天香| 精品视频在线免费看| 国产精品美女久久久久久久网站| 美女任你摸久久| 在线亚洲一区二区| 国产精品国产精品国产专区不片| 麻豆91小视频| 欧美视频你懂的| 亚洲欧美中日韩| 国产一区二区在线电影| 日韩亚洲欧美中文三级| 亚洲综合激情另类小说区| kk眼镜猥琐国模调教系列一区二区| 欧美一区二区视频在线观看2022| 亚洲亚洲精品在线观看| 91美女片黄在线观看| 国产精品色婷婷久久58| 激情综合一区二区三区| 欧美一区二区三区喷汁尤物| 一区二区欧美在线观看| 97精品国产露脸对白| 国产精品久久毛片a| 国产一区中文字幕| 日韩免费电影网站| 免费在线观看视频一区| 7799精品视频| 亚洲第一综合色| 色婷婷久久久综合中文字幕| 亚洲视频一区二区在线| 不卡视频一二三四| 中文字幕av不卡| 成人福利电影精品一区二区在线观看 | 亚洲制服丝袜一区| 91亚洲精品久久久蜜桃| 国产精品欧美经典| 不卡视频一二三四| 亚洲欧洲av另类| 91天堂素人约啪| 亚洲免费观看高清完整版在线观看| 97久久精品人人爽人人爽蜜臀| 国产精品国产三级国产aⅴ中文 | 国产在线日韩欧美| 久久久亚洲精品石原莉奈| 国产一区二区视频在线播放| 久久精品人人做人人爽97| 丁香五精品蜜臀久久久久99网站| 日本一区二区成人| 成人激情黄色小说| 亚洲精品国产第一综合99久久| 欧美日韩一卡二卡三卡 | 欧美成人在线直播| 国产精品一品视频| 国产精品麻豆99久久久久久| 99精品欧美一区二区蜜桃免费 | 中国色在线观看另类| 91在线无精精品入口| 性欧美疯狂xxxxbbbb| 精品久久久久av影院| 丁香另类激情小说| 亚洲欧美另类综合偷拍| 91精品国产91综合久久蜜臀| 国产精品系列在线观看| 一区二区理论电影在线观看| 欧美一区永久视频免费观看| 国产 日韩 欧美大片| 香港成人在线视频| 久久理论电影网|