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

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

?? cryptodevcfg.c

?? cryptoboot is set of tools for disk encryption on Unix. It is especially suited to encrypt root par
?? C
字號:
#include "all.h"#include <readline/readline.h>#include <readline/history.h>#include "shell.h"#include "cryptodevcfg.h"#include "globalvars.h"#include "ctabcommon.h"/* FIXME: TODO: Implement -da for loop detaching *//* FIXME: in every function check if device is already set up */intfillDeviceTab(out_tab)	xmlNodePtr** out_tab;{	xmlNodePtr dev, cur, root;	xmlNodePtr* tab;	int i;		/* Count elements */	root = xmlDocGetRootElement(ctab);	i = 0;	for (cur = root->xmlChildrenNode; cur != NULL; cur = cur->next)	{		if (0 == xmlStrcmp(cur->name, "devices"))		{			for (dev = cur->xmlChildrenNode; dev != NULL; dev = dev->next)				if (0 != xmlStrcmp(dev->name, "text"))					i++;			break;		}	}	tab = malloc(sizeof(xmlNodePtr) * (i + 1));		i = 0;	for (cur = root->xmlChildrenNode; cur != NULL; cur = cur->next)	{		if (0 == xmlStrcmp(cur->name, "devices"))		{			for (dev = cur->xmlChildrenNode; dev != NULL; dev = dev->next)				if (0 != xmlStrcmp(dev->name, "text"))				{					tab[i]= dev;					i++;				}			break;		}	}		tab[i] = (xmlNodePtr) NULL;		*out_tab = tab;		return 1;}intloopaesDetachDevice(loop)	char* loop;{	int ret;	int loopfd;	loopfd = open(loop, O_RDWR);	if (-1 == loopfd)		return -1;	ret = ioctl(loopfd, LOOP_CLR_FD, 0);	close(loopfd);	if (-1 == ret)		return -1;	else		return 1;}/* FIXME: Implement owner and perm of shared memery segment chacking *//* FIXME: detach loop device on any error! */intloopaesSetupDevice(mk, src, dst, out_error)	u_int8_t* mk;	char* src;	char* dst;	char** out_error;{	int rdev, ldev;	int ret;	u_int8_t internalMK[64][256/8];	struct loop_info64 li;	int i, j;	/* Opening real device and loop device */	rdev=open(src,O_RDWR);	if (rdev == -1)	{		*out_error = "Src device opening failed";		return -1;	}	ldev=open(dst,O_RDWR);	if (ldev == -1)	{		*out_error = "Dst device opening failed";		close(rdev);		return -1;	}		/* If dst device is busy, return error */	ret = ioctl(ldev, LOOP_GET_STATUS, &li);	if (ret != -1)	{		*out_error = "Dst device busy";		close(rdev);		close(ldev);		return -1;	}		/* Telling kernel module to setup loopback device */	ret=ioctl(ldev, LOOP_SET_FD, rdev);	if (ret == -1)	{		*out_error = "LOOP_SET_FD failed";		close(rdev);		close(ldev);		return -3;	}		/* Filling loopinfo structure */	memset(&li, 0, sizeof(li));	strncpy(li.lo_file_name, src, LO_NAME_SIZE);	li.lo_encrypt_type=CIPHER_AES;	li.lo_encrypt_key_size=128/8;		ret=ioctl(ldev, LOOP_SET_STATUS64, &li);	if (ret == -1)	{		*out_error = "LOOP_SET_STATUS64 failed";		close(rdev);		close(ldev);		return -4;	}		/* Prepare internal multi key */	for (j = 0; j < 64; j++)	{		for (i = 0; i < 128/8; i++)			internalMK[j][i] = mk[i+(j*128/8)];	}	ret=ioctl(ldev, LOOP_MULTI_KEY_SETUP, &internalMK[0][0]);	if (ret == -1)	{		*out_error = "LOOP_MULTI_KEY_SETUP failed";		close(rdev);		close(ldev);		ioctl(ldev, LOOP_CLR_FD, 0);		return -5;	}		/* Cleaning up */	close(rdev);	close(ldev);		return 1;}intplainloopSetupDevice(src, dst, out_error)	char* src;	char* dst;	char** out_error;{	int rdev, ldev;	int ret;	struct loop_info64 li;		/* Opening real device and loop device */	rdev = open(src, O_RDWR);	if (rdev == -1)	{		*out_error = "Src device opening failed";		return -1;	}	ldev = open(dst, O_RDWR);	if (ldev == -1)	{		*out_error = "Dst device opening failed";		close(rdev);		return -1;	}	/* If dst device is busy, return error */	ret = ioctl(ldev, LOOP_GET_STATUS, &li);	if (ret != -1)	{		*out_error = "Dst device busy";		close(rdev);		close(ldev);		return -1;	}	/* Telling kernel module to setup loopback device */	ret = ioctl(ldev, LOOP_SET_FD, rdev);	if (ret == -1)	{		*out_error = "LOOP_SET_FD failed";		close(rdev);		close(ldev);		return -3;	}	/* Cleaning up */	close(rdev);	close(ldev);		return 1;}intloopaesGetMultiKey(out_dmk, device)	u_int8_t** out_dmk;	xmlNodePtr device;{	int ret, i;	xmlChar* emkt;	u_int8_t* emk;	u_int8_t* dmk;	AES_KEY ik;	xmlNodePtr cur;		/* Find multikey node */	for (cur = device->xmlChildrenNode; cur != NULL; cur = cur->next)	{		if (0 == xmlStrcmp(cur->name, "multikey128"))		{			emkt = xmlNodeListGetString(ctab, cur->xmlChildrenNode, 1);			cleanWhiteSpace((char**)(&emkt));			ret = hex2byte(&emk, emkt, 64*128/8);			xmlFree(emkt);			if (ret == -1)				return -1;							/* Decrypt multikey using masterKey */			AES_set_decrypt_key(authdata, 128, &ik);			dmk = malloc(64*128/8);			if (NULL == dmk)				return -1;				/* Decryption in ECB mode - safe for random data such as keys */			for (i = 0; i < 64; i++)				AES_ecb_encrypt(emk + (i*128/8), dmk + (i*128/8),												&ik, AES_DECRYPT);			*out_dmk = dmk;			return 1;		}	}	return -1;}voiddriverDispatcher(node)	xmlNodePtr node;{	xmlChar* driverName;	xmlChar* laSrc;	xmlChar* laDst;	xmlChar* plSrc;	xmlChar* plDst;	char* errorString;	int ret;	u_int8_t* laDMultiKey;		driverName = (xmlChar*) node->name;	if (0 == xmlStrcmp(driverName, "loopaes"))	{		ret = loopaesGetMultiKey(&laDMultiKey, node);						if (-1 == ret)		{			printf("Internal error.\n");			exit(1);		}						laSrc = xmlGetProp(node, "src");		laDst = xmlGetProp(node, "dst");					printf("Setting device %s on %s using Loop-AES... ",					 laSrc, laDst);		ret = loopaesSetupDevice(laDMultiKey,laSrc,laDst,&errorString);		free(laDMultiKey);		xmlFree(laSrc);		xmlFree(laDst);		if (ret == -1)			printf("error: %s.\n", errorString);		else			printf("ok.\n");	}	else if (0 == xmlStrcmp(driverName, "dmcrypt"))	{		printf("Setting device X on Y using dm-crypt... ");		printf("FIXME: not implemented.\n");	}	else if (0 == xmlStrcmp(driverName, "plainloop"))	{		plSrc = xmlGetProp(node, "src");		plDst = xmlGetProp(node, "dst");		printf("Setting device %s on %s using plain loop... ",					 plSrc, plDst);		ret = plainloopSetupDevice(plSrc, plDst, &errorString);		xmlFree(plSrc);		xmlFree(plDst);		if (ret == -1)			printf("error: %s.\n", errorString);		else			printf("ok.\n");	}	else	{		printf("Unknown crypto-driver: %s\n", driverName);		return;	}	return;}void setupAllDevices(){		xmlNodePtr* dtab;	xmlChar* action;	int i;	int wasSetupFlag;		fillDeviceTab(&dtab);	/* Setup all devices without associated actions */	wasSetupFlag = 0;	for (i = 0; NULL != dtab[i]; i++)	{		/* Check if this device has action */		action = xmlGetProp(dtab[i], "action");		if (NULL == action)		{			wasSetupFlag = 1;			driverDispatcher(dtab[i]); /* no action - we can setup device */		}		else			free(action);	}	if (0 == i)		printf("No devices defined in configuration file.\n");	else if (0 == wasSetupFlag)		printf("No devices ready for setup.\n");		free(dtab);		return;}intmain(argc, argv)	int argc;	char** argv;{	int ret;	/* xml */	ret = getAuthdata(0);	if (ret == -1)	{		perror("Shared memory error");		exit(1);	}	ctab = xmlParseFile(CONFIG_FILE);	if (ctab == NULL)	{		fprintf(stderr, "Config file parsing error.\n");		shmdt(authdata);		exit(1);	}		if ((argc > 1) && (0 == strcmp(argv[1], "-a")))		setupAllDevices();	else	{		printf("cryptodevcfg 0.1\n\n");		ret = checkMKEncMagic();		if (1 == ret)		{			printf("Type 'help' for help, 'quit' to exit program.\n");			printf("You can use command completion with TAB key.\n");					openShell();		}	}			/* FIXME: on each exit do shmdt and free doc? */	shmdt(authdata);	xmlFreeDoc(ctab);		return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文一区一区三区高中清不卡| 92国产精品观看| 欧美人动与zoxxxx乱| 亚洲精品伦理在线| 欧美性猛交一区二区三区精品| 亚洲人成7777| 欧美三级蜜桃2在线观看| 午夜欧美一区二区三区在线播放| 欧美三级中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 26uuu精品一区二区在线观看| 国产毛片精品国产一区二区三区| 久久精品亚洲一区二区三区浴池| 成人丝袜18视频在线观看| 亚洲精品日产精品乱码不卡| 欧美日韩久久一区二区| 免费人成精品欧美精品| 久久久久久久性| 色综合天天性综合| 五月天丁香久久| 精品国产乱码久久久久久牛牛| 国产精品正在播放| 亚洲乱码国产乱码精品精小说| 欧美色综合网站| 激情综合色播激情啊| 国产精品国产三级国产专播品爱网| 色综合中文字幕国产| 亚洲人123区| 日韩一区二区三区在线观看| 高清在线成人网| 丝袜国产日韩另类美女| 欧美激情一区二区三区在线| 欧美性做爰猛烈叫床潮| 国精产品一区一区三区mba桃花 | 国产精品午夜电影| 欧洲色大大久久| 奇米精品一区二区三区在线观看| 国产拍欧美日韩视频二区| 欧美亚一区二区| 国产69精品久久久久毛片| 日韩精品电影在线观看| 自拍偷在线精品自拍偷无码专区| 日韩一级片在线播放| 色综合夜色一区| 激情欧美日韩一区二区| 婷婷开心久久网| 1区2区3区精品视频| 欧美精品一区视频| 欧美日韩国产精选| 色婷婷久久久综合中文字幕| 国产乱一区二区| 免费观看91视频大全| 亚洲综合在线五月| 国产精品久久久久久久岛一牛影视 | 7777精品伊人久久久大香线蕉经典版下载 | 国产盗摄女厕一区二区三区| 亚洲永久精品国产| 日韩理论片中文av| 国产午夜精品福利| xvideos.蜜桃一区二区| 日韩一区二区三区视频| 欧美亚洲国产一区二区三区va | 国产在线播放一区| 肉色丝袜一区二区| 亚洲一区二区三区四区五区黄 | 懂色av噜噜一区二区三区av| 久久精品国产77777蜜臀| 亚洲va韩国va欧美va精品| 最好看的中文字幕久久| 中文在线资源观看网站视频免费不卡| 欧美一区午夜视频在线观看| 欧美亚洲国产一区二区三区va| 97精品国产露脸对白| 成人av网站在线| 福利一区二区在线| 波多野结衣精品在线| 成人综合婷婷国产精品久久蜜臀 | 欧美激情综合五月色丁香 | 99re这里只有精品视频首页| 韩国视频一区二区| 久久精品国产77777蜜臀| 免费成人深夜小野草| 午夜电影网亚洲视频| 午夜影院久久久| 亚洲成人综合在线| 亚洲成人精品影院| 香蕉加勒比综合久久 | 偷拍亚洲欧洲综合| 三级精品在线观看| 麻豆精品在线观看| 国产一区二区免费在线| 国产精品一二三四| 99久久精品国产毛片| 色狠狠综合天天综合综合| 色综合 综合色| 欧美性受xxxx黑人xyx| 欧美精品少妇一区二区三区| 91精品久久久久久蜜臀| 久久亚洲综合色| 国产精品理论片在线观看| 樱桃视频在线观看一区| 五月综合激情网| 老司机精品视频导航| 丁香啪啪综合成人亚洲小说 | 在线日韩一区二区| 在线综合+亚洲+欧美中文字幕| 91精品国产高清一区二区三区蜜臀 | 欧美性色黄大片手机版| 欧美一区二区人人喊爽| 国产亚洲欧美激情| 亚洲视频1区2区| 日韩国产欧美一区二区三区| 国产福利不卡视频| 色综合色狠狠综合色| 日韩欧美你懂的| 国产精品久久久久久一区二区三区 | 欧美日韩综合不卡| 精品久久久久久久人人人人传媒| 国产精品国产三级国产专播品爱网| 亚洲国产精品一区二区久久| 久久丁香综合五月国产三级网站| 成人综合婷婷国产精品久久| 欧美日韩aaaaaa| 国产色婷婷亚洲99精品小说| 亚洲图片欧美色图| 国产成人小视频| 欧美男男青年gay1069videost| 日韩高清一区二区| 国产.欧美.日韩| 欧美日韩亚洲综合在线| 国产精品女主播av| 蜜桃视频第一区免费观看| 成人avav影音| 久久综合久久综合亚洲| 亚洲成在线观看| 91女人视频在线观看| 日韩午夜三级在线| 一区二区三区欧美| 国产精品伊人色| 欧美一区永久视频免费观看| 亚洲美女屁股眼交| 国产99久久精品| 精品国产网站在线观看| 亚洲激情av在线| 成人午夜短视频| 日韩欧美专区在线| 亚洲成人动漫一区| 色网综合在线观看| 亚洲视频免费在线| 成人a免费在线看| 国产欧美精品一区二区色综合| 久草在线在线精品观看| 欧美日韩高清影院| 亚洲永久免费av| 91福利资源站| 亚洲丝袜精品丝袜在线| 成人免费毛片片v| 亚洲国产电影在线观看| 国产一区二区影院| 精品999在线播放| 精品一区二区久久久| 日韩色视频在线观看| 五月天激情综合网| 91精品国产综合久久精品麻豆| 亚洲一区二区三区小说| 欧美亚洲综合另类| 亚洲尤物在线视频观看| 欧美色男人天堂| 亚洲成人一区二区| 欧美日韩不卡一区| 全国精品久久少妇| 精品国产乱码久久久久久1区2区| 蜜桃视频一区二区| 久久女同互慰一区二区三区| 韩国av一区二区三区| 久久精品一区二区三区不卡| 国产大片一区二区| 国产精品麻豆久久久| 色一情一乱一乱一91av| 一区二区日韩av| 在线综合亚洲欧美在线视频| 蜜桃精品视频在线观看| 久久综合九色综合久久久精品综合| 久久国产精品无码网站| 欧美经典三级视频一区二区三区| 99视频精品全部免费在线| 一区二区高清视频在线观看| 欧美日韩在线播放| 久久福利视频一区二区| 国产日产欧美一区二区视频| 99re在线精品| 视频一区二区中文字幕| 精品国一区二区三区| 丁香另类激情小说| 一区二区三区欧美| 欧美r级电影在线观看| 不卡一卡二卡三乱码免费网站| 亚洲欧美另类久久久精品2019| 欧美日韩在线播放一区| 狠狠狠色丁香婷婷综合激情|