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

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

?? licence.c

?? rdesktop是一個開放源碼的Window NT中斷服務器的客戶端
?? C
字號:
/*   rdesktop: A Remote Desktop Protocol client.   RDP licensing negotiation   Copyright (C) Matthew Chapman 1999-2005      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"#include <openssl/rc4.h>extern char g_username[64];extern char g_hostname[16];static uint8 g_licence_key[16];static uint8 g_licence_sign_key[16];BOOL g_licence_issued = False;/* Generate a session key and RC4 keys, given client and server randoms */static voidlicence_generate_keys(uint8 * client_random, uint8 * server_random, uint8 * pre_master_secret){	uint8 master_secret[48];	uint8 key_block[48];	/* Generate master secret and then key material */	sec_hash_48(master_secret, pre_master_secret, client_random, server_random, 'A');	sec_hash_48(key_block, master_secret, server_random, client_random, 'A');	/* Store first 16 bytes of session key as MAC secret */	memcpy(g_licence_sign_key, key_block, 16);	/* Generate RC4 key from next 16 bytes */	sec_hash_16(g_licence_key, &key_block[16], client_random, server_random);}static voidlicence_generate_hwid(uint8 * hwid){	buf_out_uint32(hwid, 2);	strncpy((char *) (hwid + 4), g_hostname, LICENCE_HWID_SIZE - 4);}/* Present an existing licence to the server */static voidlicence_present(uint8 * client_random, uint8 * rsa_data,		uint8 * licence_data, int licence_size, uint8 * hwid, uint8 * signature){	uint32 sec_flags = SEC_LICENCE_NEG;	uint16 length =		16 + SEC_RANDOM_SIZE + SEC_MODULUS_SIZE + SEC_PADDING_SIZE +		licence_size + LICENCE_HWID_SIZE + LICENCE_SIGNATURE_SIZE;	STREAM s;	s = sec_init(sec_flags, length + 4);	out_uint8(s, LICENCE_TAG_PRESENT);	out_uint8(s, 2);	/* version */	out_uint16_le(s, length);	out_uint32_le(s, 1);	out_uint16(s, 0);	out_uint16_le(s, 0x0201);	out_uint8p(s, client_random, SEC_RANDOM_SIZE);	out_uint16(s, 0);	out_uint16_le(s, (SEC_MODULUS_SIZE + SEC_PADDING_SIZE));	out_uint8p(s, rsa_data, SEC_MODULUS_SIZE);	out_uint8s(s, SEC_PADDING_SIZE);	out_uint16_le(s, 1);	out_uint16_le(s, licence_size);	out_uint8p(s, licence_data, licence_size);	out_uint16_le(s, 1);	out_uint16_le(s, LICENCE_HWID_SIZE);	out_uint8p(s, hwid, LICENCE_HWID_SIZE);	out_uint8p(s, signature, LICENCE_SIGNATURE_SIZE);	s_mark_end(s);	sec_send(s, sec_flags);}/* Send a licence request packet */static voidlicence_send_request(uint8 * client_random, uint8 * rsa_data, char *user, char *host){	uint32 sec_flags = SEC_LICENCE_NEG;	uint16 userlen = strlen(user) + 1;	uint16 hostlen = strlen(host) + 1;	uint16 length = 128 + userlen + hostlen;	STREAM s;	s = sec_init(sec_flags, length + 2);	out_uint8(s, LICENCE_TAG_REQUEST);	out_uint8(s, 2);	/* version */	out_uint16_le(s, length);	out_uint32_le(s, 1);	out_uint16(s, 0);	out_uint16_le(s, 0xff01);	out_uint8p(s, client_random, SEC_RANDOM_SIZE);	out_uint16(s, 0);	out_uint16_le(s, (SEC_MODULUS_SIZE + SEC_PADDING_SIZE));	out_uint8p(s, rsa_data, SEC_MODULUS_SIZE);	out_uint8s(s, SEC_PADDING_SIZE);	out_uint16_le(s, LICENCE_TAG_USER);	out_uint16_le(s, userlen);	out_uint8p(s, user, userlen);	out_uint16_le(s, LICENCE_TAG_HOST);	out_uint16_le(s, hostlen);	out_uint8p(s, host, hostlen);	s_mark_end(s);	sec_send(s, sec_flags);}/* Process a licence demand packet */static voidlicence_process_demand(STREAM s){	uint8 null_data[SEC_MODULUS_SIZE];	uint8 *server_random;	uint8 signature[LICENCE_SIGNATURE_SIZE];	uint8 hwid[LICENCE_HWID_SIZE];	uint8 *licence_data;	int licence_size;	RC4_KEY crypt_key;	/* Retrieve the server random from the incoming packet */	in_uint8p(s, server_random, SEC_RANDOM_SIZE);	/* We currently use null client keys. This is a bit naughty but, hey,	   the security of licence negotiation isn't exactly paramount. */	memset(null_data, 0, sizeof(null_data));	licence_generate_keys(null_data, server_random, null_data);	licence_size = load_licence(&licence_data);	if (licence_size > 0)	{		/* Generate a signature for the HWID buffer */		licence_generate_hwid(hwid);		sec_sign(signature, 16, g_licence_sign_key, 16, hwid, sizeof(hwid));		/* Now encrypt the HWID */		RC4_set_key(&crypt_key, 16, g_licence_key);		RC4(&crypt_key, sizeof(hwid), hwid, hwid);		licence_present(null_data, null_data, licence_data, licence_size, hwid, signature);		xfree(licence_data);		return;	}	licence_send_request(null_data, null_data, g_username, g_hostname);}/* Send an authentication response packet */static voidlicence_send_authresp(uint8 * token, uint8 * crypt_hwid, uint8 * signature){	uint32 sec_flags = SEC_LICENCE_NEG;	uint16 length = 58;	STREAM s;	s = sec_init(sec_flags, length + 2);	out_uint8(s, LICENCE_TAG_AUTHRESP);	out_uint8(s, 2);	/* version */	out_uint16_le(s, length);	out_uint16_le(s, 1);	out_uint16_le(s, LICENCE_TOKEN_SIZE);	out_uint8p(s, token, LICENCE_TOKEN_SIZE);	out_uint16_le(s, 1);	out_uint16_le(s, LICENCE_HWID_SIZE);	out_uint8p(s, crypt_hwid, LICENCE_HWID_SIZE);	out_uint8p(s, signature, LICENCE_SIGNATURE_SIZE);	s_mark_end(s);	sec_send(s, sec_flags);}/* Parse an authentication request packet */static BOOLlicence_parse_authreq(STREAM s, uint8 ** token, uint8 ** signature){	uint16 tokenlen;	in_uint8s(s, 6);	/* unknown: f8 3d 15 00 04 f6 */	in_uint16_le(s, tokenlen);	if (tokenlen != LICENCE_TOKEN_SIZE)	{		error("token len %d\n", tokenlen);		return False;	}	in_uint8p(s, *token, tokenlen);	in_uint8p(s, *signature, LICENCE_SIGNATURE_SIZE);	return s_check_end(s);}/* Process an authentication request packet */static voidlicence_process_authreq(STREAM s){	uint8 *in_token, *in_sig;	uint8 out_token[LICENCE_TOKEN_SIZE], decrypt_token[LICENCE_TOKEN_SIZE];	uint8 hwid[LICENCE_HWID_SIZE], crypt_hwid[LICENCE_HWID_SIZE];	uint8 sealed_buffer[LICENCE_TOKEN_SIZE + LICENCE_HWID_SIZE];	uint8 out_sig[LICENCE_SIGNATURE_SIZE];	RC4_KEY crypt_key;	/* Parse incoming packet and save the encrypted token */	licence_parse_authreq(s, &in_token, &in_sig);	memcpy(out_token, in_token, LICENCE_TOKEN_SIZE);	/* Decrypt the token. It should read TEST in Unicode. */	RC4_set_key(&crypt_key, 16, g_licence_key);	RC4(&crypt_key, LICENCE_TOKEN_SIZE, in_token, decrypt_token);	/* Generate a signature for a buffer of token and HWID */	licence_generate_hwid(hwid);	memcpy(sealed_buffer, decrypt_token, LICENCE_TOKEN_SIZE);	memcpy(sealed_buffer + LICENCE_TOKEN_SIZE, hwid, LICENCE_HWID_SIZE);	sec_sign(out_sig, 16, g_licence_sign_key, 16, sealed_buffer, sizeof(sealed_buffer));	/* Now encrypt the HWID */	RC4_set_key(&crypt_key, 16, g_licence_key);	RC4(&crypt_key, LICENCE_HWID_SIZE, hwid, crypt_hwid);	licence_send_authresp(out_token, crypt_hwid, out_sig);}/* Process an licence issue packet */static voidlicence_process_issue(STREAM s){	RC4_KEY crypt_key;	uint32 length;	uint16 check;	int i;	in_uint8s(s, 2);	/* 3d 45 - unknown */	in_uint16_le(s, length);	if (!s_check_rem(s, length))		return;	RC4_set_key(&crypt_key, 16, g_licence_key);	RC4(&crypt_key, length, s->p, s->p);	in_uint16(s, check);	if (check != 0)		return;	g_licence_issued = True;	in_uint8s(s, 2);	/* pad */	/* advance to fourth string */	length = 0;	for (i = 0; i < 4; i++)	{		in_uint8s(s, length);		in_uint32_le(s, length);		if (!s_check_rem(s, length))			return;	}	g_licence_issued = True;	save_licence(s->p, length);}/* Process a licence packet */voidlicence_process(STREAM s){	uint8 tag;	in_uint8(s, tag);	in_uint8s(s, 3);	/* version, length */	switch (tag)	{		case LICENCE_TAG_DEMAND:			licence_process_demand(s);			break;		case LICENCE_TAG_AUTHREQ:			licence_process_authreq(s);			break;		case LICENCE_TAG_ISSUE:			licence_process_issue(s);			break;		case LICENCE_TAG_REISSUE:		case LICENCE_TAG_RESULT:			break;		default:			unimpl("licence tag 0x%x\n", tag);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲h动漫在线| 欧美一级免费大片| 亚洲精品国产品国语在线app| 91免费版pro下载短视频| 亚洲女同一区二区| 欧美日韩国产美女| 免费成人深夜小野草| 亚洲精品一区二区三区福利 | 国产一区激情在线| 中文字幕av一区二区三区免费看| av电影天堂一区二区在线观看| 亚洲精品菠萝久久久久久久| 在线成人免费视频| 激情五月婷婷综合网| 欧美—级在线免费片| 色综合天天综合网国产成人综合天| 一区二区三区加勒比av| 欧美一区二区三级| 成人黄色小视频在线观看| 亚洲一区在线观看视频| 欧美成人性战久久| 99在线精品一区二区三区| 同产精品九九九| 国产欧美一区二区精品秋霞影院| 91福利视频网站| 国产最新精品精品你懂的| 亚洲精品中文字幕在线观看| 日韩欧美国产精品| 亚洲精品免费电影| 欧美中文字幕亚洲一区二区va在线 | 欧美三日本三级三级在线播放| 美腿丝袜亚洲三区| 亚洲欧美国产77777| 日韩三级免费观看| 91免费小视频| 精品一区二区三区在线观看| 18欧美亚洲精品| 欧美一级在线观看| 色94色欧美sute亚洲线路一ni| 久久精品国产99| 亚洲综合成人在线| 国产精品女人毛片| 久久综合色天天久久综合图片| 欧美日韩免费电影| 成人激情动漫在线观看| 久久超碰97人人做人人爱| 亚洲在线观看免费| 国产精品国产三级国产三级人妇| 亚洲精品一区在线观看| 欧美区视频在线观看| 一本到一区二区三区| 成人精品国产免费网站| 国内精品国产成人| 午夜激情久久久| 一区二区三区欧美日| 中文字幕一区二区在线观看| 久久蜜桃一区二区| 日韩三级在线免费观看| 在线综合视频播放| 欧美情侣在线播放| 欧美蜜桃一区二区三区| 欧美日韩一区二区三区四区五区| 99精品国产99久久久久久白柏| 成人免费毛片aaaaa**| 国产精品一二三| 国产一区二区三区黄视频 | 亚洲国产成人tv| 玉米视频成人免费看| 国产精品国模大尺度视频| 中文字幕乱码久久午夜不卡| 久久久久久久久99精品| 久久久美女艺术照精彩视频福利播放| 日韩一区二区精品葵司在线| 欧美美女喷水视频| 5858s免费视频成人| 在线综合+亚洲+欧美中文字幕| 欧美高清视频www夜色资源网| 欧美久久婷婷综合色| 欧美日韩极品在线观看一区| 欧美猛男gaygay网站| 这里只有精品电影| 精品精品国产高清a毛片牛牛| 久久这里只有精品首页| 国产免费观看久久| 中国色在线观看另类| 亚洲情趣在线观看| 午夜a成v人精品| 奇米色一区二区| 韩国精品免费视频| 国产精品一区二区91| 成人毛片在线观看| 色妹子一区二区| 欧美巨大另类极品videosbest| 日韩欧美一级二级| 国产女同互慰高潮91漫画| 国产精品欧美一级免费| 夜夜操天天操亚洲| 日韩不卡在线观看日韩不卡视频| 麻豆91精品视频| 国产成人av电影在线| 91免费版在线看| 欧美一区二区三区公司| 国产偷v国产偷v亚洲高清| 亚洲人精品午夜| 男人的j进女人的j一区| 国产成人av影院| 色婷婷av一区二区三区大白胸| 91精品国产综合久久国产大片| 久久精品夜色噜噜亚洲a∨| 亚洲人成7777| 久久精品99久久久| av日韩在线网站| 日韩三区在线观看| 亚洲欧美日韩国产中文在线| 免费久久精品视频| 一本久久a久久免费精品不卡| 日韩视频在线观看一区二区| 中文字幕在线不卡国产视频| 丝瓜av网站精品一区二区| 国产成人亚洲综合a∨婷婷| 欧美影片第一页| 久久久精品日韩欧美| 午夜精品久久久久久久99水蜜桃 | 欧美三电影在线| 久久精品一区二区三区四区| 亚洲二区视频在线| 成人看片黄a免费看在线| 欧美国产日韩一二三区| 欧美最猛黑人xxxxx猛交| 日韩你懂的电影在线观看| 中文字幕色av一区二区三区| 美女网站色91| av亚洲精华国产精华| 精品国产sm最大网站免费看| 亚洲国产一区二区三区| 不卡一区中文字幕| 欧美成人a视频| 日韩精品亚洲专区| 91黄色激情网站| 国产精品视频九色porn| 国产在线不卡一区| 日韩三级高清在线| 午夜欧美大尺度福利影院在线看| a级精品国产片在线观看| 久久久久97国产精华液好用吗| 日本不卡视频在线| 欧美日韩1区2区| 亚洲免费av网站| 成人a免费在线看| 国产农村妇女毛片精品久久麻豆 | 成人激情免费网站| 久久综合九色综合97婷婷 | 亚洲激情欧美激情| 国产成人av电影免费在线观看| 欧美成人精品福利| 美女视频一区在线观看| 欧美一区二区三区男人的天堂| 五月天久久比比资源色| 欧美视频在线一区| 亚洲欧美日韩一区二区三区在线观看| 成人黄页在线观看| 国产精品久久久久影院老司| 国产传媒日韩欧美成人| 亚洲国产精品精华液2区45| 国产一区二区免费在线| 国产免费观看久久| 99这里都是精品| 亚洲欧美偷拍另类a∨色屁股| 99国产精品久久久久久久久久久 | 成人美女在线视频| 国产精品久线在线观看| 97精品国产97久久久久久久久久久久 | 精品久久国产老人久久综合| 久久国产精品99精品国产| 欧美成人一区二区| 国产精品一区专区| 国产精品福利一区| 欧美在线视频日韩| 日韩不卡一区二区| 久久久久久久久久美女| 99久久免费视频.com| 亚洲综合色成人| 欧美一卡2卡3卡4卡| 国产一本一道久久香蕉| 最新成人av在线| 欧美日韩久久久一区| 美女一区二区视频| 国产情人综合久久777777| 99久久久无码国产精品| 亚洲国产精品视频| 欧美精品一区二区久久久| 波多野结衣视频一区| 亚洲另类春色国产| 日韩亚洲欧美在线观看| 高清免费成人av| 午夜天堂影视香蕉久久| 亚洲精品在线观看网站| 99国产一区二区三精品乱码| 爽爽淫人综合网网站| 中文字幕第一区综合|