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

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

?? ntlm_auth.c

?? 代理服務器 squid-2.6.STABLE16
?? C
字號:
/* * mswin_ntlm_auth: helper for NTLM Authentication for Squid Cache * * (C)2002,2003 Guido Serassio - Acme Consulting S.r.l. * * Authors: *  Guido Serassio <guido.serassio@acmeconsulting.it> *  Acme Consulting S.r.l., Italy <http://www.acmeconsulting.it> * * With contributions from others mentioned in the change history section * below. * * Based on previous work of Francesco Chemolli and Robert Collins. * * Dependencies: Windows NT4 SP4 and later. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * * History: * * Version 1.21 * 21-02-2004 Guido Serassio *              Removed control of use of NTLM NEGOTIATE packet from *              command line, now the support is automatic. * Version 1.20 * 30-11-2003 Guido Serassio *              Added support for NTLM local calls. *              Added control of use of NTLM NEGOTIATE packet from *              command line. *              Updated documentation. * Version 1.10 * 07-09-2003 Guido Serassio *              Now is true NTLM authenticator. *              More debug info. *              Updated documentation. * Version 1.0 * 29-06-2002 Guido Serassio *              First release. * * */#include "util.h"#if HAVE_GETOPT_H#include <getopt.h>#endif#include "ntlm.h"#if HAVE_CTYPE_H#include <ctype.h>#endif#define BUFFER_SIZE 10240#ifdef NTLM_FAIL_OPENint last_ditch_enabled = 0;#endifint debug_enabled = 0;int NTLM_packet_debug_enabled = 0;static int have_challenge;char *NTAllowedGroup;char *NTDisAllowedGroup;int UseDisallowedGroup = 0;int UseAllowedGroup = 0;#if FAIL_DEBUGint fail_debug_enabled = 0;#endif/* makes a null-terminated string upper-case. Changes CONTENTS! */voiduc(char *string){    char *p = string, c;    while ((c = *p)) {	*p = xtoupper(c);	p++;    }}/* makes a null-terminated string lower-case. Changes CONTENTS! */static voidlc(char *string){    char *p = string, c;    while ((c = *p)) {	*p = xtolower(c);	p++;    }}voidhelperfail(const char *reason){#if FAIL_DEBUG    fail_debug_enabled = 1;#endif    SEND2("BH %s", reason);}/* * options: * -d enable debugging. * -v enable verbose NTLM packet debugging. * -l if specified, changes behavior on failures to last-ditch. * -A can specify a Windows Local Group name allowed to authenticate. * -D can specify a Windows Local Group name not allowed to authenticate. */char *my_program_name = NULL;voidusage(){    fprintf(stderr,#ifdef NTLM_FAIL_OPEN	"Usage: %s [-d] [-v] [-A|D LocalUserGroup] [-l] [-h]\n"#else	"Usage: %s [-d] [-v] [-A|D LocalUserGroup] [-h]\n"#endif	" -d  enable debugging.\n"	" -v  enable verbose NTLM packet debugging.\n"#ifdef NTLM_FAIL_OPEN	" -l  if specified, changes behavior on failures to last-ditch\n"#endif	" -A  specify a Windows Local Group name allowed to authenticate\n"	" -D  specify a Windows Local Group name not allowed to authenticate\n"	" -h  this message\n\n",	my_program_name);}voidprocess_options(int argc, char *argv[]){    int opt, had_error = 0;    opterr = 0;#ifdef NTLM_FAIL_OPEN    while (-1 != (opt = getopt(argc, argv, "hdvlA:D:"))) {#else    while (-1 != (opt = getopt(argc, argv, "hdvA:D:"))) {#endif	switch (opt) {	case 'A':	    safe_free(NTAllowedGroup);	    NTAllowedGroup = xstrdup(optarg);	    UseAllowedGroup = 1;	    break;	case 'D':	    safe_free(NTDisAllowedGroup);	    NTDisAllowedGroup = xstrdup(optarg);	    UseDisallowedGroup = 1;	    break;#ifdef NTLM_FAIL_OPEN	case 'l':	    last_ditch_enabled = 1;	    break;#endif	case 'd':	    debug_enabled = 1;	    break;	case 'v':	    debug_enabled = 1;	    NTLM_packet_debug_enabled = 1;	    break;	case 'h':	    usage();	    exit(0);	case '?':	    opt = optopt;	    /* fall thru to default */	default:	    fprintf(stderr, "unknown option: -%c. Exiting\n", opt);	    usage();	    had_error = 1;	}    }    if (had_error)	exit(1);}const char *obtain_challenge(ntlm_negotiate * nego, int nego_length){    const char *ch = NULL;    debug("attempting SSPI challenge retrieval\n");    ch = SSP_MakeChallenge(nego, nego_length);    if (ch) {	debug("Got it\n");	return ch;		/* All went OK, returning */    }    return NULL;}intmanage_request(){    ntlmhdr *fast_header;    char buf[BUFFER_SIZE];    char helper_command[3];    char *c, *decoded, *cred;    int plen;    int oversized = 0;    char *ErrorMessage;  try_again:    if (fgets(buf, BUFFER_SIZE, stdin) == NULL)	return 0;    c = memchr(buf, '\n', BUFFER_SIZE);		/* safer against overrun than strchr */    if (c) {	if (oversized) {	    helperfail("illegal request received");	    fprintf(stderr, "Illegal request received: '%s'\n", buf);	    return 1;	}	*c = '\0';    } else {	fprintf(stderr, "No newline in '%s'\n", buf);	oversized = 1;	goto try_again;    }    if ((strlen(buf) > 3) && NTLM_packet_debug_enabled) {	decoded = base64_decode(buf + 3);	strncpy(helper_command, buf, 2);	debug("Got '%s' from Squid with data:\n", helper_command);	hex_dump(decoded, ((strlen(buf) - 3) * 3) / 4);    } else	debug("Got '%s' from Squid\n", buf);    if (memcmp(buf, "YR", 2) == 0) {	/* refresh-request */	/* figure out what we got */	if (strlen(buf) > 3)	    decoded = base64_decode(buf + 3);	else	    decoded = base64_decode(ntlm_make_negotiate());	/* Note: we don't need to manage memory at this point, since	 *  base64_decode returns a pointer to static storage.	 */	if (!decoded) {		/* decoding failure, return error */	    SEND("NA Packet format error, couldn't base64-decode");	    return 1;	}	/* fast-track-decode request type. */	fast_header = (struct _ntlmhdr *) decoded;	/* sanity-check: it IS a NTLMSSP packet, isn't it? */	if (memcmp(fast_header->signature, "NTLMSSP", 8) != 0) {	    SEND("NA Broken authentication packet");	    return 1;	}	switch (fast_header->type) {	case NTLM_NEGOTIATE:	    /* Obtain challenge against SSPI */	    if (strlen(buf) > 3)		plen = (strlen(buf) - 3) * 3 / 4;	/* we only need it here. Optimization */	    else		plen = NEGOTIATE_LENGTH;	    if ((c = (char *) obtain_challenge((ntlm_negotiate *) decoded, plen)) != NULL) {		if (NTLM_packet_debug_enabled) {		    printf("TT %s\n", c);		    decoded = base64_decode(c);		    debug("sending 'TT' to squid with data:\n");		    hex_dump(decoded, (strlen(c) * 3) / 4);		    if (NTLM_LocalCall)			debug("NTLM Local Call detected\n");		} else {		    SEND2("TT %s", c);		}		have_challenge = 1;	    } else		helperfail("can't obtain challenge");	    return 1;	    /* notreached */	case NTLM_CHALLENGE:	    SEND		("NA Got a challenge. We refuse to have our authority disputed");	    return 1;	    /* notreached */	case NTLM_AUTHENTICATE:	    SEND("NA Got authentication request instead of negotiate request");	    return 1;	    /* notreached */	default:	    helperfail("unknown refresh-request packet type");	    return 1;	}	return 1;    }    if (memcmp(buf, "KK ", 3) == 0) {	/* authenticate-request */	if (!have_challenge) {	    helperfail("invalid challenge");	    return 1;	}	/* figure out what we got */	decoded = base64_decode(buf + 3);	/* Note: we don't need to manage memory at this point, since	 *  base64_decode returns a pointer to static storage.	 */	if (!decoded) {		/* decoding failure, return error */	    SEND("NA Packet format error, couldn't base64-decode");	    return 1;	}	/* fast-track-decode request type. */	fast_header = (struct _ntlmhdr *) decoded;	/* sanity-check: it IS a NTLMSSP packet, isn't it? */	if (memcmp(fast_header->signature, "NTLMSSP", 8) != 0) {	    SEND("NA Broken authentication packet");	    return 1;	}	switch (fast_header->type) {	case NTLM_NEGOTIATE:	    SEND("NA Invalid negotiation request received");	    return 1;	    /* notreached */	case NTLM_CHALLENGE:	    SEND		("NA Got a challenge. We refuse to have our authority disputed");	    return 1;	    /* notreached */	case NTLM_AUTHENTICATE:	    /* check against SSPI */	    plen = (strlen(buf) - 3) * 3 / 4;	/* we only need it here. Optimization */	    cred = ntlm_check_auth((ntlm_authenticate *) decoded, plen);	    have_challenge = 0;	    if (cred == NULL) {#if FAIL_DEBUG		fail_debug_enabled = 1;#endif		switch (ntlm_errno) {		case NTLM_BAD_NTGROUP:		    SEND("NA Incorrect Group Membership");		    return 1;		case NTLM_BAD_REQUEST:		    SEND("NA Incorrect Request Format");		    return 1;		case NTLM_SSPI_ERROR:		    FormatMessage(			FORMAT_MESSAGE_ALLOCATE_BUFFER |			FORMAT_MESSAGE_FROM_SYSTEM |			FORMAT_MESSAGE_IGNORE_INSERTS,			NULL,			GetLastError(),			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),	// Default language			 (LPTSTR) & ErrorMessage,			0,			NULL);		    if (ErrorMessage[strlen(ErrorMessage) - 1] == '\n')			ErrorMessage[strlen(ErrorMessage) - 1] = '\0';		    if (ErrorMessage[strlen(ErrorMessage) - 1] == '\r')			ErrorMessage[strlen(ErrorMessage) - 1] = '\0';		    SEND2("NA %s", ErrorMessage);		    LocalFree(ErrorMessage);		    return 1;		default:		    SEND("NA Unknown Error");		    return 1;		}	    }	    lc(cred);		/* let's lowercase them for our convenience */	    SEND2("AF %s", cred);	    return 1;	default:	    helperfail("unknown authentication packet type");	    return 1;	}	return 1;    } else {			/* not an auth-request */	helperfail("illegal request received");	fprintf(stderr, "Illegal request received: '%s'\n", buf);	return 1;    }    helperfail("detected protocol error");    return 1;/********* END ********/}intmain(int argc, char *argv[]){    my_program_name = argv[0];    process_options(argc, argv);    debug("%s build " __DATE__ ", " __TIME__ " starting up...\n", my_program_name);    if (LoadSecurityDll(SSP_NTLM, NTLM_PACKAGE_NAME) == NULL) {	fprintf(stderr, "FATAL, can't initialize SSPI, exiting.\n");	exit(1);    }    debug("SSPI initialized OK\n");    atexit(UnloadSecurityDll);    /* initialize FDescs */    setbuf(stdout, NULL);    setbuf(stderr, NULL);    while (manage_request()) {	/* everything is done within manage_request */    }    exit(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合夜色一区| 91香蕉视频mp4| 日韩精品国产欧美| 亚洲第一搞黄网站| 日本成人在线网站| 美女网站色91| 国产裸体歌舞团一区二区| 国产成人亚洲精品青草天美 | a亚洲天堂av| 不卡的电影网站| 91精品办公室少妇高潮对白| 99久久久久免费精品国产| 91视频一区二区三区| 日本福利一区二区| 欧美日韩国产电影| 久久久久久久久久久久电影| 国产精品午夜春色av| 亚洲精品你懂的| 奇米色一区二区三区四区| 国产精一区二区三区| 91丝袜高跟美女视频| 在线精品视频小说1| 日韩欧美激情在线| 国产喷白浆一区二区三区| 亚洲欧美色一区| 久久精品国产一区二区三区免费看| 国产精品99久久久久久有的能看| 粉嫩嫩av羞羞动漫久久久| 日本精品一区二区三区四区的功能| 欧美三级一区二区| 久久久亚洲精品石原莉奈| 亚洲男人天堂av网| 国产一区久久久| 色综合久久久久久久| 精品久久久久久久人人人人传媒| 欧美国产1区2区| 日本欧美在线看| av网站免费线看精品| 日韩欧美成人激情| 一区二区在线观看免费视频播放| 久久99精品久久久久久动态图| 不卡的av中国片| 精品国产亚洲在线| 亚洲一区二区三区四区五区黄 | 久久精品免费在线观看| 亚洲一区二区欧美激情| 高清国产一区二区三区| 久久久久久久网| 午夜视频在线观看一区二区三区| 国产成人精品亚洲777人妖| 欧美日韩高清一区| 亚洲视频免费看| 国产aⅴ综合色| 欧美第一区第二区| 日韩av一区二| 欧美日韩免费电影| 亚洲天堂成人在线观看| 国产精品99精品久久免费| 日韩欧美一区二区在线视频| 亚洲最新在线观看| 91毛片在线观看| 国产精品网曝门| 成人国产视频在线观看| 国产日韩欧美在线一区| 国产一区不卡精品| 日韩视频永久免费| 日韩经典中文字幕一区| 3751色影院一区二区三区| 亚洲资源中文字幕| 欧美亚洲一区三区| 一区二区三区四区不卡在线| 91麻豆123| 亚洲视频在线观看一区| 色综合天天综合网天天看片| 日韩一区中文字幕| 日本高清免费不卡视频| 伊人色综合久久天天人手人婷| 色综合天天视频在线观看| 亚洲视频网在线直播| 欧洲生活片亚洲生活在线观看| 一区二区三区四区在线播放| 在线这里只有精品| 亚洲国产中文字幕在线视频综合 | 精品久久久久久无| 国产·精品毛片| 亚洲欧洲国产专区| 欧美日韩精品专区| 免费久久99精品国产| 日韩你懂的在线观看| 精品一区二区三区在线播放 | 日韩毛片一二三区| 欧美综合一区二区三区| 日韩激情视频在线观看| 欧美成人r级一区二区三区| 国产美女视频一区| 最好看的中文字幕久久| 欧美欧美午夜aⅴ在线观看| 另类小说综合欧美亚洲| 中文字幕不卡三区| 欧美日韩国产综合一区二区三区 | 欧美在线一区二区| 青青草精品视频| 欧美激情一二三区| 欧美日韩国产欧美日美国产精品| 韩国三级电影一区二区| ...av二区三区久久精品| 884aa四虎影成人精品一区| 国产麻豆午夜三级精品| 亚洲宅男天堂在线观看无病毒| 精品久久久久久最新网址| 99久久精品国产导航| 欧美aⅴ一区二区三区视频| 国产精品久久久久久久裸模| 欧美日韩激情在线| 成人午夜av电影| 日韩avvvv在线播放| 日本一区二区免费在线观看视频| 欧美色男人天堂| 国产91精品在线观看| 日本vs亚洲vs韩国一区三区二区| 国产日韩精品一区二区三区在线| 欧美视频在线一区二区三区| 成人精品国产一区二区4080| 污片在线观看一区二区| 中文字幕制服丝袜一区二区三区 | 免费在线观看日韩欧美| 中文字幕一区二区三区av| 26uuu精品一区二区| 欧美日韩国产在线观看| 色综合久久六月婷婷中文字幕| 精品一区二区综合| 五月天激情综合| 一区二区三区在线观看视频| 国产亚洲欧美色| 日韩一区二区三| 欧美夫妻性生活| 91激情五月电影| 99视频超级精品| www.欧美.com| 东方欧美亚洲色图在线| 国产一区不卡在线| 国内一区二区在线| 久久成人18免费观看| 五月婷婷久久丁香| 日韩电影在线观看电影| 亚洲国产成人精品视频| 亚洲自拍偷拍麻豆| 亚洲韩国精品一区| 亚洲成人av一区| 日韩精品视频网站| 日本中文在线一区| 蜜桃视频在线观看一区二区| 日本女人一区二区三区| 男女性色大片免费观看一区二区| 午夜精品福利视频网站| 亚洲第一av色| 免费高清在线一区| 麻豆91在线播放免费| 精品一区二区三区在线观看国产 | 91福利国产精品| 欧美视频在线一区二区三区| 欧美日韩国产免费一区二区| 欧美日韩三级在线| 欧美成人精品3d动漫h| 久久嫩草精品久久久久| 国产精品色噜噜| 中文字幕中文字幕在线一区| 亚洲色图丝袜美腿| 日日夜夜精品免费视频| 九九热在线视频观看这里只有精品| 国产在线国偷精品免费看| 成人晚上爱看视频| 91亚洲精品久久久蜜桃网站| 欧美亚洲一区三区| 欧美电影免费观看高清完整版| 国产日韩欧美制服另类| 亚洲伦理在线精品| 免费成人av资源网| 大尺度一区二区| 91高清在线观看| 欧美不卡一区二区三区四区| 中文字幕+乱码+中文字幕一区| 亚洲综合另类小说| 国产精品中文字幕一区二区三区| av福利精品导航| 3d成人动漫网站| ●精品国产综合乱码久久久久| 亚洲国产精品久久艾草纯爱| 国产成人精品免费网站| 欧美日韩中文字幕一区二区| 久久久精品一品道一区| 一区二区三区国产| 国产伦理精品不卡| 在线成人午夜影院| 亚洲欧美综合另类在线卡通| 精品一区二区三区在线视频| 欧美体内she精视频| 自拍偷拍亚洲综合| 狠狠色丁香久久婷婷综合丁香| 91国产视频在线观看|