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

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

?? chap.c

?? “華為模塊(GTM900)+ ARM(LPC2104) + LWIP1.1”以PPP 方式實現GPRS 無線數據傳輸
?? C
?? 第 1 頁 / 共 2 頁
字號:
		return;	}		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一区二区三区免费野_久草精品视频
综合久久一区二区三区| 午夜精彩视频在线观看不卡| 亚洲欧美另类久久久精品| 最新国产成人在线观看| 亚洲自拍偷拍欧美| 久久精品99国产国产精| 久久精品99国产国产精| 99精品1区2区| 精品成人在线观看| 亚洲精品一二三区| 韩国精品久久久| 日本道精品一区二区三区 | 91福利精品视频| 欧美一区二区三区视频在线观看| 国产精品对白交换视频| 一区二区三区欧美视频| 国产精品1区2区3区| 欧美综合色免费| 中文字幕欧美区| 一区二区三区精品在线观看| 国产mv日韩mv欧美| 欧美大尺度电影在线| 一区二区三区日韩欧美精品| 国产精品一区二区在线观看网站 | 久久久久久夜精品精品免费| 欧美国产日韩a欧美在线观看| 亚洲一区在线观看视频| 94-欧美-setu| 豆国产96在线|亚洲| 色综合激情五月| 久久久精品影视| 午夜精品久久久久影视| av电影天堂一区二区在线 | 久久精品夜色噜噜亚洲aⅴ| 一区二区三区蜜桃网| 成人午夜av影视| 国产日韩欧美精品一区| 欧美精品一区二区久久久| 日本欧美一区二区| 日韩欧美国产高清| 狠狠网亚洲精品| 久久久91精品国产一区二区三区| 国产一区二区在线看| 国产欧美一区在线| www.一区二区| 26uuu亚洲| 国内精品在线播放| 欧美大片一区二区| 韩国三级电影一区二区| 久久午夜国产精品| 国产91丝袜在线播放九色| 中文在线一区二区| 91免费版pro下载短视频| 亚洲欧美二区三区| 91麻豆精品国产91久久久资源速度 | 91麻豆6部合集magnet| 精品一区二区三区在线观看国产 | 欧美va亚洲va香蕉在线| 免费精品视频在线| 国产欧美日韩在线视频| 91免费观看视频在线| 五月婷婷久久丁香| 久久久久久久久久久久电影| 99久久99久久精品免费观看| 亚洲福利电影网| 91精品国产美女浴室洗澡无遮挡| 久久电影网站中文字幕| 中文字幕在线不卡国产视频| 欧美日产在线观看| 风间由美一区二区av101| 亚洲自拍另类综合| 久久久天堂av| 欧美午夜影院一区| 国产精品18久久久久久vr| 亚洲图片激情小说| 精品国产伦一区二区三区观看体验 | 国产欧美日韩中文久久| 日韩成人一区二区| 欧美v国产在线一区二区三区| a美女胸又www黄视频久久| 天堂成人国产精品一区| 日本一区二区三区高清不卡| 在线不卡免费欧美| 99精品欧美一区二区三区综合在线| 日本欧美加勒比视频| 综合久久综合久久| 日韩精品影音先锋| 色婷婷av一区二区三区软件| 韩国v欧美v亚洲v日本v| 亚洲制服丝袜一区| 亚洲国产高清在线观看视频| 欧美一区二区三区在线| 在线观看一区日韩| 成人网页在线观看| 久久精品噜噜噜成人av农村| 亚洲一二三四在线| 中文字幕在线不卡视频| 26uuu国产一区二区三区| 欧美军同video69gay| 色天使色偷偷av一区二区| 国产98色在线|日韩| 久草在线在线精品观看| 天天影视色香欲综合网老头| 美女在线视频一区| 国产精品久久久久久久久果冻传媒| 欧美三级日本三级少妇99| 福利一区二区在线| 国产在线精品视频| 美国十次综合导航| 丝袜美腿一区二区三区| 一区二区三区国产豹纹内裤在线| 国产精品免费人成网站| 欧美激情艳妇裸体舞| 国产片一区二区| 国产精品久久久久毛片软件| 久久久久综合网| 国产日产精品1区| 久久亚区不卡日本| 久久网站热最新地址| 久久婷婷色综合| 欧美韩国日本不卡| 欧美激情一区在线| 亚洲欧美视频在线观看| 久久午夜色播影院免费高清| 一本大道久久a久久精二百| 91麻豆国产香蕉久久精品| 色系网站成人免费| 欧美视频在线播放| 亚洲精品国产品国语在线app| 一区二区中文视频| 一区二区欧美在线观看| 日本一道高清亚洲日美韩| 精品在线观看免费| 高清日韩电视剧大全免费| 99re这里只有精品视频首页| 欧美在线观看禁18| 日韩一区二区三区在线| wwwwww.欧美系列| 亚洲摸摸操操av| 天堂久久久久va久久久久| 国产综合色产在线精品| 91色在线porny| 69p69国产精品| 亚洲国产精品精华液2区45| 亚洲美女偷拍久久| 久久www免费人成看片高清| av网站一区二区三区| 欧美人xxxx| 日本一区二区不卡视频| 午夜亚洲国产au精品一区二区| 一本一道综合狠狠老| 婷婷久久综合九色综合伊人色| 美女网站一区二区| 成人avav在线| 欧美日韩成人一区| 2022国产精品视频| 亚洲图片欧美色图| 国产精品1区2区| 成人免费一区二区三区在线观看| 亚洲国产日日夜夜| 成人一区在线观看| 91精品久久久久久久99蜜桃 | 色哟哟国产精品免费观看| 日韩精品一区二区三区中文精品 | 91女神在线视频| 日韩欧美一级二级三级| 一区二区三区四区乱视频| 国产主播一区二区三区| 欧美精品乱码久久久久久按摩| 国产精品嫩草影院com| 韩日av一区二区| 7777精品伊人久久久大香线蕉完整版| 国产精品国产自产拍高清av王其| 日本aⅴ亚洲精品中文乱码| 久久精品视频在线看| 国产目拍亚洲精品99久久精品| 亚洲第一激情av| 91在线视频观看| 国产日产欧美一区二区视频| 美女脱光内衣内裤视频久久网站| 91国内精品野花午夜精品 | 欧美亚州韩日在线看免费版国语版| 久久视频一区二区| 亚洲国产aⅴ天堂久久| 色婷婷狠狠综合| 日韩美女视频一区二区| 国产成人精品免费在线| 精品国产伦一区二区三区免费| 石原莉奈一区二区三区在线观看| 欧美亚男人的天堂| 亚洲欧美日韩国产手机在线| 不卡影院免费观看| 国产精品丝袜一区| 国产91对白在线观看九色| 国产亚洲人成网站| 国产成人99久久亚洲综合精品| 久久夜色精品一区| 国产一区在线精品| 久久亚洲精品小早川怜子| 九九精品视频在线看|