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

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

?? mcs.c

?? LInux 下的遠程桌面工具 Rdesktop
?? C
字號:
/* -*- c-basic-offset: 8 -*-   rdesktop: A Remote Desktop Protocol client.   Protocol services - Multipoint Communications Service   Copyright (C) Matthew Chapman 1999-2007   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 "rdesktop.h"uint16 g_mcs_userid;extern VCHANNEL g_channels[];extern unsigned int g_num_channels;/* Parse an ASN.1 BER header */static RD_BOOLber_parse_header(STREAM s, int tagval, int *length){	int tag, len;	if (tagval > 0xff)	{		in_uint16_be(s, tag);	}	else	{		in_uint8(s, tag);	}	if (tag != tagval)	{		error("expected tag %d, got %d\n", tagval, tag);		return False;	}	in_uint8(s, len);	if (len & 0x80)	{		len &= ~0x80;		*length = 0;		while (len--)			next_be(s, *length);	}	else		*length = len;	return s_check(s);}/* Output an ASN.1 BER header */static voidber_out_header(STREAM s, int tagval, int length){	if (tagval > 0xff)	{		out_uint16_be(s, tagval);	}	else	{		out_uint8(s, tagval);	}	if (length >= 0x80)	{		out_uint8(s, 0x82);		out_uint16_be(s, length);	}	else		out_uint8(s, length);}/* Output an ASN.1 BER integer */static voidber_out_integer(STREAM s, int value){	ber_out_header(s, BER_TAG_INTEGER, 2);	out_uint16_be(s, value);}/* Output a DOMAIN_PARAMS structure (ASN.1 BER) */static voidmcs_out_domain_params(STREAM s, int max_channels, int max_users, int max_tokens, int max_pdusize){	ber_out_header(s, MCS_TAG_DOMAIN_PARAMS, 32);	ber_out_integer(s, max_channels);	ber_out_integer(s, max_users);	ber_out_integer(s, max_tokens);	ber_out_integer(s, 1);	/* num_priorities */	ber_out_integer(s, 0);	/* min_throughput */	ber_out_integer(s, 1);	/* max_height */	ber_out_integer(s, max_pdusize);	ber_out_integer(s, 2);	/* ver_protocol */}/* Parse a DOMAIN_PARAMS structure (ASN.1 BER) */static RD_BOOLmcs_parse_domain_params(STREAM s){	int length;	ber_parse_header(s, MCS_TAG_DOMAIN_PARAMS, &length);	in_uint8s(s, length);	return s_check(s);}/* Send an MCS_CONNECT_INITIAL message (ASN.1 BER) */static voidmcs_send_connect_initial(STREAM mcs_data){	int datalen = mcs_data->end - mcs_data->data;	int length = 9 + 3 * 34 + 4 + datalen;	STREAM s;	s = iso_init(length + 5);	ber_out_header(s, MCS_CONNECT_INITIAL, length);	ber_out_header(s, BER_TAG_OCTET_STRING, 1);	/* calling domain */	out_uint8(s, 1);	ber_out_header(s, BER_TAG_OCTET_STRING, 1);	/* called domain */	out_uint8(s, 1);	ber_out_header(s, BER_TAG_BOOLEAN, 1);	out_uint8(s, 0xff);	/* upward flag */	mcs_out_domain_params(s, 34, 2, 0, 0xffff);	/* target params */	mcs_out_domain_params(s, 1, 1, 1, 0x420);	/* min params */	mcs_out_domain_params(s, 0xffff, 0xfc17, 0xffff, 0xffff);	/* max params */	ber_out_header(s, BER_TAG_OCTET_STRING, datalen);	out_uint8p(s, mcs_data->data, datalen);	s_mark_end(s);	iso_send(s);}/* Expect a MCS_CONNECT_RESPONSE message (ASN.1 BER) */static RD_BOOLmcs_recv_connect_response(STREAM mcs_data){	uint8 result;	int length;	STREAM s;	s = iso_recv(NULL);	if (s == NULL)		return False;	ber_parse_header(s, MCS_CONNECT_RESPONSE, &length);	ber_parse_header(s, BER_TAG_RESULT, &length);	in_uint8(s, result);	if (result != 0)	{		error("MCS connect: %d\n", result);		return False;	}	ber_parse_header(s, BER_TAG_INTEGER, &length);	in_uint8s(s, length);	/* connect id */	mcs_parse_domain_params(s);	ber_parse_header(s, BER_TAG_OCTET_STRING, &length);	sec_process_mcs_data(s);	/*	   if (length > mcs_data->size)	   {	   error("MCS data length %d, expected %d\n", length,	   mcs_data->size);	   length = mcs_data->size;	   }	   in_uint8a(s, mcs_data->data, length);	   mcs_data->p = mcs_data->data;	   mcs_data->end = mcs_data->data + length;	 */	return s_check_end(s);}/* Send an EDrq message (ASN.1 PER) */static voidmcs_send_edrq(void){	STREAM s;	s = iso_init(5);	out_uint8(s, (MCS_EDRQ << 2));	out_uint16_be(s, 1);	/* height */	out_uint16_be(s, 1);	/* interval */	s_mark_end(s);	iso_send(s);}/* Send an AUrq message (ASN.1 PER) */static voidmcs_send_aurq(void){	STREAM s;	s = iso_init(1);	out_uint8(s, (MCS_AURQ << 2));	s_mark_end(s);	iso_send(s);}/* Expect a AUcf message (ASN.1 PER) */static RD_BOOLmcs_recv_aucf(uint16 * mcs_userid){	uint8 opcode, result;	STREAM s;	s = iso_recv(NULL);	if (s == NULL)		return False;	in_uint8(s, opcode);	if ((opcode >> 2) != MCS_AUCF)	{		error("expected AUcf, got %d\n", opcode);		return False;	}	in_uint8(s, result);	if (result != 0)	{		error("AUrq: %d\n", result);		return False;	}	if (opcode & 2)		in_uint16_be(s, *mcs_userid);	return s_check_end(s);}/* Send a CJrq message (ASN.1 PER) */static voidmcs_send_cjrq(uint16 chanid){	STREAM s;	DEBUG_RDP5(("Sending CJRQ for channel #%d\n", chanid));	s = iso_init(5);	out_uint8(s, (MCS_CJRQ << 2));	out_uint16_be(s, g_mcs_userid);	out_uint16_be(s, chanid);	s_mark_end(s);	iso_send(s);}/* Expect a CJcf message (ASN.1 PER) */static RD_BOOLmcs_recv_cjcf(void){	uint8 opcode, result;	STREAM s;	s = iso_recv(NULL);	if (s == NULL)		return False;	in_uint8(s, opcode);	if ((opcode >> 2) != MCS_CJCF)	{		error("expected CJcf, got %d\n", opcode);		return False;	}	in_uint8(s, result);	if (result != 0)	{		error("CJrq: %d\n", result);		return False;	}	in_uint8s(s, 4);	/* mcs_userid, req_chanid */	if (opcode & 2)		in_uint8s(s, 2);	/* join_chanid */	return s_check_end(s);}/* Initialise an MCS transport data packet */STREAMmcs_init(int length){	STREAM s;	s = iso_init(length + 8);	s_push_layer(s, mcs_hdr, 8);	return s;}/* Send an MCS transport data packet to a specific channel */voidmcs_send_to_channel(STREAM s, uint16 channel){	uint16 length;	s_pop_layer(s, mcs_hdr);	length = s->end - s->p - 8;	length |= 0x8000;	out_uint8(s, (MCS_SDRQ << 2));	out_uint16_be(s, g_mcs_userid);	out_uint16_be(s, channel);	out_uint8(s, 0x70);	/* flags */	out_uint16_be(s, length);	iso_send(s);}/* Send an MCS transport data packet to the global channel */voidmcs_send(STREAM s){	mcs_send_to_channel(s, MCS_GLOBAL_CHANNEL);}/* Receive an MCS transport data packet */STREAMmcs_recv(uint16 * channel, uint8 * rdpver){	uint8 opcode, appid, length;	STREAM s;	s = iso_recv(rdpver);	if (s == NULL)		return NULL;	if (rdpver != NULL)		if (*rdpver != 3)			return s;	in_uint8(s, opcode);	appid = opcode >> 2;	if (appid != MCS_SDIN)	{		if (appid != MCS_DPUM)		{			error("expected data, got %d\n", opcode);		}		return NULL;	}	in_uint8s(s, 2);	/* userid */	in_uint16_be(s, *channel);	in_uint8s(s, 1);	/* flags */	in_uint8(s, length);	if (length & 0x80)		in_uint8s(s, 1);	/* second byte of length */	return s;}/* Establish a connection up to the MCS layer */RD_BOOLmcs_connect(char *server, STREAM mcs_data, char *username){	unsigned int i;	if (!iso_connect(server, username))		return False;	mcs_send_connect_initial(mcs_data);	if (!mcs_recv_connect_response(mcs_data))		goto error;	mcs_send_edrq();	mcs_send_aurq();	if (!mcs_recv_aucf(&g_mcs_userid))		goto error;	mcs_send_cjrq(g_mcs_userid + MCS_USERCHANNEL_BASE);	if (!mcs_recv_cjcf())		goto error;	mcs_send_cjrq(MCS_GLOBAL_CHANNEL);	if (!mcs_recv_cjcf())		goto error;	for (i = 0; i < g_num_channels; i++)	{		mcs_send_cjrq(g_channels[i].mcs_id);		if (!mcs_recv_cjcf())			goto error;	}	return True;      error:	iso_disconnect();	return False;}/* Establish a connection up to the MCS layer */RD_BOOLmcs_reconnect(char *server, STREAM mcs_data){	unsigned int i;	if (!iso_reconnect(server))		return False;	mcs_send_connect_initial(mcs_data);	if (!mcs_recv_connect_response(mcs_data))		goto error;	mcs_send_edrq();	mcs_send_aurq();	if (!mcs_recv_aucf(&g_mcs_userid))		goto error;	mcs_send_cjrq(g_mcs_userid + MCS_USERCHANNEL_BASE);	if (!mcs_recv_cjcf())		goto error;	mcs_send_cjrq(MCS_GLOBAL_CHANNEL);	if (!mcs_recv_cjcf())		goto error;	for (i = 0; i < g_num_channels; i++)	{		mcs_send_cjrq(g_channels[i].mcs_id);		if (!mcs_recv_cjcf())			goto error;	}	return True;      error:	iso_disconnect();	return False;}/* Disconnect from the MCS layer */voidmcs_disconnect(void){	iso_disconnect();}/* reset the state of the mcs layer */voidmcs_reset_state(void){	g_mcs_userid = 0;	iso_reset_state();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费日韩伦理电影| 欧美日韩黄视频| 欧美特级限制片免费在线观看| 欧美日韩精品一区二区| 欧美国产精品一区二区| 日韩电影网1区2区| 一本一本久久a久久精品综合麻豆| 欧美一区二区大片| 亚洲精品成人天堂一二三| 国产精品一区二区果冻传媒| 欧美亚日韩国产aⅴ精品中极品| 久久欧美中文字幕| 美女www一区二区| 欧美性高清videossexo| 中文字幕日韩一区二区| 国产成人自拍网| 日韩女优av电影| 日韩有码一区二区三区| 在线观看日韩电影| 亚洲欧美日韩系列| av在线免费不卡| 国产精品无人区| 国产麻豆视频一区| 久久综合久久99| 捆绑变态av一区二区三区| 555www色欧美视频| 午夜精品久久久久影视| 在线观看91视频| 亚洲精选视频免费看| 成a人片亚洲日本久久| 国产欧美精品一区二区色综合| 加勒比av一区二区| 久久久久亚洲蜜桃| 国产成人av影院| 欧美—级在线免费片| 懂色av一区二区三区免费看| 久久精品亚洲国产奇米99| 国产一区二区主播在线| 精品三级av在线| 紧缚奴在线一区二区三区| 精品久久久久99| 国产一区二区精品久久91| 国产日韩精品一区二区三区在线| 国产剧情av麻豆香蕉精品| 国产午夜久久久久| 丁香婷婷综合色啪| 中文字幕一区二区三区蜜月| 91日韩精品一区| 尤物视频一区二区| 欧美精品成人一区二区三区四区| 日本成人在线网站| 久久久91精品国产一区二区三区| 成人综合激情网| 亚洲精品日日夜夜| 91精品国产综合久久小美女| 狠狠色丁香婷婷综合| 国产精品乱人伦| 欧美在线播放高清精品| 蜜臀av亚洲一区中文字幕| 久久精品视频在线看| 色综合夜色一区| 丝袜美腿亚洲综合| 久久免费视频一区| 日本高清不卡aⅴ免费网站| 日韩精品免费专区| 国产欧美一区二区三区鸳鸯浴| 99久久综合99久久综合网站| 亚洲国产精品久久艾草纯爱| 精品国产一二三| 99re成人精品视频| 免费成人av在线| 国产精品的网站| 欧美成人精品高清在线播放| 成人黄色a**站在线观看| 五月婷婷色综合| 中文字幕免费不卡| 欧美一级一区二区| av动漫一区二区| 精品亚洲国产成人av制服丝袜 | 成人免费视频国产在线观看| 亚洲精品日韩专区silk| 欧美mv日韩mv亚洲| 91高清视频免费看| 处破女av一区二区| 狠狠色狠狠色综合日日91app| 一区二区在线观看视频| 久久欧美一区二区| 91精品福利在线一区二区三区| 波波电影院一区二区三区| 乱一区二区av| 亚洲电影视频在线| 亚洲另类在线制服丝袜| 国产三级精品视频| 日韩一区二区免费在线观看| 在线亚洲一区观看| 99r国产精品| www.欧美.com| 国产成人午夜精品影院观看视频 | 日本女人一区二区三区| 亚洲乱码国产乱码精品精的特点 | 欧美精选一区二区| 91社区在线播放| 99精品视频在线观看| 国产福利一区二区三区视频| 久久爱另类一区二区小说| 日本成人在线看| 日韩精品三区四区| 免费久久99精品国产| 首页欧美精品中文字幕| 午夜精品免费在线| 日产精品久久久久久久性色| 亚洲地区一二三色| 亚洲1区2区3区视频| 亚洲国产综合91精品麻豆| 一区二区三区欧美视频| 亚洲精品日韩专区silk | 久久久久久影视| 2020国产成人综合网| 欧美一二三四区在线| 欧美国产禁国产网站cc| 久久久久国产成人精品亚洲午夜 | 国产精品中文字幕日韩精品| 国产综合成人久久大片91| 美女诱惑一区二区| 激情图片小说一区| 国产成a人亚洲精| 成人91在线观看| 色悠悠久久综合| 欧美日本免费一区二区三区| 91.麻豆视频| 久久久美女毛片| 国产精品三级电影| 一区二区三区不卡视频在线观看| 一区2区3区在线看| 蜜桃视频一区二区三区在线观看| 九九**精品视频免费播放| 国产成人综合亚洲91猫咪| 99精品1区2区| 欧美丰满少妇xxxxx高潮对白| 91精品国产免费| 国产喂奶挤奶一区二区三区| 自拍偷拍欧美激情| 图片区小说区区亚洲影院| 极品尤物av久久免费看| av电影一区二区| 欧美日韩国产一级| 久久久国产综合精品女国产盗摄| 亚洲欧洲日本在线| 同产精品九九九| 国产伦精一区二区三区| 色狠狠一区二区| 精品少妇一区二区三区免费观看 | 国产精品亚洲午夜一区二区三区| www..com久久爱| 欧美高清dvd| 中文字幕av一区 二区| 亚洲成在人线免费| 成人h动漫精品一区二| 69精品人人人人| 亚洲人成网站在线| 国产在线不卡一卡二卡三卡四卡| 色成人在线视频| 久久精品夜色噜噜亚洲a∨| 亚洲第四色夜色| 91美女视频网站| 亚洲三级视频在线观看| 日韩电影在线看| 色女孩综合影院| 国产拍揄自揄精品视频麻豆| 日本伊人精品一区二区三区观看方式| 福利一区福利二区| 欧美成人三级电影在线| 亚洲一本大道在线| 99在线视频精品| 久久亚洲精品国产精品紫薇| 五月天激情小说综合| 99精品久久99久久久久| 国产亚洲精品7777| 久久激情五月激情| 4438x亚洲最大成人网| 亚洲一区二区3| 99精品欧美一区二区三区综合在线| 精品久久国产老人久久综合| 天使萌一区二区三区免费观看| 91久久精品一区二区三区| 中文字幕国产一区二区| 国产在线一区观看| 欧美成人video| 久久不见久久见免费视频1| 欧美日本高清视频在线观看| 一区二区三区不卡视频| 欧美在线观看一区| 亚洲精品中文在线观看| 色综合一个色综合| 亚洲色图清纯唯美| 在线免费亚洲电影| 亚洲大片在线观看| 日韩一区二区影院| 国产一区二区三区精品欧美日韩一区二区三区 | 成人在线一区二区三区|