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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? secure.c

?? LInux 下的遠(yuǎn)程桌面工具 Rdesktop
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
		}	}	s_mark_end(s);}/* Parse a public key structure */static RD_BOOLsec_parse_public_key(STREAM s, uint8 * modulus, uint8 * exponent){	uint32 magic, modulus_len;	in_uint32_le(s, magic);	if (magic != SEC_RSA_MAGIC)	{		error("RSA magic 0x%x\n", magic);		return False;	}	in_uint32_le(s, modulus_len);	modulus_len -= SEC_PADDING_SIZE;	if ((modulus_len < SEC_MODULUS_SIZE) || (modulus_len > SEC_MAX_MODULUS_SIZE))	{		error("Bad server public key size (%u bits)\n", modulus_len * 8);		return False;	}	in_uint8s(s, 8);	/* modulus_bits, unknown */	in_uint8a(s, exponent, SEC_EXPONENT_SIZE);	in_uint8a(s, modulus, modulus_len);	in_uint8s(s, SEC_PADDING_SIZE);	g_server_public_key_len = modulus_len;	return s_check(s);}/* Parse a public signature structure */static RD_BOOLsec_parse_public_sig(STREAM s, uint32 len, uint8 * modulus, uint8 * exponent){	uint8 signature[SEC_MAX_MODULUS_SIZE];	uint32 sig_len;	if (len != 72)	{		return True;	}	memset(signature, 0, sizeof(signature));	sig_len = len - 8;	in_uint8a(s, signature, sig_len);	return ssl_sig_ok(exponent, SEC_EXPONENT_SIZE, modulus, g_server_public_key_len,			  signature, sig_len);}/* Parse a crypto information structure */static RD_BOOLsec_parse_crypt_info(STREAM s, uint32 * rc4_key_size,		     uint8 ** server_random, uint8 * modulus, uint8 * exponent){	uint32 crypt_level, random_len, rsa_info_len;	uint32 cacert_len, cert_len, flags;	SSL_CERT *cacert, *server_cert;	SSL_RKEY *server_public_key;	uint16 tag, length;	uint8 *next_tag, *end;	in_uint32_le(s, *rc4_key_size);	/* 1 = 40-bit, 2 = 128-bit */	in_uint32_le(s, crypt_level);	/* 1 = low, 2 = medium, 3 = high */	if (crypt_level == 0)	/* no encryption */		return False;	in_uint32_le(s, random_len);	in_uint32_le(s, rsa_info_len);	if (random_len != SEC_RANDOM_SIZE)	{		error("random len %d, expected %d\n", random_len, SEC_RANDOM_SIZE);		return False;	}	in_uint8p(s, *server_random, random_len);	/* RSA info */	end = s->p + rsa_info_len;	if (end > s->end)		return False;	in_uint32_le(s, flags);	/* 1 = RDP4-style, 0x80000002 = X.509 */	if (flags & 1)	{		DEBUG_RDP5(("We're going for the RDP4-style encryption\n"));		in_uint8s(s, 8);	/* unknown */		while (s->p < end)		{			in_uint16_le(s, tag);			in_uint16_le(s, length);			next_tag = s->p + length;			switch (tag)			{				case SEC_TAG_PUBKEY:					if (!sec_parse_public_key(s, modulus, exponent))						return False;					DEBUG_RDP5(("Got Public key, RDP4-style\n"));					break;				case SEC_TAG_KEYSIG:					if (!sec_parse_public_sig(s, length, modulus, exponent))						return False;					break;				default:					unimpl("crypt tag 0x%x\n", tag);			}			s->p = next_tag;		}	}	else	{		uint32 certcount;		DEBUG_RDP5(("We're going for the RDP5-style encryption\n"));		in_uint32_le(s, certcount);	/* Number of certificates */		if (certcount < 2)		{			error("Server didn't send enough X509 certificates\n");			return False;		}		for (; certcount > 2; certcount--)		{		/* ignore all the certificates between the root and the signing CA */			uint32 ignorelen;			SSL_CERT *ignorecert;			DEBUG_RDP5(("Ignored certs left: %d\n", certcount));			in_uint32_le(s, ignorelen);			DEBUG_RDP5(("Ignored Certificate length is %d\n", ignorelen));			ignorecert = ssl_cert_read(s->p, ignorelen);			in_uint8s(s, ignorelen);			if (ignorecert == NULL)			{	/* XXX: error out? */				DEBUG_RDP5(("got a bad cert: this will probably screw up the rest of the communication\n"));			}#ifdef WITH_DEBUG_RDP5			DEBUG_RDP5(("cert #%d (ignored):\n", certcount));			ssl_cert_print_fp(stdout, ignorecert);#endif		}		/* Do da funky X.509 stuffy		   "How did I find out about this?  I looked up and saw a		   bright light and when I came to I had a scar on my forehead		   and knew about X.500"		   - Peter Gutman in a early version of 		   http://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.txt		 */		in_uint32_le(s, cacert_len);		DEBUG_RDP5(("CA Certificate length is %d\n", cacert_len));		cacert = ssl_cert_read(s->p, cacert_len);		in_uint8s(s, cacert_len);		if (NULL == cacert)		{			error("Couldn't load CA Certificate from server\n");			return False;		}		in_uint32_le(s, cert_len);		DEBUG_RDP5(("Certificate length is %d\n", cert_len));		server_cert = ssl_cert_read(s->p, cert_len);		in_uint8s(s, cert_len);		if (NULL == server_cert)		{			ssl_cert_free(cacert);			error("Couldn't load Certificate from server\n");			return False;		}		if (!ssl_certs_ok(server_cert, cacert))		{			ssl_cert_free(server_cert);			ssl_cert_free(cacert);			error("Security error CA Certificate invalid\n");			return False;		}		ssl_cert_free(cacert);		in_uint8s(s, 16);	/* Padding */		server_public_key = ssl_cert_to_rkey(server_cert, &g_server_public_key_len);		if (NULL == server_public_key)		{			DEBUG_RDP5(("Didn't parse X509 correctly\n"));			ssl_cert_free(server_cert);			return False;		}		ssl_cert_free(server_cert);		if ((g_server_public_key_len < SEC_MODULUS_SIZE) ||		    (g_server_public_key_len > SEC_MAX_MODULUS_SIZE))		{			error("Bad server public key size (%u bits)\n",			      g_server_public_key_len * 8);			ssl_rkey_free(server_public_key);			return False;		}		if (ssl_rkey_get_exp_mod(server_public_key, exponent, SEC_EXPONENT_SIZE,					 modulus, SEC_MAX_MODULUS_SIZE) != 0)		{			error("Problem extracting RSA exponent, modulus");			ssl_rkey_free(server_public_key);			return False;		}		ssl_rkey_free(server_public_key);		return True;	/* There's some garbage here we don't care about */	}	return s_check_end(s);}/* Process crypto information blob */static voidsec_process_crypt_info(STREAM s){	uint8 *server_random = NULL;	uint8 client_random[SEC_RANDOM_SIZE];	uint8 modulus[SEC_MAX_MODULUS_SIZE];	uint8 exponent[SEC_EXPONENT_SIZE];	uint32 rc4_key_size;	memset(modulus, 0, sizeof(modulus));	memset(exponent, 0, sizeof(exponent));	if (!sec_parse_crypt_info(s, &rc4_key_size, &server_random, modulus, exponent))	{		DEBUG(("Failed to parse crypt info\n"));		return;	}	DEBUG(("Generating client random\n"));	generate_random(client_random);	sec_rsa_encrypt(g_sec_crypted_random, client_random, SEC_RANDOM_SIZE,			g_server_public_key_len, modulus, exponent);	sec_generate_keys(client_random, server_random, rc4_key_size);}/* Process SRV_INFO, find RDP version supported by server */static voidsec_process_srv_info(STREAM s){	in_uint16_le(s, g_server_rdp_version);	DEBUG_RDP5(("Server RDP version is %d\n", g_server_rdp_version));	if (1 == g_server_rdp_version)	{		g_use_rdp5 = 0;		g_server_depth = 8;	}}/* Process connect response data blob */voidsec_process_mcs_data(STREAM s){	uint16 tag, length;	uint8 *next_tag;	uint8 len;	in_uint8s(s, 21);	/* header (T.124 ConferenceCreateResponse) */	in_uint8(s, len);	if (len & 0x80)		in_uint8(s, len);	while (s->p < s->end)	{		in_uint16_le(s, tag);		in_uint16_le(s, length);		if (length <= 4)			return;		next_tag = s->p + length - 4;		switch (tag)		{			case SEC_TAG_SRV_INFO:				sec_process_srv_info(s);				break;			case SEC_TAG_SRV_CRYPT:				sec_process_crypt_info(s);				break;			case SEC_TAG_SRV_CHANNELS:				/* FIXME: We should parse this information and				   use it to map RDP5 channels to MCS 				   channels */				break;			default:				unimpl("response tag 0x%x\n", tag);		}		s->p = next_tag;	}}/* Receive secure transport packet */STREAMsec_recv(uint8 * rdpver){	uint32 sec_flags;	uint16 channel;	STREAM s;	while ((s = mcs_recv(&channel, rdpver)) != NULL)	{		if (rdpver != NULL)		{			if (*rdpver != 3)			{				if (*rdpver & 0x80)				{					in_uint8s(s, 8);	/* signature */					sec_decrypt(s->p, s->end - s->p);				}				return s;			}		}		if (g_encryption || !g_licence_issued)		{			in_uint32_le(s, sec_flags);			if (sec_flags & SEC_ENCRYPT)			{				in_uint8s(s, 8);	/* signature */				sec_decrypt(s->p, s->end - s->p);			}			if (sec_flags & SEC_LICENCE_NEG)			{				licence_process(s);				continue;			}			if (sec_flags & 0x0400)	/* SEC_REDIRECT_ENCRYPT */			{				uint8 swapbyte;				in_uint8s(s, 8);	/* signature */				sec_decrypt(s->p, s->end - s->p);				/* Check for a redirect packet, starts with 00 04 */				if (s->p[0] == 0 && s->p[1] == 4)				{					/* for some reason the PDU and the length seem to be swapped.					   This isn't good, but we're going to do a byte for byte					   swap.  So the first foure value appear as: 00 04 XX YY,					   where XX YY is the little endian length. We're going to					   use 04 00 as the PDU type, so after our swap this will look					   like: XX YY 04 00 */					swapbyte = s->p[0];					s->p[0] = s->p[2];					s->p[2] = swapbyte;					swapbyte = s->p[1];					s->p[1] = s->p[3];					s->p[3] = swapbyte;					swapbyte = s->p[2];					s->p[2] = s->p[3];					s->p[3] = swapbyte;				}#ifdef WITH_DEBUG				/* warning!  this debug statement will show passwords in the clear! */				hexdump(s->p, s->end - s->p);#endif			}		}		if (channel != MCS_GLOBAL_CHANNEL)		{			channel_process(s, channel);			*rdpver = 0xff;			return s;		}		return s;	}	return NULL;}/* Establish a secure connection */RD_BOOLsec_connect(char *server, char *username){	struct stream mcs_data;	/* We exchange some RDP data during the MCS-Connect */	mcs_data.size = 512;	mcs_data.p = mcs_data.data = (uint8 *) xmalloc(mcs_data.size);	sec_out_mcs_data(&mcs_data);	if (!mcs_connect(server, &mcs_data, username))		return False;	/*      sec_process_mcs_data(&mcs_data); */	if (g_encryption)		sec_establish_key();	xfree(mcs_data.data);	return True;}/* Establish a secure connection */RD_BOOLsec_reconnect(char *server){	struct stream mcs_data;	/* We exchange some RDP data during the MCS-Connect */	mcs_data.size = 512;	mcs_data.p = mcs_data.data = (uint8 *) xmalloc(mcs_data.size);	sec_out_mcs_data(&mcs_data);	if (!mcs_reconnect(server, &mcs_data))		return False;	/*      sec_process_mcs_data(&mcs_data); */	if (g_encryption)		sec_establish_key();	xfree(mcs_data.data);	return True;}/* Disconnect a connection */voidsec_disconnect(void){	mcs_disconnect();}/* reset the state of the sec layer */voidsec_reset_state(void){	g_server_rdp_version = 0;	g_sec_encrypt_use_count = 0;	g_sec_decrypt_use_count = 0;	mcs_reset_state();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美在线| 欧美日韩国产免费| 亚洲 欧美综合在线网络| 久久一区二区视频| 欧美亚洲免费在线一区| 成人午夜精品在线| 天天av天天翘天天综合网色鬼国产| 国产精品天天看| 日韩午夜中文字幕| 欧美三级视频在线播放| a在线播放不卡| 国产一区二区三区观看| 日韩在线一区二区| 伊人色综合久久天天人手人婷| 久久色中文字幕| 日韩一二三四区| 欧美日韩精品一区二区三区四区 | 日韩一卡二卡三卡国产欧美| 99久久久精品免费观看国产蜜| 精品一二三四区| 日韩二区在线观看| 亚洲 欧美综合在线网络| 亚洲伦在线观看| 亚洲欧美区自拍先锋| 国产精品天天摸av网| 国产欧美日韩亚州综合 | 久久久久免费观看| 精品久久一区二区| 日韩久久久精品| 日韩一级片在线观看| 欧美一区二区大片| 欧美一区二区视频观看视频| 欧美电影一区二区| 欧美日韩电影一区| 337p亚洲精品色噜噜噜| 欧美乱妇一区二区三区不卡视频| 欧美日韩三级在线| 欧美日韩不卡在线| 欧美一级生活片| 欧美成人video| 精品国产乱码久久久久久久| 欧美精品一区二区三区在线| 欧美va在线播放| 久久综合久色欧美综合狠狠| 久久久亚洲欧洲日产国码αv| 久久综合九色综合久久久精品综合 | 色综合久久综合| 色哟哟一区二区三区| 欧日韩精品视频| 欧美日韩日日夜夜| 日韩精品一区二区三区四区视频| 欧美va亚洲va在线观看蝴蝶网| 久久天天做天天爱综合色| 国产清纯美女被跳蛋高潮一区二区久久w| 久久精品综合网| 亚洲欧美在线观看| 亚洲第一主播视频| 久久精品免费观看| 国产成人免费av在线| 97超碰欧美中文字幕| 在线视频综合导航| 欧美一级高清片| 中文字幕乱码亚洲精品一区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 久久精品国产成人一区二区三区| 国产在线一区二区综合免费视频| 成人综合婷婷国产精品久久免费| av爱爱亚洲一区| 欧美日韩一区国产| 精品粉嫩超白一线天av| 中文字幕永久在线不卡| 亚洲成人黄色影院| 国产精品一区免费视频| 91免费小视频| 日韩午夜激情av| 国产精品久久久久久久久晋中 | 日韩一区二区中文字幕| 久久久久久久久久久久久久久99 | 国产成人综合在线观看| 日本黄色一区二区| 日韩一区二区精品在线观看| 国产精品成人一区二区艾草| 日本大胆欧美人术艺术动态| 成人精品免费网站| 91精品国产综合久久蜜臀| 中文字幕巨乱亚洲| 奇米色一区二区三区四区| 成人免费视频国产在线观看| 欧美体内she精高潮| 久久色.com| 日韩二区三区四区| 99精品国产一区二区三区不卡| 制服丝袜亚洲网站| 中文字幕视频一区二区三区久| 免费观看在线色综合| 91国产免费看| 国产精品久久免费看| 蜜臀av在线播放一区二区三区| 99久久综合国产精品| 精品国产亚洲一区二区三区在线观看| 亚洲色图在线视频| 国产激情精品久久久第一区二区 | 欧美精品日日鲁夜夜添| 中文字幕永久在线不卡| 国产一区999| 欧美一区二区福利在线| 亚洲一区二区三区四区的| av不卡一区二区三区| 久久综合九色欧美综合狠狠| 日本欧美一区二区三区乱码| 欧美综合一区二区| 日韩一区欧美一区| 国产成人av福利| 久久亚洲精精品中文字幕早川悠里 | 久久一夜天堂av一区二区三区| 五月激情综合婷婷| 色欧美片视频在线观看| 欧美韩国日本综合| 国产精品一区二区在线观看网站| 91麻豆精品国产91久久久资源速度 | 天天综合色天天综合| 日本电影亚洲天堂一区| 中文字幕亚洲区| 99综合电影在线视频| 国产欧美视频一区二区| 国产综合一区二区| 2021国产精品久久精品| 国产在线播放一区| 久久这里只有精品6| 国产在线播放一区三区四| 2020日本不卡一区二区视频| 国产资源在线一区| 精品国产一区二区精华| 精品亚洲免费视频| 精品日韩欧美一区二区| 国内精品久久久久影院薰衣草| 日韩欧美黄色影院| 国产一区二区精品在线观看| ww亚洲ww在线观看国产| 国产91综合网| 国产精品丝袜一区| 色综合久久久久久久久| 亚洲综合久久久久| 4438x亚洲最大成人网| 美腿丝袜亚洲综合| 精品少妇一区二区三区视频免付费| 久久99精品久久久久婷婷| 久久久久久久久蜜桃| www.日韩在线| 亚洲一区二区欧美激情| 欧美日韩的一区二区| 看电影不卡的网站| 国产午夜精品福利| 91在线观看免费视频| 一区二区三区中文免费| 欧美男人的天堂一二区| 久久精品国产亚洲高清剧情介绍| 久久综合色婷婷| 懂色av一区二区夜夜嗨| 亚洲男同性恋视频| 欧美日韩aaaaaa| 欧美人成免费网站| 99久精品国产| 国产一区二区不卡在线| 国产亚洲精品7777| 94-欧美-setu| 日韩国产精品久久久久久亚洲| 337p粉嫩大胆色噜噜噜噜亚洲 | 精品一区二区综合| 欧美国产日韩在线观看| 欧美性生活久久| 狠狠色狠狠色综合日日91app| 国产精品美女久久久久久久久| 欧美在线|欧美| 寂寞少妇一区二区三区| 亚洲日本护士毛茸茸| 欧美一区二区性放荡片| 成人黄色一级视频| 午夜成人免费电影| 国产欧美日韩激情| 3d成人h动漫网站入口| 成人av网站免费| 美国毛片一区二区| 一区二区三区蜜桃网| 久久久久久久久久久久电影| 在线观看免费亚洲| 国产精品亚洲第一| 日韩av午夜在线观看| 中文字幕日韩一区| 精品少妇一区二区| 日本久久电影网| 国产一区二区三区在线观看免费视频| 国产精品网站导航| 亚洲三级在线观看| 成人av资源在线| 亚洲精品视频一区二区| 久久综合色播五月| 欧美日韩美少妇| 91美女视频网站| 国产精品99久久久久久宅男|