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

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

?? smbutil.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * Copyright (C) Andrew Tridgell 1995-1999 * * This software may be distributed either under the terms of the * BSD-style license that accompanies tcpdump or the GNU GPL version 2 * or later */#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifndef lintstatic const char rcsid[] _U_ =     "@(#) $Header: /tcpdump/master/tcpdump/smbutil.c,v 1.39 2007-07-15 19:07:39 guy Exp $";#endif#include <tcpdump-stdinc.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "interface.h"#include "extract.h"#include "smb.h"static u_int32_t stringlen;extern const u_char *startbuf;/* * interpret a 32 bit dos packed date/time to some parameters */static voidinterpret_dos_date(u_int32_t date, struct tm *tp){    u_int32_t p0, p1, p2, p3;    p0 = date & 0xFF;    p1 = ((date & 0xFF00) >> 8) & 0xFF;    p2 = ((date & 0xFF0000) >> 16) & 0xFF;    p3 = ((date & 0xFF000000) >> 24) & 0xFF;    tp->tm_sec = 2 * (p0 & 0x1F);    tp->tm_min = ((p0 >> 5) & 0xFF) + ((p1 & 0x7) << 3);    tp->tm_hour = (p1 >> 3) & 0xFF;    tp->tm_mday = (p2 & 0x1F);    tp->tm_mon = ((p2 >> 5) & 0xFF) + ((p3 & 0x1) << 3) - 1;    tp->tm_year = ((p3 >> 1) & 0xFF) + 80;}/* * common portion: * create a unix date from a dos date */static time_tint_unix_date(u_int32_t dos_date){    struct tm t;    if (dos_date == 0)	return(0);    interpret_dos_date(dos_date, &t);    t.tm_wday = 1;    t.tm_yday = 1;    t.tm_isdst = 0;    return (mktime(&t));}/* * create a unix date from a dos date * in network byte order */static time_tmake_unix_date(const u_char *date_ptr){    u_int32_t dos_date = 0;    dos_date = EXTRACT_LE_32BITS(date_ptr);    return int_unix_date(dos_date);}/* * create a unix date from a dos date * in halfword-swapped network byte order! */static time_tmake_unix_date2(const u_char *date_ptr){    u_int32_t x, x2;    x = EXTRACT_LE_32BITS(date_ptr);    x2 = ((x & 0xFFFF) << 16) | ((x & 0xFFFF0000) >> 16);    return int_unix_date(x2);}/* * interpret an 8 byte "filetime" structure to a time_t * It's originally in "100ns units since jan 1st 1601" */static time_tinterpret_long_date(const u_char *p){    double d;    time_t ret;    /* this gives us seconds since jan 1st 1601 (approx) */    d = (EXTRACT_LE_32BITS(p + 4) * 256.0 + p[3]) * (1.0e-7 * (1 << 24));    /* now adjust by 369 years to make the secs since 1970 */    d -= 369.0 * 365.25 * 24 * 60 * 60;    /* and a fudge factor as we got it wrong by a few days */    d += (3 * 24 * 60 * 60 + 6 * 60 * 60 + 2);    if (d < 0)	return(0);    ret = (time_t)d;    return(ret);}/* * interpret the weird netbios "name". Return the name type, or -1 if * we run past the end of the buffer */static intname_interpret(const u_char *in, const u_char *maxbuf, char *out){    int ret;    int len;    if (in >= maxbuf)	return(-1);	/* name goes past the end of the buffer */    TCHECK2(*in, 1);    len = (*in++) / 2;    *out=0;    if (len > 30 || len < 1)	return(0);    while (len--) {	TCHECK2(*in, 2);	if (in + 1 >= maxbuf)	    return(-1);	/* name goes past the end of the buffer */	if (in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P') {	    *out = 0;	    return(0);	}	*out = ((in[0] - 'A') << 4) + (in[1] - 'A');	in += 2;	out++;    }    *out = 0;    ret = out[-1];    return(ret);trunc:    return(-1);}/* * find a pointer to a netbios name */static const u_char *name_ptr(const u_char *buf, int ofs, const u_char *maxbuf){    const u_char *p;    u_char c;    p = buf + ofs;    if (p >= maxbuf)	return(NULL);	/* name goes past the end of the buffer */    TCHECK2(*p, 1);    c = *p;    /* XXX - this should use the same code that the DNS dissector does */    if ((c & 0xC0) == 0xC0) {	u_int16_t l;	TCHECK2(*p, 2);	if ((p + 1) >= maxbuf)	    return(NULL);	/* name goes past the end of the buffer */	l = EXTRACT_16BITS(p) & 0x3FFF;	if (l == 0) {	    /* We have a pointer that points to itself. */	    return(NULL);	}	p = buf + l;	if (p >= maxbuf)	    return(NULL);	/* name goes past the end of the buffer */	TCHECK2(*p, 1);    }    return(p);trunc:    return(NULL);	/* name goes past the end of the buffer */}/* * extract a netbios name from a buf */static intname_extract(const u_char *buf, int ofs, const u_char *maxbuf, char *name){    const u_char *p = name_ptr(buf, ofs, maxbuf);    if (p == NULL)	return(-1);	/* error (probably name going past end of buffer) */    name[0] = '\0';    return(name_interpret(p, maxbuf, name));}/* * return the total storage length of a mangled name */static intname_len(const unsigned char *s, const unsigned char *maxbuf){    const unsigned char *s0 = s;    unsigned char c;    if (s >= maxbuf)	return(-1);	/* name goes past the end of the buffer */    TCHECK2(*s, 1);    c = *s;    if ((c & 0xC0) == 0xC0)	return(2);    while (*s) {	if (s >= maxbuf)	    return(-1);	/* name goes past the end of the buffer */	TCHECK2(*s, 1);	s += (*s) + 1;    }    return(PTR_DIFF(s, s0) + 1);trunc:    return(-1);	/* name goes past the end of the buffer */}static voidprint_asc(const unsigned char *buf, int len){    int i;    for (i = 0; i < len; i++)	safeputchar(buf[i]);}static const char *name_type_str(int name_type){    const char *f = NULL;    switch (name_type) {    case 0:    f = "Workstation"; break;    case 0x03: f = "Client?"; break;    case 0x20: f = "Server"; break;    case 0x1d: f = "Master Browser"; break;    case 0x1b: f = "Domain Controller"; break;    case 0x1e: f = "Browser Server"; break;    default:   f = "Unknown"; break;    }    return(f);}voidprint_data(const unsigned char *buf, int len){    int i = 0;    if (len <= 0)	return;    printf("[%03X] ", i);    for (i = 0; i < len; /*nothing*/) {        TCHECK(buf[i]);	printf("%02X ", buf[i] & 0xff);	i++;	if (i%8 == 0)	    printf(" ");	if (i % 16 == 0) {	    print_asc(&buf[i - 16], 8);	    printf(" ");	    print_asc(&buf[i - 8], 8);	    printf("\n");	    if (i < len)		printf("[%03X] ", i);	}    }    if (i % 16) {	int n;	n = 16 - (i % 16);	printf(" ");	if (n>8)	    printf(" ");	while (n--)	    printf("   ");	n = SMBMIN(8, i % 16);	print_asc(&buf[i - (i % 16)], n);	printf(" ");	n = (i % 16) - n;	if (n > 0)	    print_asc(&buf[i - n], n);	printf("\n");    }    return;trunc:    printf("\n");    printf("WARNING: Short packet. Try increasing the snap length\n");}static voidwrite_bits(unsigned int val, const char *fmt){    const char *p = fmt;    int i = 0;    while ((p = strchr(fmt, '|'))) {	size_t l = PTR_DIFF(p, fmt);	if (l && (val & (1 << i)))	    printf("%.*s ", (int)l, fmt);	fmt = p + 1;	i++;    }}/* convert a UCS2 string into iso-8859-1 string */#define MAX_UNISTR_SIZE	1000static const char *unistr(const u_char *s, u_int32_t *len, int use_unicode){    static char buf[MAX_UNISTR_SIZE+1];    size_t l = 0;    u_int32_t strsize;    const u_char *sp;    if (use_unicode) {	/*	 * Skip padding that puts the string on an even boundary.	 */	if (((s - startbuf) % 2) != 0) {	    TCHECK(s[0]);	    s++;	}    }    if (*len == 0) {	/*	 * Null-terminated string.	 */	strsize = 0;	sp = s;	if (!use_unicode) {	    for (;;) {		TCHECK(sp[0]);		*len += 1;		if (sp[0] == 0)		    break;		sp++;	    }	    strsize = *len - 1;	} else {	    for (;;) {		TCHECK2(sp[0], 2);		*len += 2;		if (sp[0] == 0 && sp[1] == 0)		    break;		sp += 2;	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区日韩av| 中文字幕乱码久久午夜不卡| 成人a级免费电影| 国产一区在线观看视频| 精品一区二区三区视频在线观看| 日韩高清电影一区| 日韩福利电影在线观看| 老司机午夜精品99久久| 韩国毛片一区二区三区| 国产经典欧美精品| 成人黄色网址在线观看| 97国产精品videossex| eeuss鲁片一区二区三区 | 国产视频一区不卡| 久久久电影一区二区三区| 国产亚洲欧美激情| 亚洲欧洲精品一区二区三区不卡| **欧美大码日韩| 亚洲国产中文字幕在线视频综合 | 久久综合中文字幕| 久久众筹精品私拍模特| 国产精品国产三级国产专播品爱网 | 欧美成人高清电影在线| 久久影院视频免费| 中文字幕欧美一区| 日韩国产欧美三级| 国产伦精品一区二区三区免费迷 | 欧美色图免费看| 日韩三级伦理片妻子的秘密按摩| 久久综合色8888| 中文字幕一区二区三区乱码在线| 亚洲精品国产视频| 久久精品国产亚洲5555| 91在线国产观看| 日韩一区二区三区在线视频| 国产精品乱子久久久久| 午夜电影久久久| 成人美女在线观看| 欧美一区二区三区免费观看视频| 久久久精品免费网站| 亚洲成人在线免费| 成人午夜精品在线| 日韩欧美综合在线| 亚洲精品午夜久久久| 国产精品影音先锋| 欧美精品在线观看一区二区| 国产精品久久久久久亚洲毛片| 日韩制服丝袜av| 色婷婷国产精品久久包臀 | 91片在线免费观看| 久久网这里都是精品| 亚洲.国产.中文慕字在线| 国产大陆亚洲精品国产| 日韩一级免费观看| 亚洲精品水蜜桃| proumb性欧美在线观看| 精品国产凹凸成av人导航| 亚洲成av人片在www色猫咪| 成人97人人超碰人人99| 久久亚洲精品国产精品紫薇| 日本色综合中文字幕| 在线一区二区三区四区五区| 中文字幕免费不卡| 国产成人免费在线视频| 精品国精品国产尤物美女| 午夜一区二区三区视频| 欧美性受xxxx黑人xyx性爽| 中文字幕一区二区三区四区不卡 | 精品剧情v国产在线观看在线| 亚洲国产中文字幕在线视频综合| 成人爱爱电影网址| 亚洲欧洲日韩一区二区三区| 成人午夜视频在线| 国产精品久久久久桃色tv| 成人精品国产福利| 国产精品无圣光一区二区| 成人黄动漫网站免费app| 中文字幕一区免费在线观看| 成人伦理片在线| 国产精品久久久久久亚洲毛片 | 7777精品伊人久久久大香线蕉的 | 国产亚洲欧美中文| 丁香五精品蜜臀久久久久99网站 | 在线精品视频免费播放| 亚洲综合免费观看高清在线观看| 在线国产电影不卡| 图片区日韩欧美亚洲| 欧美一区二区网站| 国产一区视频在线看| 亚洲国产精品成人综合| 99热这里都是精品| 亚洲五月六月丁香激情| 欧美一区二区三区小说| 国产一区二区日韩精品| 中文字幕乱码一区二区免费| 日本精品一区二区三区四区的功能| 午夜精品一区二区三区三上悠亚| 欧美一区二区精美| 国产不卡一区视频| 亚洲一区在线观看网站| 日韩免费电影网站| 99久久精品国产观看| 亚洲午夜在线观看视频在线| 日韩一区二区麻豆国产| 成人美女视频在线观看| 五月天欧美精品| 久久久久久一级片| 欧美性感一区二区三区| 国产伦精品一区二区三区视频青涩| 综合网在线视频| 日韩午夜在线观看| 99热99精品| 久久电影网站中文字幕 | 欧美猛男gaygay网站| 国产精品一色哟哟哟| 亚洲高清在线视频| 日本一区二区免费在线观看视频| 色妹子一区二区| 精品午夜久久福利影院| 一区二区三区波多野结衣在线观看| 日韩女优视频免费观看| 91国产精品成人| 成人性生交大片免费看在线播放 | 亚洲va韩国va欧美va精品| 久久久噜噜噜久噜久久综合| 欧美日韩免费一区二区三区视频| 国产91精品精华液一区二区三区| 午夜久久久久久电影| 亚洲精品综合在线| 国产精品拍天天在线| 精品久久久久久亚洲综合网| 欧美亚洲综合色| 91小视频免费观看| 国产黄色精品网站| 久久超碰97中文字幕| 天天射综合影视| 亚洲一二三四在线| 亚洲天堂av一区| 成人欧美一区二区三区在线播放| 久久精品夜色噜噜亚洲a∨| 欧美一级二级三级乱码| 欧美揉bbbbb揉bbbbb| 99精品桃花视频在线观看| 懂色av一区二区三区免费看| 久久99久久99精品免视看婷婷| 日韩高清不卡在线| 日韩电影在线免费看| 日韩黄色一级片| 青青草国产精品97视觉盛宴| 日韩精品高清不卡| 亚洲成av人片观看| 日韩av在线免费观看不卡| 青青草成人在线观看| 人人爽香蕉精品| 久草中文综合在线| 国产毛片精品一区| 成人精品gif动图一区| 99精品黄色片免费大全| 成人av免费网站| 91丨porny丨户外露出| 91美女视频网站| 欧美午夜电影一区| 欧美日韩黄视频| 日韩欧美国产精品| 久久综合久久综合九色| 国产精品久久精品日日| 亚洲精品中文在线| 日日夜夜免费精品| 精品一区二区三区在线视频| 国产成人综合自拍| 99精品欧美一区| 69堂成人精品免费视频| xfplay精品久久| 亚洲天堂网中文字| 日韩精品一区第一页| 韩国精品在线观看| 99re热视频精品| 欧美日韩夫妻久久| 久久精品日产第一区二区三区高清版 | 麻豆精品在线看| 国产麻豆91精品| 在线观看成人小视频| 91精品婷婷国产综合久久性色| 精品久久久久久久久久久久久久久久久 | 日韩欧美色电影| 国产精品少妇自拍| 婷婷国产v国产偷v亚洲高清| 国产一区二区福利视频| 日本丰满少妇一区二区三区| 日韩美女主播在线视频一区二区三区| 久久精品视频一区二区三区| 伊人开心综合网| 久久99热这里只有精品| 色国产精品一区在线观看| 欧美电影免费观看完整版| 亚洲日韩欧美一区二区在线| 全国精品久久少妇| 在线免费观看日韩欧美| 国产精品少妇自拍| 韩国av一区二区三区在线观看|