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

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

?? smblib-util.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* UNIX SMBlib NetBIOS implementation *  * Version 1.0 * SMBlib Utility Routines *  * Copyright (C) Richard Sharpe 1996 *  *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. *  * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "smblib-priv.h"#include <string.h>#include "rfcnb.h"/* global data structures */static int SMB_Types[] ={SMB_P_Core,    SMB_P_CorePlus,    SMB_P_DOSLanMan1,    SMB_P_DOSLanMan1,    SMB_P_LanMan1,    SMB_P_DOSLanMan2,    SMB_P_LanMan2,    SMB_P_LanMan2_1,    SMB_P_LanMan2_1,    SMB_P_NT1,    SMB_P_NT1,    SMB_P_NT1,    -1};static char *SMB_Prots[] ={"PC NETWORK PROGRAM 1.0",    "MICROSOFT NETWORKS 1.03",    "MICROSOFT NETWORKS 3.0",    "DOS LANMAN1.0",    "LANMAN1.0",    "DOS LM1.2X002",    "LM1.2X002",    "DOS LANMAN2.1",    "LANMAN2.1",    "Samba",    "NT LM 0.12",    "NT LANMAN 1.0",    NULL};/* Print out an SMB pkt in all its gory detail ... */voidSMB_Print_Pkt(FILE fd, RFCNB_Pkt * pkt, BOOL command, int Offset, int Len){    /* Well, just how do we do this ... print it I suppose */    /* Print out the SMB header ...                        */    /* Print the command                                   */    /* Print the other bits in the header                  */    /* etc                                                 */}/* Convert a DOS Date_Time to a local host type date time for printing */char *SMB_DOSTimToStr(int DOS_time){    static char SMB_Time_Temp[48];    int DOS_sec, DOS_min, DOS_hour, DOS_day, DOS_month, DOS_year;    SMB_Time_Temp[0] = 0;    DOS_sec = (DOS_time & 0x001F) * 2;    DOS_min = (DOS_time & 0x07E0) >> 5;    DOS_hour = ((DOS_time & 0xF800) >> 11);    DOS_day = (DOS_time & 0x001F0000) >> 16;    DOS_month = (DOS_time & 0x01E00000) >> 21;    DOS_year = ((DOS_time & 0xFE000000) >> 25) + 80;    sprintf(SMB_Time_Temp, "%2d/%02d/%2d %2d:%02d:%02d", DOS_day, DOS_month,	DOS_year, DOS_hour, DOS_min, DOS_sec);    return (SMB_Time_Temp);}/* Convert an attribute byte/word etc to a string ... We return a pointer * to a static string which we guarantee is long enough. If verbose is  * true, we print out long form of strings ...                            */char *SMB_AtrToStr(int attribs, BOOL verbose){    static char SMB_Attrib_Temp[128];    SMB_Attrib_Temp[0] = 0;    if (attribs & SMB_FA_ROF)	strcat(SMB_Attrib_Temp, (verbose ? "Read Only " : "R"));    if (attribs & SMB_FA_HID)	strcat(SMB_Attrib_Temp, (verbose ? "Hidden " : "H"));    if (attribs & SMB_FA_SYS)	strcat(SMB_Attrib_Temp, (verbose ? "System " : "S"));    if (attribs & SMB_FA_VOL)	strcat(SMB_Attrib_Temp, (verbose ? "Volume " : "V"));    if (attribs & SMB_FA_DIR)	strcat(SMB_Attrib_Temp, (verbose ? "Directory " : "D"));    if (attribs & SMB_FA_ARC)	strcat(SMB_Attrib_Temp, (verbose ? "Archive " : "A"));    return (SMB_Attrib_Temp);}/* Pick up the Max Buffer Size from the Tree Structure ... */intSMB_Get_Tree_MBS(SMB_Tree_Handle tree){    if (tree != NULL) {	return (tree->mbs);    } else {	return (SMBlibE_BAD);    }}/* Pick up the Max buffer size */intSMB_Get_Max_Buf_Siz(SMB_Handle_Type Con_Handle){    if (Con_Handle != NULL) {	return (Con_Handle->max_xmit);    } else {	return (SMBlibE_BAD);    }}/* Pickup the protocol index from the connection structure                 */intSMB_Get_Protocol_IDX(SMB_Handle_Type Con_Handle){    if (Con_Handle != NULL) {	return (Con_Handle->prot_IDX);    } else {	return (0xFFFF);	/* Invalid protocol */    }}/* Pick up the protocol from the connection structure                       */intSMB_Get_Protocol(SMB_Handle_Type Con_Handle){    if (Con_Handle != NULL) {	return (Con_Handle->protocol);    } else {	return (0xFFFF);	/* Invalid protocol */    }}/* Figure out what protocol was accepted, given the list of dialect strings *//* We offered, and the index back from the server. We allow for a user      *//* supplied list, and assume that it is a subset of our list                */intSMB_Figure_Protocol(char *dialects[], int prot_index){    int i;    if (dialects == SMB_Prots) {	/* The jobs is easy, just index into table */	return (SMB_Types[prot_index]);    } else {			/* Search through SMB_Prots looking for a match */	for (i = 0; SMB_Prots[i] != NULL; i++) {	    if (strcmp(dialects[prot_index], SMB_Prots[i]) == 0) {	/* A match */		return (SMB_Types[i]);	    }	}	/* If we got here, then we are in trouble, because the protocol was not */	/* One we understand ...                                                */	return (SMB_P_Unknown);    }}/* Negotiate the protocol we will use from the list passed in Prots       *//* we return the index of the accepted protocol in NegProt, -1 indicates  *//* none acceptible, and our return value is 0 if ok, <0 if problems       */intSMB_Negotiate(SMB_Handle_Type Con_Handle, char *Prots[]){    struct RFCNB_Pkt *pkt;    int prots_len, i, pkt_len, prot, alloc_len;    char *p;    /* Figure out how long the prot list will be and allocate space for it */    prots_len = 0;    for (i = 0; Prots[i] != NULL; i++) {	prots_len = prots_len + strlen(Prots[i]) + 2;	/* Account for null etc */    }    /* The -1 accounts for the one byte smb_buf we have because some systems */    /* don't like char msg_buf[]                                             */    pkt_len = SMB_negp_len + prots_len;    /* Make sure that the pkt len is long enough for the max response ...   */    /* Which is a problem, because the encryption key len eec may be long   */    if (pkt_len < (SMB_hdr_wct_offset + (19 * 2) + 40)) {	alloc_len = SMB_hdr_wct_offset + (19 * 2) + 40;    } else {	alloc_len = pkt_len;    }    pkt = (struct RFCNB_Pkt *) RFCNB_Alloc_Pkt(alloc_len);    if (pkt == NULL) {	SMBlib_errno = SMBlibE_NoSpace;	return (SMBlibE_BAD);    }    /* Now plug in the bits we need */    memset(SMB_Hdr(pkt), 0, SMB_negp_len);    SIVAL(SMB_Hdr(pkt), SMB_hdr_idf_offset, SMB_DEF_IDF);	/* Plunk in IDF */    *(SMB_Hdr(pkt) + SMB_hdr_com_offset) = SMBnegprot;    SSVAL(SMB_Hdr(pkt), SMB_hdr_pid_offset, Con_Handle->pid);    SSVAL(SMB_Hdr(pkt), SMB_hdr_tid_offset, 0);    SSVAL(SMB_Hdr(pkt), SMB_hdr_mid_offset, Con_Handle->mid);    SSVAL(SMB_Hdr(pkt), SMB_hdr_uid_offset, Con_Handle->uid);    *(SMB_Hdr(pkt) + SMB_hdr_wct_offset) = 0;    SSVAL(SMB_Hdr(pkt), SMB_negp_bcc_offset, prots_len);    /* Now copy the prot strings in with the right stuff */    p = (char *) (SMB_Hdr(pkt) + SMB_negp_buf_offset);    for (i = 0; Prots[i] != NULL; i++) {	*p = SMBdialectID;	strcpy(p + 1, Prots[i]);	p = p + strlen(Prots[i]) + 2;	/* Adjust len of p for null plus dialectID */    }    /* Now send the packet and sit back ... */    if (RFCNB_Send(Con_Handle->Trans_Connect, pkt, pkt_len) < 0) {#ifdef DEBUG	fprintf(stderr, "Error sending negotiate protocol\n");#endif	RFCNB_Free_Pkt(pkt);	SMBlib_errno = -SMBlibE_SendFailed;	/* Failed, check lower layer errno */	return (SMBlibE_BAD);    }    /* Now get the response ... */    if (RFCNB_Recv(Con_Handle->Trans_Connect, pkt, alloc_len) < 0) {#ifdef DEBUG	fprintf(stderr, "Error receiving response to negotiate\n");#endif	RFCNB_Free_Pkt(pkt);	SMBlib_errno = -SMBlibE_RecvFailed;	/* Failed, check lower layer errno */	return (SMBlibE_BAD);    }    if (CVAL(SMB_Hdr(pkt), SMB_hdr_rcls_offset) != SMBC_SUCCESS) {	/* Process error */#ifdef DEBUG	fprintf(stderr, "SMB_Negotiate failed with errorclass = %i, Error Code = %i\n",	    CVAL(SMB_Hdr(pkt), SMB_hdr_rcls_offset),	    SVAL(SMB_Hdr(pkt), SMB_hdr_err_offset));#endif	SMBlib_SMB_Error = IVAL(SMB_Hdr(pkt), SMB_hdr_rcls_offset);	RFCNB_Free_Pkt(pkt);	SMBlib_errno = SMBlibE_Remote;	return (SMBlibE_BAD);    }    if (SVAL(SMB_Hdr(pkt), SMB_negrCP_idx_offset) == 0xFFFF) {#ifdef DEBUG	fprintf(stderr, "None of our protocols was accepted ... ");#endif	RFCNB_Free_Pkt(pkt);	SMBlib_errno = SMBlibE_NegNoProt;	return (SMBlibE_BAD);    }    /* Now, unpack the info from the response, if any and evaluate the proto */    /* selected. We must make sure it is one we like ...                     */    Con_Handle->prot_IDX = prot = SVAL(SMB_Hdr(pkt), SMB_negrCP_idx_offset);    Con_Handle->protocol = SMB_Figure_Protocol(Prots, prot);    if (Con_Handle->protocol == SMB_P_Unknown) {	/* No good ... */	RFCNB_Free_Pkt(pkt);	SMBlib_errno = SMBlibE_ProtUnknown;	return (SMBlibE_BAD);    }    switch (CVAL(SMB_Hdr(pkt), SMB_hdr_wct_offset)) {    case 0x01:			/* No more info ... */	break;    case 13:			/* Up to and including LanMan 2.1 */	Con_Handle->Security = SVAL(SMB_Hdr(pkt), SMB_negrLM_sec_offset);	Con_Handle->encrypt_passwords = ((Con_Handle->Security & SMB_sec_encrypt_mask) != 0x00);	Con_Handle->Security = Con_Handle->Security & SMB_sec_user_mask;	Con_Handle->max_xmit = SVAL(SMB_Hdr(pkt), SMB_negrLM_mbs_offset);	Con_Handle->MaxMPX = SVAL(SMB_Hdr(pkt), SMB_negrLM_mmc_offset);	Con_Handle->MaxVC = SVAL(SMB_Hdr(pkt), SMB_negrLM_mnv_offset);	Con_Handle->Raw_Support = SVAL(SMB_Hdr(pkt), SMB_negrLM_rm_offset);	Con_Handle->SessionKey = IVAL(SMB_Hdr(pkt), SMB_negrLM_sk_offset);	Con_Handle->SvrTZ = SVAL(SMB_Hdr(pkt), SMB_negrLM_stz_offset);	Con_Handle->Encrypt_Key_Len = SVAL(SMB_Hdr(pkt), SMB_negrLM_ekl_offset);	p = (SMB_Hdr(pkt) + SMB_negrLM_buf_offset);	fprintf(stderr, "%8s", (char *) (SMB_Hdr(pkt) + SMB_negrLM_buf_offset));	memcpy(Con_Handle->Encrypt_Key, p, 8);	p = (SMB_Hdr(pkt) + SMB_negrLM_buf_offset + Con_Handle->Encrypt_Key_Len);	strncpy(p, Con_Handle->Svr_PDom, sizeof(Con_Handle->Svr_PDom) - 1);	break;    case 17:			/* NT LM 0.12 and LN LM 1.0 */	Con_Handle->Security = SVAL(SMB_Hdr(pkt), SMB_negrNTLM_sec_offset);	Con_Handle->encrypt_passwords = ((Con_Handle->Security & SMB_sec_encrypt_mask) != 0x00);	Con_Handle->Security = Con_Handle->Security & SMB_sec_user_mask;	Con_Handle->max_xmit = IVAL(SMB_Hdr(pkt), SMB_negrNTLM_mbs_offset);	Con_Handle->MaxMPX = SVAL(SMB_Hdr(pkt), SMB_negrNTLM_mmc_offset);	Con_Handle->MaxVC = SVAL(SMB_Hdr(pkt), SMB_negrNTLM_mnv_offset);	Con_Handle->MaxRaw = IVAL(SMB_Hdr(pkt), SMB_negrNTLM_mrs_offset);	Con_Handle->SessionKey = IVAL(SMB_Hdr(pkt), SMB_negrNTLM_sk_offset);	Con_Handle->SvrTZ = SVAL(SMB_Hdr(pkt), SMB_negrNTLM_stz_offset);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线啊v一区| 日本一区二区综合亚洲| 北岛玲一区二区三区四区| 五月婷婷综合激情| 精品电影一区二区| 欧美日韩国产不卡| 欧美在线你懂得| 欧美日韩高清一区二区| 在线观看亚洲成人| 欧美日韩在线播| 日韩一区二区免费高清| 日韩一区二区高清| 欧美不卡激情三级在线观看| 欧美电影在哪看比较好| 日韩欧美中文字幕一区| 2023国产一二三区日本精品2022| 国产日韩av一区| 亚洲男人的天堂av| 日韩在线观看一区二区| 激情图区综合网| 成人动漫一区二区在线| 色哟哟欧美精品| 日韩一区二区精品在线观看| 久久久久久久久99精品| 国产精品毛片高清在线完整版| 亚洲欧美日本在线| 日韩综合一区二区| 国产成人av在线影院| 色综合天天综合网天天狠天天| 成人国产在线观看| 欧美精品xxxxbbbb| 国产人妖乱国产精品人妖| 亚洲狠狠丁香婷婷综合久久久| 视频一区二区中文字幕| 国产黑丝在线一区二区三区| 91精品1区2区| 国产亚洲美州欧州综合国| 亚洲精品国产a| 国产一区二区三区不卡在线观看 | 欧美性猛交xxxx黑人交| 欧美一二三四区在线| 91丝袜美腿高跟国产极品老师| 色婷婷一区二区| 精品久久久久久最新网址| 国产精品久久久久一区二区三区| 亚洲午夜影视影院在线观看| 国产精品一区二区久久精品爱涩| 99久久婷婷国产综合精品电影| 欧美日韩一区不卡| 国产精品久久99| 国产一区在线观看麻豆| 欧美色图天堂网| 国产精品欧美久久久久一区二区| 视频一区欧美日韩| 91九色02白丝porn| 欧美极品少妇xxxxⅹ高跟鞋 | 日韩中文字幕区一区有砖一区| 秋霞av亚洲一区二区三| 94色蜜桃网一区二区三区| 欧美一区二区三区在线视频| 中文字幕va一区二区三区| 久国产精品韩国三级视频| 欧美私模裸体表演在线观看| 国产精品传媒入口麻豆| 国产99久久久精品| 久久影院视频免费| 六月丁香婷婷色狠狠久久| 欧美午夜精品一区二区蜜桃| 国产日韩av一区| 九九国产精品视频| 日韩一区二区三区精品视频| 亚洲国产精品人人做人人爽| 91色九色蝌蚪| 亚洲免费av高清| 91免费观看在线| 亚洲男人天堂av| 色婷婷综合激情| 在线免费观看日本欧美| 国产精品一区一区| 日韩午夜中文字幕| 视频一区国产视频| 在线成人高清不卡| 日本成人在线网站| 91精品国产综合久久久蜜臀粉嫩 | 在线观看区一区二| 亚洲女同ⅹxx女同tv| a级高清视频欧美日韩| 日本一区二区三区高清不卡 | 国产日韩亚洲欧美综合| 国产盗摄女厕一区二区三区| 亚洲国产电影在线观看| 成人a区在线观看| 亚洲免费观看高清完整版在线观看熊| 7777女厕盗摄久久久| 欧美久久久久久久久久| 一区二区三区成人在线视频| 国产精品一区在线| 中文字幕在线观看不卡| 日本乱人伦aⅴ精品| 一区二区三区**美女毛片| 欧美日韩你懂得| 久久成人免费网站| 亚洲欧美自拍偷拍| 欧美日免费三级在线| 国产一区二区女| 亚洲国产高清aⅴ视频| 91麻豆精品国产自产在线| 三级精品在线观看| 日韩欧美不卡一区| 紧缚奴在线一区二区三区| 国产欧美1区2区3区| 欧美伊人精品成人久久综合97| 天堂av在线一区| 欧美国产精品中文字幕| 欧美日韩一二三| 国产成人综合在线| 国产精品久久影院| 亚洲视频你懂的| 成人一区二区三区中文字幕| 久久久不卡网国产精品二区| 色视频成人在线观看免| 亚洲18女电影在线观看| 国产午夜三级一区二区三| 成人av免费网站| 日韩二区三区四区| 国产精品免费看片| 欧美日韩精品一区二区三区蜜桃 | 国产精品一卡二卡| 亚洲综合网站在线观看| 2017欧美狠狠色| 欧美精品xxxxbbbb| 色天使色偷偷av一区二区| 国产精品亚洲一区二区三区在线| 亚洲国产婷婷综合在线精品| 国产午夜精品一区二区三区嫩草 | 欧美一区二区久久| 91浏览器入口在线观看| 国产精品1区2区| 青青草原综合久久大伊人精品优势| 日韩一区欧美一区| xf在线a精品一区二区视频网站| 欧美午夜在线观看| 在线观看av不卡| 91同城在线观看| av在线一区二区| 不卡av电影在线播放| 国产福利91精品| 国产真实乱偷精品视频免| 免费人成黄页网站在线一区二区| 一区二区三区精品在线观看| 亚洲欧美日韩国产手机在线| 国产精品三级视频| 久久久精品影视| 久久伊人蜜桃av一区二区| 日韩免费高清视频| 日韩美一区二区三区| 51精品久久久久久久蜜臀| 欧美三级日韩三级国产三级| 色综合久久88色综合天天6| 成人av在线资源网站| 91偷拍与自偷拍精品| 91久久国产最好的精华液| 91麻豆精品秘密| 日本精品一区二区三区四区的功能| 色94色欧美sute亚洲线路二| 欧美午夜不卡在线观看免费| 欧美日韩一区不卡| 欧美色偷偷大香| 日韩一区二区三区四区五区六区| 欧美不卡激情三级在线观看| 国产日本亚洲高清| 亚洲同性gay激情无套| 亚洲乱码国产乱码精品精可以看| 亚洲欧美日韩国产综合在线| 亚洲电影激情视频网站| 麻豆成人免费电影| 国产一区二区免费看| 91小视频免费看| 欧美日韩你懂得| 久久久亚洲高清| 亚洲黄色片在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品正在播放| 91麻豆福利精品推荐| 欧美一区二区网站| 欧美韩日一区二区三区| 亚洲二区在线观看| 国产又粗又猛又爽又黄91精品| 99久久久免费精品国产一区二区| 欧美伊人久久久久久久久影院| 欧美成人猛片aaaaaaa| 国产精品久久久久影院亚瑟| 亚洲va在线va天堂| 成人av影院在线| 欧美一区二区女人| 日韩一区欧美小说| 麻豆精品视频在线观看| 91麻豆国产在线观看| 欧美一级国产精品| 亚洲视频一区二区在线观看|