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

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

?? leap_nas.c

?? MD5、RSA加解密,主要用在Linux環(huán)境執(zhí)行。有編寫makefile提供編譯
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <openssl/rsa.h>#include <openssl/md5.h>#include "utility.h"#define READ_STATUS  0#define WRITE_STATUS 1#define EXCPT_STATUS 2#define SOCKET int#define MAX_STRING_LEN  1024#define BUFSIZE  4096static char i_host[MAX_STRING_LEN];  /* site name */static char i_port[MAX_STRING_LEN];  /* port number */char buf[BUFSIZE];int sendKeyToController(int keylen, unsigned char key[]);SOCKET xnet_select(SOCKET s, int sec, int usec, short x);int tcp_connect(const char *host, const unsigned short port);int SendData(SOCKET fd,char *buffer,int len);int ReadData(SOCKET fd,char *buffer,int len);int GetPubKey(unsigned char *pucPubKeyData,unsigned long KeyDataLen, RSA* *pubRsa);int decSessionKeybyRsaPubKey(RSA *rsa, unsigned char *InData, unsigned long ulDataLen,							 unsigned char *ucKey, unsigned long *pulKeyLen);int encSessionKeybyRsaPriKey(RSA *rsa, unsigned char *ucKey, unsigned long ulKeyLen,							 unsigned char *outData, unsigned long *pulOutLen){	return (*pulOutLen = RSA_private_encrypt(ulKeyLen, ucKey, outData, rsa, RSA_PKCS1_PADDING));}int decSessionKeybyRsaPubKey(RSA *rsa, unsigned char *InData, unsigned long ulDataLen,							 unsigned char *ucKey, unsigned long *pulKeyLen){	return (*pulKeyLen = RSA_public_decrypt(ulDataLen, InData, ucKey, rsa, 1));}int encSessionKeybyRsaPubKey(RSA *rsa, unsigned char *ucKey, unsigned long ulKeyLen,							 unsigned char *outData, unsigned long *pulOutLen){	return (*pulOutLen = RSA_public_encrypt(ulKeyLen, ucKey, outData, rsa, 1));}static char *hexstr(unsigned char *buf,int len){	    const char *set = "0123456789abcdef";	    static char str[65],*tmp;	    unsigned char *end;	    if (len > 32)		        len = 32;	    end = buf + len;	    tmp = &str[0];	    while (buf < end)		    {		        *tmp++ = set[ (*buf) >> 4 ];		        *tmp++ = set[ (*buf) & 0xF ];        buf ++;		    }	    *tmp = 0;	    return str;	}void xMD5(unsigned char *ucData,unsigned long DataLen,char *MD5_Result){	unsigned char *md;		md = MD5(ucData,DataLen,NULL);	sprintf(MD5_Result,"%s",hexstr(md,MD5_DIGEST_LENGTH));}int GetPriKey(unsigned char *pucPriKeyData, unsigned long KeyDataLen, RSA* *priRsa){	const unsigned char *Pt = pucPriKeyData;	*priRsa = d2i_RSAPrivateKey(NULL, &Pt, KeyDataLen);	if(priRsa == NULL)	{		printf("priRsa == NULL!\n");		return 0x22;	}	return 0;}int GetPubKey(unsigned char *pucPubKeyData,unsigned long KeyDataLen, RSA* *pubRsa){	const unsigned char *Pt = pucPubKeyData;	*pubRsa = d2i_RSAPublicKey(NULL, &Pt, KeyDataLen);	if(pubRsa == NULL)	{		printf("pubRsa == NULL!\n");		return 0x31;	}	return 0;}int ReadData(SOCKET fd,char *buffer,int len){	int n;	if (xnet_select(fd, 3, 0, READ_STATUS)>0)    {        /* display the server response */        memset(buffer,0,len);        n = read(fd, buffer, len);	}        else    {        return 0;    }		return  n;}int SendData(SOCKET fd,char *buffer,int len){    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {        write(fd, buffer, len);    }    else    {        //WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }    return 1;	}int tcp_connect(const char *host, const unsigned short port){	unsigned long non_blocking = 1;    unsigned long blocking = 0;    int ret = 0;    char * transport = "tcp";    struct hostent      *phe;   /* pointer to host information entry    */    struct protoent *ppe;       /* pointer to protocol information entry*/    struct sockaddr_in sin;     /* an Internet endpoint address  */    SOCKET s;                    /* socket descriptor and socket type    */    int error;        memset(&sin, 0, sizeof(sin));    sin.sin_family = AF_INET;    if ((sin.sin_port = htons(port)) == 0)    {        WriteLog("invalid port \"%d\"", port);        abort();    }    /* Map host name to IP address, allowing for dotted decimal */    if ( phe = gethostbyname(host) )        memcpy(&sin.sin_addr, phe->h_addr, phe->h_length);    else        if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE )        {            WriteLog("can't get \"%s\" host entry", host);            abort();        }    /* Map transport protocol name to protocol number */    if ( (ppe = getprotobyname(transport)) == 0)    {        WriteLog("can't get \"%s\" protocol entry", transport);        abort();    }    /* Allocate a socket */    s = socket(PF_INET, SOCK_STREAM, ppe->p_proto);    if (s < 0)    {        WriteLog("can't create socket: %s", strerror(errno));        abort();    }    ioctl(s,FIONBIO,&non_blocking);   if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) == -1)    {        struct timeval tv;        fd_set writefds;        tv.tv_sec = 10;         tv.tv_usec = 0;        FD_ZERO(&writefds);        FD_SET(s, &writefds);        if (select(s+1,NULL,&writefds,NULL,&tv) != 0)        {            if (FD_ISSET(s,&writefds))            {                int len=sizeof(error);				if (getsockopt(s, SOL_SOCKET, SO_ERROR,  (char *)&error, &len) < 0)                    goto error_ret;                if (error != 0)                    goto error_ret;            }            else                goto error_ret; //timeout or error happen        }        else goto error_ret; ;        ioctl(s,FIONBIO,&blocking);    }    else    {error_ret:        close(s);        WriteLog("can't connect to %s:%d", host, port);        abort();    }    return s;}SOCKET xnet_select(SOCKET s, int sec, int usec, short x){    int st = errno;    struct timeval to;    fd_set fs;    to.tv_sec = sec;    to.tv_usec = usec;    FD_ZERO(&fs);    FD_SET(s, &fs);    switch (x)    {    case READ_STATUS:        st = select(s+1, &fs, 0, 0, &to);        break;    case WRITE_STATUS:        st = select(s+1, 0, &fs, 0, &to);        break;    case EXCPT_STATUS:        st = select(s+1, 0, 0, &fs, &to);        break;    }    return(st);}int main (int argc, char *argv[]){    SOCKET fd;    int i,j,n,ret;    FILE* fp;    char szSN[64],szHostName[64],szKeyServerIP[32],szPort[10];    char szActiveKey[128];	RSA *pRsaPubKey_KMC = NULL;	RSA *pRsaPriKey_NAS = NULL;	RSA *pRsaPubKey_NAS = NULL;	int PubKey_NAS_len=0; 	int PriKey_NAS_len = 0;    unsigned long encrypted_len = 0;    unsigned char ucEncryptedKey[4096] = {0};    unsigned long decrypted_len = 0;    unsigned char ucDecryptedKey[4096] = {0};	unsigned char ucKey[4096] = {0};	char szPriMD5[64] = {0};	char szPubMD5[64] ={0};	WriteLog("Program start.");   	fp = fopen("/etc/sn.txt","r");	if (fp==NULL) {		WriteLog("Can't open sn.txt file.");		return(0);	}    get_param_value(fp,"SN",szSN,"=");    get_param_value(fp,"HOSTNAME",szHostName,"=");    get_param_value(fp,"KEYSERVERIP",szKeyServerIP,"=");    get_param_value(fp,"PORT",szPort,"=");    WriteLog("Serial Number = %s",szSN);    WriteLog("Host Name = %s",szHostName);    WriteLog("Key Server IP = %s",szKeyServerIP);    WriteLog("Key Server Port = %s",szPort);	fclose(fp);    strcpy(i_host,szKeyServerIP);    strcpy(i_port,szPort);    /* make connection to the server */    fd = tcp_connect(szKeyServerIP, (unsigned short)atoi(szPort));    //fd = tcp_connect(i_host, (unsigned short)atoi(i_port));	// connected .....	// INIT_REG , contain serial number and host name	strcpy(buf,szSN);	strcat(buf,"-");	strcat(buf,szHostName);	if (SendData(fd,buf,strlen(buf))==0)	{		WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);		return 0;	}	n = ReadData(fd,buf,BUFSIZE);	if (strstr(buf,"OK")==0) {		WriteLog("Error : %s",buf);		return 0;	}	else		WriteLog("Receive OK message,Waitting for KMC-pub key");	// Waitting for KMC-pub	n = ReadData(fd,buf,BUFSIZE);	WriteLog("Receve KMC-pub, size=%d",n);	fp = fopen("public.key","wb");	if (fp==NULL) {		WriteLog("Can't create public.key file");		return 0;	}	fwrite(buf,1,n,fp);	pRsaPubKey_KMC = RSA_new();    GetPubKey(buf, n, &pRsaPubKey_KMC);	memset(buf,0,sizeof(buf));	strcpy(buf,szSN);	strcat(buf,"-");	strcat(buf,szHostName);	WriteLog("encSessionKeybyRsaPubKey-->%s",buf);	encSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, strlen(buf), ucEncryptedKey, &encrypted_len);	    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {       n = write(fd, ucEncryptedKey, encrypted_len);    }    else    {        WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }	fclose(fp);	WriteLog("Waitting for DK-pub/prk");	n = ReadData(fd,buf,BUFSIZE);	WriteLog("Private Key size=%s",buf);	PriKey_NAS_len = atoi(buf);	WriteLog("Waitting for NAS private key...");	i = atoi(buf);	j = 0;	fp = fopen("pri.key","wb");	while (j<i) 	{		n = ReadData(fd,buf,BUFSIZE);		if (n==0) {			WriteLog("Receive NAS Private Key error");			return 0;		}		decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);		j += decrypted_len;		fwrite(ucDecryptedKey,1,decrypted_len,fp);		SendData(fd,"OK",2);  	}	WriteLog("done.");	fclose(fp);	n = ReadData(fd,buf,BUFSIZE);	WriteLog("Public Key size=%s",buf);	WriteLog("Waitting for NAS public key...");	i = atoi(buf);	PubKey_NAS_len =i;	j = 0;		fp = fopen("pub.key","wb");	while (j<i) 	{		n = ReadData(fd,buf,BUFSIZE);		if (n==0) {			WriteLog("Recevie NAS Public key error");			return 0;		}		decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);		j += decrypted_len;		fwrite(ucDecryptedKey,1,decrypted_len,fp);		SendData(fd,"OK",2);  	}	WriteLog("done.");	fclose(fp);	pRsaPriKey_NAS = RSA_new();	pRsaPubKey_NAS = RSA_new();	fp = fopen("pri.key","rb");	fread(ucKey,1,PriKey_NAS_len,fp);	xMD5(ucKey,PriKey_NAS_len,szPriMD5);	GetPriKey(ucKey, PriKey_NAS_len, &pRsaPriKey_NAS);	memset(ucKey,0,sizeof(ucKey));	fclose(fp);	fp = fopen("pub.key","rb");	fread(ucKey,1,PubKey_NAS_len,fp);	xMD5(ucKey,PubKey_NAS_len,szPubMD5);	GetPubKey(ucKey, PubKey_NAS_len, &pRsaPubKey_NAS);	memset(ucKey,0,sizeof(ucKey));	fclose(fp);	WriteLog("------MD5 Calc Result------");	WriteLog("Private Key MD5=%s",szPriMD5);	WriteLog("Public Key MD5=%s",szPubMD5);	WriteLog("-----------------------------------");	// Receive MD5 for Public / Private Key	WriteLog("Waiting for Private/Public Key(MD5) data from KMC");	n = ReadData(fd,buf,BUFSIZE);	decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);	WriteLog("Private Key[MD5] =%s",ucDecryptedKey);	SendData(fd,"OK",2);  	n = ReadData(fd,buf,BUFSIZE);	decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);	WriteLog("Public Key[MD5] =%s",ucDecryptedKey);	encSessionKeybyRsaPriKey(pRsaPriKey_NAS, szPriMD5, strlen(szPriMD5), ucEncryptedKey, &encrypted_len);    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {       n = write(fd, ucEncryptedKey, encrypted_len);    }    else    {        WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }	n = ReadData(fd,buf,BUFSIZE);  // Waiting from OK from KMC	encSessionKeybyRsaPriKey(pRsaPriKey_NAS, szPubMD5, strlen(szPubMD5), ucEncryptedKey, &encrypted_len);    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {       n = write(fd, ucEncryptedKey, encrypted_len);    }    else    {        WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }	n = ReadData(fd,buf,BUFSIZE);  // Waiting from OK from KMC	// Got_DK_KP_Msg	memset(buf,0,sizeof(buf));	memset(ucEncryptedKey,0,sizeof(ucEncryptedKey));	strcpy(buf,"REQUIRE ACTIVE KEY");	encSessionKeybyRsaPriKey(pRsaPriKey_NAS, buf, strlen(buf), ucEncryptedKey, &encrypted_len);	    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {       n = write(fd, ucEncryptedKey, encrypted_len);    }    else    {        WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }	WriteLog("Waitting for active key");	n = ReadData(fd,buf,BUFSIZE);	memset(ucDecryptedKey,0,sizeof(ucDecryptedKey));	decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);	WriteLog("Receive active key, length=%d",strlen(ucDecryptedKey));	for (i=0;i<decrypted_len;i++) {		WriteLog("Key = %2x",ucDecryptedKey[i]);	}	memset(buf,0,sizeof(buf));	memset(ucEncryptedKey,0,sizeof(ucEncryptedKey));	int sendResult = sendKeyToController(decrypted_len,ucDecryptedKey);	if (sendResult==0)	{		// fail		WriteLog("Send active key to device fail !");		strcpy(buf,"ERROR");	}	else 	{		strcpy(buf,"GOT_THE_DK");	}		encSessionKeybyRsaPriKey(pRsaPriKey_NAS, buf, strlen(buf), ucEncryptedKey, &encrypted_len);	    if (xnet_select(fd, 0, 500, WRITE_STATUS)>0)    {       n = write(fd, ucEncryptedKey, encrypted_len);    }    else    {        WriteLog("Socket I/O Write Timeout %s:%s", i_host, i_port);        return 0;    }	if (sendResult==0) {		return 0;	}	WriteLog("Waitting for commit");	n = ReadData(fd,buf,BUFSIZE);	memset(ucDecryptedKey,0,sizeof(ucDecryptedKey));	decSessionKeybyRsaPubKey(pRsaPubKey_KMC, buf, n, ucDecryptedKey, &decrypted_len);	WriteLog("Recevie commit message : %s",ucDecryptedKey);	remove("pri.key");	remove("pub.key");	remove("public.key");	return(0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女视频一区二区在线观看| 亚洲国产欧美在线| 亚洲chinese男男1069| 不卡一区二区三区四区| 久久精品夜色噜噜亚洲a∨| 青青青爽久久午夜综合久久午夜 | 亚洲在线免费播放| 丁香五精品蜜臀久久久久99网站 | 成人h精品动漫一区二区三区| 欧美精品一区二区三| 美国十次了思思久久精品导航| 欧美日本韩国一区二区三区视频| 国产精品美女久久久久高潮| 国产高清亚洲一区| 久久精品视频免费观看| 国产成人自拍网| 国产欧美一区二区三区在线看蜜臀| 国产成人亚洲综合a∨婷婷| 国产精品久久久久久久蜜臀| 99久久精品一区| 亚洲激情男女视频| 欧美人xxxx| 免费日韩伦理电影| 久久久亚洲午夜电影| 色一情一乱一乱一91av| 美国av一区二区| 亚洲欧美偷拍卡通变态| 日韩免费高清av| 91麻豆福利精品推荐| 另类专区欧美蜜桃臀第一页| 亚洲国产成人自拍| 91精品国产一区二区三区 | 成人黄色小视频| 亚洲人成网站在线| 精品日韩成人av| 91视频在线看| 久久狠狠亚洲综合| 一区二区三区自拍| 国产三级一区二区| 91精品国产综合久久香蕉麻豆| 国产成人免费视| 日韩avvvv在线播放| 国产精品青草久久| 亚洲欧美日韩国产成人精品影院| 欧美岛国在线观看| 欧美三级乱人伦电影| 成人黄色免费短视频| 蜜臀av一区二区| 亚洲电影第三页| 综合亚洲深深色噜噜狠狠网站| 26uuu精品一区二区| 欧美日韩在线直播| 91在线一区二区| 国产成人午夜高潮毛片| 精品一区二区三区蜜桃| 日韩高清一区二区| 亚洲国产欧美一区二区三区丁香婷| 欧美激情资源网| 久久精子c满五个校花| 91精品久久久久久久久99蜜臂| 一本久久a久久精品亚洲| 国产成人精品1024| 国产一区二区剧情av在线| 日韩黄色免费网站| 亚洲综合在线电影| 亚洲人成在线观看一区二区| 国产精品视频第一区| 国产婷婷色一区二区三区四区 | 99免费精品视频| 成人精品小蝌蚪| 风间由美性色一区二区三区| 久久99热国产| 蜜桃久久精品一区二区| 免费欧美高清视频| 久久精品国产一区二区三区免费看| 午夜欧美一区二区三区在线播放| 亚洲美女在线一区| 一区2区3区在线看| 亚洲一级不卡视频| 性欧美大战久久久久久久久| 亚洲一区日韩精品中文字幕| 一卡二卡欧美日韩| 亚洲成人免费视频| 亚洲第一狼人社区| 天天操天天综合网| 日本中文在线一区| 久久精品国产**网站演员| 久久99在线观看| 国产麻豆视频精品| 99久久伊人久久99| 在线观看av一区| 7777女厕盗摄久久久| 日韩一区二区三区在线| 精品国产百合女同互慰| 国产午夜一区二区三区| 中文字幕一区二区三区色视频 | 久久久不卡影院| 国产精品欧美经典| 亚洲午夜一二三区视频| 日韩电影免费在线看| 国产一区91精品张津瑜| 成人激情av网| 欧美精品一级二级三级| 精品国产乱码久久| 国产精品福利一区| 午夜激情久久久| 国产久卡久卡久卡久卡视频精品| av在线免费不卡| 欧美午夜视频网站| 久久一夜天堂av一区二区三区| 中文字幕亚洲一区二区va在线| 亚洲一区二三区| 狠狠色丁香婷婷综合久久片| 91一区二区三区在线观看| 在线综合+亚洲+欧美中文字幕| 久久久亚洲高清| 亚洲午夜精品网| 高清不卡一二三区| 欧美色图激情小说| 国产欧美1区2区3区| 夜夜操天天操亚洲| 国产不卡免费视频| 欧美精品少妇一区二区三区| 日本一区免费视频| 亚洲www啪成人一区二区麻豆 | 日韩av一二三| 成人av在线资源网站| 91麻豆精品国产综合久久久久久| 欧美激情在线一区二区| 日韩精品久久久久久| 波多野结衣在线aⅴ中文字幕不卡| 欧美精选一区二区| 亚洲天堂成人在线观看| 久久精品72免费观看| 欧亚一区二区三区| 国产精品无人区| 国产在线观看一区二区| 欧美日韩在线电影| 中文字幕日韩欧美一区二区三区| 日韩av中文字幕一区二区 | 大白屁股一区二区视频| 日韩限制级电影在线观看| 一区二区三区鲁丝不卡| 国产v综合v亚洲欧| 精品国产伦一区二区三区观看体验 | 国产成人免费在线| 91精品在线观看入口| 亚洲一区在线观看网站| 99免费精品视频| 亚洲国产精品成人综合色在线婷婷| 日本aⅴ免费视频一区二区三区| 色婷婷国产精品| 中文字幕永久在线不卡| 国产福利不卡视频| 26uuu色噜噜精品一区二区| 三级亚洲高清视频| 欧美伊人久久大香线蕉综合69| 国产精品久久久久久久岛一牛影视| 激情综合五月婷婷| 日韩女优制服丝袜电影| 丝袜美腿成人在线| 欧美主播一区二区三区| 有码一区二区三区| 日本韩国一区二区| 亚洲激情中文1区| 色视频欧美一区二区三区| 亚洲乱码国产乱码精品精的特点| av电影在线观看一区| 国产精品进线69影院| av成人老司机| 椎名由奈av一区二区三区| 91网页版在线| 亚洲精品高清在线| 在线观看亚洲一区| 亚洲成人免费视| 欧美一区二区在线视频| 久草在线在线精品观看| 久久人人97超碰com| 国产成人精品免费一区二区| 亚洲国产成人自拍| 91蜜桃在线观看| 亚洲一区二区三区三| 欧美一级一级性生活免费录像| 蜜臀av国产精品久久久久 | 成人免费观看av| 亚洲精品中文在线影院| 欧美最猛性xxxxx直播| 日韩精品色哟哟| 久久久国产午夜精品| av亚洲精华国产精华| 亚洲一区精品在线| 日韩欧美电影一二三| 国产精品99久久久久久有的能看| 亚洲欧洲无码一区二区三区| 91福利视频久久久久| 欧美aaaaaa午夜精品| 亚洲国产成人私人影院tom| 色婷婷激情综合| 久久99久久久欧美国产| 亚洲国产精品黑人久久久|