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

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

?? chap.c

?? FreeRtos Source code Version 4.04
?? C
?? 第 1 頁 / 共 2 頁
字號:
	}		GETCHAR(rchallenge_len, inp);	len -= sizeof (u_char) + rchallenge_len;	/* now name field length */	if (len < 0) {		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: rcvd short packet.\n"));		return;	}	rchallenge = inp;	INCPTR(rchallenge_len, inp);		if (len >= sizeof(rhostname))		len = sizeof(rhostname) - 1;	BCOPY(inp, rhostname, len);	rhostname[len] = '\000';		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: received name field '%s'\n",	       rhostname));		/* Microsoft doesn't send their name back in the PPP packet */	if (ppp_settings.remote_name[0] != 0 && (ppp_settings.explicit_remote || rhostname[0] == 0)) {		strncpy(rhostname, ppp_settings.remote_name, sizeof(rhostname));		rhostname[sizeof(rhostname) - 1] = 0;		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: using '%s' as remote name\n",			   rhostname));	}		/* get secret for authenticating ourselves with the specified host */	if (!get_secret(cstate->unit, cstate->resp_name, rhostname,			    secret, &secret_len, 0)) {		secret_len = 0;		/* assume null secret if can't find one */		CHAPDEBUG((LOG_WARNING, "No CHAP secret found for authenticating us to %s\n", rhostname));	}		/* cancel response send timeout if necessary */	if (cstate->clientstate == CHAPCS_RESPONSE)		UNTIMEOUT(ChapResponseTimeout, cstate);		cstate->resp_id = id;	cstate->resp_transmits = 0;		/*  generate MD based on negotiated type */	switch (cstate->resp_type) { 		case CHAP_DIGEST_MD5:		MD5Init(&mdContext);		MD5Update(&mdContext, &cstate->resp_id, 1);		MD5Update(&mdContext, (u_char*)secret, secret_len);		MD5Update(&mdContext, rchallenge, rchallenge_len);		MD5Final(hash, &mdContext);		BCOPY(hash, cstate->response, MD5_SIGNATURE_SIZE);		cstate->resp_length = MD5_SIGNATURE_SIZE;		break;	#ifdef CHAPMS	case CHAP_MICROSOFT:		ChapMS(cstate, rchallenge, rchallenge_len, secret, secret_len);		break;#endif		default:		CHAPDEBUG((LOG_INFO, "unknown digest type %d\n", cstate->resp_type));		return;	}		BZERO(secret, sizeof(secret));	ChapSendResponse(cstate);}/* * ChapReceiveResponse - Receive and process response. */static void ChapReceiveResponse(chap_state *cstate, u_char *inp, int id, int len){	u_char *remmd, remmd_len;	int secret_len, old_state;	int code;	char rhostname[256];	MD5_CTX mdContext;	char secret[MAXSECRETLEN];	u_char hash[MD5_SIGNATURE_SIZE];		CHAPDEBUG((LOG_INFO, "ChapReceiveResponse: Rcvd id %d.\n", id));		if (cstate->serverstate == CHAPSS_CLOSED ||			cstate->serverstate == CHAPSS_PENDING) {		CHAPDEBUG((LOG_INFO, "ChapReceiveResponse: in state %d\n",		cstate->serverstate));		return;	}		if (id != cstate->chal_id)		return;			/* doesn't match ID of last challenge */		/*	* If we have received a duplicate or bogus Response,	* we have to send the same answer (Success/Failure)	* as we did for the first Response we saw.	*/	if (cstate->serverstate == CHAPSS_OPEN) {		ChapSendStatus(cstate, CHAP_SUCCESS);		return;	}	if (cstate->serverstate == CHAPSS_BADAUTH) {		ChapSendStatus(cstate, CHAP_FAILURE);		return;	}		if (len < 2) {		CHAPDEBUG((LOG_INFO, "ChapReceiveResponse: rcvd short packet.\n"));		return;	}	GETCHAR(remmd_len, inp);		/* get length of MD */	remmd = inp;			/* get pointer to MD */	INCPTR(remmd_len, inp);		len -= sizeof (u_char) + remmd_len;	if (len < 0) {		CHAPDEBUG((LOG_INFO, "ChapReceiveResponse: rcvd short packet.\n"));		return;	}		UNTIMEOUT(ChapChallengeTimeout, cstate);		if (len >= sizeof(rhostname))		len = sizeof(rhostname) - 1;	BCOPY(inp, rhostname, len);	rhostname[len] = '\000';		CHAPDEBUG((LOG_INFO, "ChapReceiveResponse: received name field: %s\n",				rhostname));		/*	* Get secret for authenticating them with us,	* do the hash ourselves, and compare the result.	*/	code = CHAP_FAILURE;	if (!get_secret(cstate->unit, rhostname, cstate->chal_name,	secret, &secret_len, 1)) {/*        CHAPDEBUG((LOG_WARNING, TL_CHAP, "No CHAP secret found for authenticating %s\n", rhostname)); */		CHAPDEBUG((LOG_WARNING, "No CHAP secret found for authenticating %s\n",		rhostname));	} else {			/*  generate MD based on negotiated type */		switch (cstate->chal_type) { 				case CHAP_DIGEST_MD5:		/* only MD5 is defined for now */			if (remmd_len != MD5_SIGNATURE_SIZE)				break;			/* it's not even the right length */			MD5Init(&mdContext);			MD5Update(&mdContext, &cstate->chal_id, 1);			MD5Update(&mdContext, (u_char*)secret, secret_len);			MD5Update(&mdContext, cstate->challenge, cstate->chal_len);			MD5Final(hash, &mdContext); 						/* compare local and remote MDs and send the appropriate status */			if (memcmp (hash, remmd, MD5_SIGNATURE_SIZE) == 0)				code = CHAP_SUCCESS;	/* they are the same! */			break;				default:			CHAPDEBUG((LOG_INFO, "unknown digest type %d\n", cstate->chal_type));		}	}		BZERO(secret, sizeof(secret));	ChapSendStatus(cstate, code);		if (code == CHAP_SUCCESS) {		old_state = cstate->serverstate;		cstate->serverstate = CHAPSS_OPEN;		if (old_state == CHAPSS_INITIAL_CHAL) {			auth_peer_success(cstate->unit, PPP_CHAP, rhostname, len);		}		if (cstate->chal_interval != 0)			TIMEOUT(ChapRechallenge, cstate, cstate->chal_interval);	} else {		CHAPDEBUG((LOG_ERR, "CHAP peer authentication failed\n"));		cstate->serverstate = CHAPSS_BADAUTH;		auth_peer_fail(cstate->unit, PPP_CHAP);	}}/* * ChapReceiveSuccess - Receive Success */static void ChapReceiveSuccess(chap_state *cstate, u_char *inp, u_char id, int len){	CHAPDEBUG((LOG_INFO, "ChapReceiveSuccess: Rcvd id %d.\n", id));		if (cstate->clientstate == CHAPCS_OPEN)		/* presumably an answer to a duplicate response */		return;		if (cstate->clientstate != CHAPCS_RESPONSE) {		/* don't know what this is */		CHAPDEBUG((LOG_INFO, "ChapReceiveSuccess: in state %d\n",			   cstate->clientstate));		return;	}		UNTIMEOUT(ChapResponseTimeout, cstate);		/*	 * Print message.	 */	if (len > 0)		PRINTMSG(inp, len);		cstate->clientstate = CHAPCS_OPEN;		auth_withpeer_success(cstate->unit, PPP_CHAP);}/* * ChapReceiveFailure - Receive failure. */static void ChapReceiveFailure(chap_state *cstate, u_char *inp, u_char id, int len){	CHAPDEBUG((LOG_INFO, "ChapReceiveFailure: Rcvd id %d.\n", id));		if (cstate->clientstate != CHAPCS_RESPONSE) {		/* don't know what this is */		CHAPDEBUG((LOG_INFO, "ChapReceiveFailure: in state %d\n",			   cstate->clientstate));		return;	}		UNTIMEOUT(ChapResponseTimeout, cstate);		/*	 * Print message.	 */	if (len > 0)		PRINTMSG(inp, len);		CHAPDEBUG((LOG_ERR, "CHAP authentication failed\n"));	auth_withpeer_fail(cstate->unit, PPP_CHAP);}/* * ChapSendChallenge - Send an Authenticate challenge. */static void ChapSendChallenge(chap_state *cstate){	u_char *outp;	int chal_len, name_len;	int outlen;		chal_len = cstate->chal_len;	name_len = strlen(cstate->chal_name);	outlen = CHAP_HEADERLEN + sizeof (u_char) + chal_len + name_len;	outp = outpacket_buf[cstate->unit];		MAKEHEADER(outp, PPP_CHAP);		/* paste in a CHAP header */		PUTCHAR(CHAP_CHALLENGE, outp);	PUTCHAR(cstate->chal_id, outp);	PUTSHORT(outlen, outp);		PUTCHAR(chal_len, outp);		/* put length of challenge */	BCOPY(cstate->challenge, outp, chal_len);	INCPTR(chal_len, outp);		BCOPY(cstate->chal_name, outp, name_len);	/* append hostname */		pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN);		CHAPDEBUG((LOG_INFO, "ChapSendChallenge: Sent id %d.\n", cstate->chal_id));		TIMEOUT(ChapChallengeTimeout, cstate, cstate->timeouttime);	++cstate->chal_transmits;}/* * ChapSendStatus - Send a status response (ack or nak). */static void ChapSendStatus(chap_state *cstate, int code){	u_char *outp;	int outlen, msglen;	char msg[256];		if (code == CHAP_SUCCESS)		strcpy(msg, "Welcome!");	else		strcpy(msg, "I don't like you.  Go 'way.");	msglen = strlen(msg);		outlen = CHAP_HEADERLEN + msglen;	outp = outpacket_buf[cstate->unit];		MAKEHEADER(outp, PPP_CHAP);		/* paste in a header */		PUTCHAR(code, outp);	PUTCHAR(cstate->chal_id, outp);	PUTSHORT(outlen, outp);	BCOPY(msg, outp, msglen);	pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN);		CHAPDEBUG((LOG_INFO, "ChapSendStatus: Sent code %d, id %d.\n", code,	       cstate->chal_id));}/* * ChapGenChallenge is used to generate a pseudo-random challenge string of * a pseudo-random length between min_len and max_len.  The challenge * string and its length are stored in *cstate, and various other fields of * *cstate are initialized. */static void ChapGenChallenge(chap_state *cstate){	int chal_len;	u_char *ptr = cstate->challenge;	int i;		/* pick a random challenge length between MIN_CHALLENGE_LENGTH and 	   MAX_CHALLENGE_LENGTH */  	chal_len = (unsigned)				((((magic() >> 16) *			        (MAX_CHALLENGE_LENGTH - MIN_CHALLENGE_LENGTH)) >> 16)			     + MIN_CHALLENGE_LENGTH);	cstate->chal_len = chal_len;	cstate->chal_id = ++cstate->id;	cstate->chal_transmits = 0;		/* generate a random string */	for (i = 0; i < chal_len; i++ )		*ptr++ = (char) (magic() & 0xff);}/* * ChapSendResponse - send a response packet with values as specified * in *cstate. *//* ARGSUSED */static void ChapSendResponse(chap_state *cstate){	u_char *outp;	int outlen, md_len, name_len;		md_len = cstate->resp_length;	name_len = strlen(cstate->resp_name);	outlen = CHAP_HEADERLEN + sizeof (u_char) + md_len + name_len;	outp = outpacket_buf[cstate->unit];		MAKEHEADER(outp, PPP_CHAP);		PUTCHAR(CHAP_RESPONSE, outp);	/* we are a response */	PUTCHAR(cstate->resp_id, outp);	/* copy id from challenge packet */	PUTSHORT(outlen, outp);			/* packet length */		PUTCHAR(md_len, outp);			/* length of MD */	BCOPY(cstate->response, outp, md_len);		/* copy MD to buffer */	INCPTR(md_len, outp);		BCOPY(cstate->resp_name, outp, name_len);	/* append our name */		/* send the packet */	pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN);		cstate->clientstate = CHAPCS_RESPONSE;	TIMEOUT(ChapResponseTimeout, cstate, cstate->timeouttime);	++cstate->resp_transmits;}/* * ChapPrintPkt - print the contents of a CHAP packet. */static int ChapPrintPkt(	u_char *p,	int plen,	void (*printer) (void *, char *, ...),	void *arg){	int code, id, len;	int clen, nlen;	u_char x;		if (plen < CHAP_HEADERLEN)		return 0;	GETCHAR(code, p);	GETCHAR(id, p);	GETSHORT(len, p);	if (len < CHAP_HEADERLEN || len > plen)		return 0;		if (code >= 1 && code <= sizeof(ChapCodenames) / sizeof(char *))		printer(arg, " %s", ChapCodenames[code-1]);	else		printer(arg, " code=0x%x", code);	printer(arg, " id=0x%x", id);	len -= CHAP_HEADERLEN;	switch (code) {	case CHAP_CHALLENGE:	case CHAP_RESPONSE:		if (len < 1)			break;		clen = p[0];		if (len < clen + 1)			break;		++p;		nlen = len - clen - 1;		printer(arg, " <");		for (; clen > 0; --clen) {			GETCHAR(x, p);			printer(arg, "%.2x", x);		}		printer(arg, ">, name = %.*Z", nlen, p);		break;	case CHAP_FAILURE:	case CHAP_SUCCESS:		printer(arg, " %.*Z", len, p);		break;	default:		for (clen = len; clen > 0; --clen) {			GETCHAR(x, p);			printer(arg, " %.2x", x);		}	}		return len + CHAP_HEADERLEN;}#endif#endif /* PPP_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品综合| 成人免费av资源| 国产精品久久看| 日韩精品一区二区三区在线播放| 在线看国产日韩| 99久久99久久综合| 91免费在线播放| 色综合久久九月婷婷色综合| 丰满白嫩尤物一区二区| 国产精品一卡二| 国产 欧美在线| 成人午夜视频在线观看| 99re这里只有精品视频首页| 成人sese在线| 一本大道av一区二区在线播放| 一本到高清视频免费精品| 欧美优质美女网站| 欧美一级专区免费大片| 欧美tickling网站挠脚心| 欧美精品一区二区三| 日本一区二区久久| 亚洲小说春色综合另类电影| 喷水一区二区三区| 国产成人午夜精品5599| 一本久道中文字幕精品亚洲嫩| 欧美午夜精品久久久| 日韩欧美不卡一区| 成人欧美一区二区三区黑人麻豆| 亚洲一区欧美一区| 精品制服美女久久| 色综合色狠狠综合色| 91精品国产综合久久精品图片| 日韩欧美国产不卡| 亚洲人成精品久久久久| 美女精品自拍一二三四| 91在线视频在线| 欧美成人午夜电影| 亚洲三级在线免费观看| 久久国产精品免费| 91久久精品午夜一区二区| 欧美v国产在线一区二区三区| 亚洲人成电影网站色mp4| 久久不见久久见免费视频1| 91丨九色porny丨蝌蚪| 日韩欧美区一区二| 亚洲精选视频免费看| 国产一区二区剧情av在线| 欧美羞羞免费网站| 国产精品萝li| 精品在线亚洲视频| 欧美性生活影院| 国产精品不卡在线| 老司机精品视频在线| 色综合久久综合网97色综合| 2017欧美狠狠色| 蜜臀久久99精品久久久久久9| 99国产精品99久久久久久| 精品成人一区二区三区四区| 亚洲福利视频导航| 99国产欧美久久久精品| 国产欧美日韩综合精品一区二区| 秋霞影院一区二区| 欧美性大战xxxxx久久久| 国产精品国产三级国产aⅴ无密码| 久久成人av少妇免费| 欧美日韩亚洲综合一区二区三区| 午夜精品一区在线观看| 国产.精品.日韩.另类.中文.在线.播放| 欧美综合视频在线观看| 国产精品进线69影院| 风流少妇一区二区| 久久精品视频网| 国产精品一区二区视频| 日韩免费观看2025年上映的电影| 亚洲成a天堂v人片| 欧美亚洲图片小说| 午夜精品一区二区三区免费视频| 欧美在线影院一区二区| 亚洲色图19p| 日本韩国精品在线| 一区二区三区日韩欧美| 色狠狠桃花综合| 夜夜嗨av一区二区三区网页| 在线观看日韩av先锋影音电影院| 亚洲乱码日产精品bd| 色av一区二区| 亚洲高清在线视频| 亚洲成人免费视频| 91在线视频在线| 亚洲欧美偷拍卡通变态| 一本到三区不卡视频| 久久精工是国产品牌吗| 91精品国产色综合久久| 免费成人在线观看视频| 日韩欧美国产1| 国产风韵犹存在线视精品| 国产精品剧情在线亚洲| 91久久精品一区二区二区| 亚洲国产精品一区二区尤物区| 欧美日韩黄色一区二区| 蜜臀va亚洲va欧美va天堂| 日韩欧美成人激情| 国产宾馆实践打屁股91| 亚洲精品自拍动漫在线| 3d成人h动漫网站入口| 精彩视频一区二区三区| 亚洲男人的天堂在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 欧美大尺度电影在线| 国产毛片一区二区| 亚洲免费观看高清完整 | 五月天视频一区| 精品日韩一区二区三区| 丁香天五香天堂综合| 香蕉影视欧美成人| 精品99999| 欧美中文一区二区三区| 国产专区综合网| 亚洲h精品动漫在线观看| 欧美精品一区二区三区高清aⅴ| 91伊人久久大香线蕉| 蜜臀av在线播放一区二区三区| 国产精品久久久久久久久免费丝袜 | 国产乱码一区二区三区| 亚洲综合丁香婷婷六月香| www国产成人免费观看视频 深夜成人网| 成人av先锋影音| 国模大尺度一区二区三区| 亚洲成av人片一区二区| 中文字幕欧美激情一区| 日韩一区二区视频在线观看| 99精品视频在线免费观看| 国产一区中文字幕| 午夜亚洲国产au精品一区二区| 国产精品人妖ts系列视频| 日韩一级免费一区| 欧美人与禽zozo性伦| 色女孩综合影院| 99国产精品久久久久久久久久| 国产一二精品视频| 美脚の诱脚舐め脚责91| 亚洲一区二区精品久久av| 国产精品三级av| 国产女人18毛片水真多成人如厕 | 久久久久成人黄色影片| 欧美一区二区三区免费观看视频| 欧美亚洲一区二区在线| 在线中文字幕不卡| 一本一道综合狠狠老| 成人精品免费网站| 高清不卡在线观看av| 韩国女主播成人在线| 久久国产欧美日韩精品| 久久国产精品99久久人人澡| 日本不卡中文字幕| 日韩1区2区日韩1区2区| 日韩精品视频网| 精品精品国产高清a毛片牛牛 | 欧美视频在线一区二区三区| eeuss鲁片一区二区三区| 国产高清精品在线| 国产91在线观看| 99热在这里有精品免费| heyzo一本久久综合| 91一区一区三区| 色94色欧美sute亚洲线路一久| 日本精品免费观看高清观看| 在线观看91精品国产入口| 欧美日韩免费视频| 91精品国产美女浴室洗澡无遮挡| 欧美一区二区三区思思人| 精品99久久久久久| 国产精品美女久久久久av爽李琼| 中文字幕一区二区三区四区 | 在线观看视频欧美| 欧美亚洲尤物久久| 精品福利一二区| 欧美国产日韩在线观看| 国产精品久久久久久久久免费桃花 | 亚洲人成人一区二区在线观看 | 国产欧美一区二区在线观看| 中文字幕免费不卡| 亚洲精品免费在线播放| 日韩精品乱码av一区二区| 久久精品二区亚洲w码| 不卡视频在线观看| 欧美美女激情18p| 国产婷婷色一区二区三区| 亚洲青青青在线视频| 卡一卡二国产精品| 97久久精品人人做人人爽| 51午夜精品国产| 国产精品你懂的| 免费在线观看一区| 成人av在线影院| 日韩视频免费观看高清完整版在线观看 | 欧美一级在线观看| 亚洲视频你懂的| 久久99精品久久久久久动态图| 99久久精品国产一区二区三区 |