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

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

?? bruteforce.cpp

?? 黨員管理系統(tǒng)
?? CPP
字號(hào):
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include "rijndael.h"

void display(UINT8 *buffer, int len, int mode = 0);
void main (int argc, char * argv[])
{
	enum Format{txt, jpg};        //運(yùn)行模式:ascii文件,jpg圖形
	Format format = txt;
	UINT8 key[16];                //key值
	UINT8 *plainText;             //明文所在的緩沖區(qū)
	UINT8 *output;                //密文所在的緩沖區(qū)
	UINT8 *output2;               //brute force時(shí)的臨時(shí)密文緩沖區(qū) 
	char buffer[150];
	char *fn=NULL;
	bool strict;                  //jpg模式下是否采用嚴(yán)格標(biāo)準(zhǔn)的jpg文件格式頭
	bool decrypted = false;			//為true時(shí),對(duì)輸入進(jìn)行破解,此時(shí),參數(shù)-b無(wú)效
	bool bruteforce = true;        //加密之后是否進(jìn)行brute force
	FILE *pT = NULL;               //指向明文所在文件
	FILE *pK = NULL;				//指向Key所在文件
	FILE *pE = NULL;			   //指向密文所在文件
	FILE *pR = NULL;               //記錄運(yùn)行情況的文件
	FILE *pJ = NULL;               //jpg模式下的.jpg文件
	int len;                       //密文長(zhǎng)度
	int len1;                      //burte force時(shí)的臨時(shí)密文長(zhǎng)度
	int keyLen = 0;				   //key的長(zhǎng)度(byte)
	int plainTextLen;			   //明文的長(zhǎng)度
	int i;
	
	//處理輸入?yún)?shù)
	i = 1;

	//第一個(gè)參數(shù)可為不帶'-'的明文文件名,只有當(dāng)文件后綴為.jpg時(shí),才將模式設(shè)置為jpg,其他情況一概視為txt
	if(argc > 1 && argv[i][0] != '-')
	{
		if(strlen(argv[1]) > strlen(".jpg") && !strcmp(&argv[1][strlen(argv[1])-strlen(".jpg")], ".jpg"))
			format = jpg;
		if((pT = fopen( argv[i++], "rb" )) == NULL)
		{
			printf( "The file %s could not be opened for read purpose\n", argv[1]);
			exit(1);
		}
	}

	/*接下去分析其他輸入?yún)?shù),其中
	1. -e encrypted已被加密的文件
	2. -t plaintext.txt指定明文文件,并設(shè)置為txt模式
	3. -j pic.jpg 指定明文文件,并設(shè)置為jpg模式
	4. -k key指定key值,其由不多于16個(gè)0-9組成
	5. -b 表示不進(jìn)行brute force
	6. -o 指定加密后的輸出文件名
	*/
	while(i < argc)	
	{
		if(argv[i][0] == '-')
		{
			if(strlen(argv[i]) < 2)
			{
				printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
				exit(1);
			}
			switch(argv[i][1])
			{
			case 'e':
				decrypted = true;
				if(i == argc -1)
				{
					printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
					exit(1);
				}
				if(pT)
				{
					printf("The input file has been designted more than once\n");
					exit(1);
				}
				if((pT = fopen( argv[++i], "rb" )) == NULL )
				{
					printf( "The file %s could not be opened for read purpose\n", argv[i]);
					exit(1);
				}
				break;
			case 't':
			case 'j':

				if(argv[i][1] == 'j')
					format = jpg;
				else format = txt;
			
				if(i == argc -1)
				{
					printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
					exit(1);
				}
				if(pT)
				{
					printf("The plaintext file has been designted more than once\n");
					exit(1);
				}
				if((pT = fopen( argv[++i], "rb" )) == NULL )
				{
					printf( "The file %s could not be opened for read purpose\n", argv[i]);
					exit(1);
				}
				break;
			case 'k':
				if(i == argc -1)
				{
					printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
					exit(1);
				}
				i++;
				memset(key, 0, 16);				
				keyLen = strlen(argv[i]) < 16? strlen(argv[i]):16;
				memcpy(key, argv[i], keyLen);
				break;
			case 'o':
				if(i == argc -1)
				{
					printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
					exit(1);
				}
				if(pE)
				{
					printf("The encrypted ouput file has been designted more than once\n");
					exit(1);
				}
				if((pE = fopen( argv[++i], "wb" )) == NULL )
				{
					fn=argv[i];
					printf( "The file %s could not be opened for write purpose\n", argv[i]);
					exit(1);
				}
				break;
			case 'b':
				bruteforce = false;
				break;
			default:
				printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
				exit(1);
				break;
			}
		}
		else 
		{
			printf("Usage: rijndeal [-e encrypted | -t plaintext.txt | -j pic.jpg ] [-k key] [-o encrypted] [-b]\n");
			exit(1);
		}
		i++;
	}
	
	//如未指定明文文件,采用默認(rèn)的當(dāng)前目錄下的plaintext.txt
	if(pT == NULL)
		if((pT = fopen( "plaintext.txt", "rb" )) == NULL )
		{
			printf( "The file 'plainText.txt' could not be opened for read purpose\n");
			exit(1);
		}
		
	//如未指定key值,則從默認(rèn)的當(dāng)前目錄下文件key讀出
	if(keyLen == 0)
	{
		memset(key, 0, 16);
		if((pK = fopen( "key", "rb")) == NULL )
		{
			printf("The file 'key' could not be opened\n");
			exit(1);
		}
		keyLen = fread(key, sizeof(UINT8), 16, pK);
		fclose(pK);
	}
    
	//運(yùn)行情況記錄在當(dāng)前目錄下的result文件中
	if((pR = fopen("result", "wb")) == NULL)
	{
		printf("The file 'result' couldn't be opend for write purpose\n");
		exit(1);
	}

	//讀取明文,保存至plainText中
	if(fseek(pT, 0, SEEK_END))
	{
		printf("The pointer of file %s couldn't be sought\n", argv[1]);
		exit(1);
	}

	if((plainTextLen = ftell(pT)) == -1)
	{
		printf("Error occur when getting the length of the file %s\n", argv[1]);
		exit(1);
	}

	if(fseek(pT, 0, SEEK_SET))
	{
		printf("The pointer of file %s couldn't be sought\n", argv[1]);
		exit(1);
	}
	
	plainText = new UINT8[plainTextLen];
	plainTextLen = fread(plainText, sizeof(UINT8), plainTextLen, pT);
	fclose(pT);

	//如在.jpg模式下,則判斷.jpg文件是否是標(biāo)準(zhǔn)的.jpg格式
	if( format == jpg && !decrypted )
	{
		strict = true;
		if(memcmp(plainText, "\xFF\xD8\xFF\xE0\x00\x10JFIF", 10))
		{
			strict = false;
			if(memcmp(plainText, "\xFF\xD8\xFF", 3))
			{
				printf("file %s isn't compitable with the jpg format\n", argv[1]);
				exit(1);
			}
		}
	}

	//輸出key值到控制臺(tái)和result文件中,記錄運(yùn)行狀況
	sprintf(buffer, "Key(%d):\t", 16);
	printf(buffer);
	display(key, 16, 1);
	fwrite(buffer, sizeof(char), strlen(buffer), pR);
	fwrite(key, sizeof(UINT8), 16, pR);

	sprintf(buffer, "\n-------------------------------------------------------------------\n");
	printf(buffer);
	fwrite(buffer, sizeof(char), strlen(buffer), pR);

	//在txt模式下,輸出明文到控制臺(tái)和result文件
	if(format == txt && !decrypted)
	{
		sprintf(buffer, "Plaintext(%d):\t", plainTextLen);
		printf(buffer);
		fwrite(buffer, sizeof(char), strlen(buffer), pR);

		display(plainText, plainTextLen, 1);
		fwrite(plainText, sizeof(UINT8), plainTextLen, pR);

		sprintf(buffer,"\n------------------------------------------------------------\n");
		printf(buffer);
		fwrite(buffer, sizeof(char), strlen(buffer), pR);
	
	}
///////////////////////////////////////////////////////////////////////////////////
///////////////////////      Decrypt       ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
	if(decrypted)
	{
		Rijndael rin;
		rin.init(Rijndael::CBC, Rijndael::Decrypt, key, Rijndael::Key16Bytes);
		output = new UINT8[plainTextLen];
		len = rin.padDecrypt(plainText, plainTextLen, output);
		if(len >= 0)
		{			
			sprintf(buffer, "Decrypt(%d) succeeds\n",len);
			printf(buffer);
			fwrite(buffer, sizeof(char), strlen(buffer), pR);

			fclose(pR);
			if(pE == NULL)
				pE = fopen("Encrypted", "wb");
			if(pE)
			{
				fwrite(output, sizeof(UINT8), len, pE);	
				fclose(pE);
			}
		}
		else
		{
			printf("Encrypted data has been corrupted\n");
			exit(1);
		}
		exit(0);
	}
////////////////////////////////////////////////////////////////////////////////////
//////////////////////         Encrypt      ////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//加密明文,利用Rijndael的實(shí)例rin來(lái)實(shí)現(xiàn)
	output = new UINT8[plainTextLen + 16];
	
	Rijndael rin;
	
	rin.init(Rijndael::CBC, Rijndael::Encrypt,key, Rijndael::Key16Bytes);
	len = rin.padEncrypt(plainText, plainTextLen, output);

	if(format==txt)
		printf("text mode:\n\n");
	else
	{
		printf("jpg mode:\n");
		printf("As the jpg files is always big, the possible result is saved in the corresponding files but not displayed here!\n\n");
	}
	if(len >= 0)
	{
		printf("Encrypted(%d):\t\n",len);
		if(format == txt)
		{
			display(output, len);	
			printf("\n");
		}
		if(fn==NULL)
			printf("The result is saved in the file \"Encrypted\"!\n");
		else
			printf("The result is saved in the file \"%s\"!\n",fn);
		
		printf("\n------------------------------------------------------------\n");
		
		if(pE == NULL)
			pE = fopen("Encrypted", "wb");
		if(pE)
		{
			fwrite(output, sizeof(UINT8), len, pE);	
			fclose(pE);
		}
	}
	else
	{
		printf("Error occur during encrypting\n");
		exit(1);
	}
	if(!bruteforce) 
		exit(0);
///////////////////////////////////////////////////////////////////////////////////////////////////	
/////////////////         try bruteforce                 //////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
//記錄運(yùn)行狀況
	//sprintf(buffer,"------------------------------------------------------------\n");
//	printf(buffer);
	fwrite(buffer, sizeof(char), strlen(buffer), pR);
	sprintf(buffer,"--------------------Try to bruteforce-----------------------\n");
	printf(buffer);
	fwrite(buffer, sizeof(char), strlen(buffer), pR);
	sprintf(buffer,"------------------------------------------------------------\n");
	printf(buffer);
	fwrite(buffer, sizeof(char), strlen(buffer), pR);

	output2 = new UINT8[len];
	for( i = 0; i < keyLen; i++)
	{
		key[i] = '0';
	}
//txt模式下下的brute force
	if(format == txt)
	{
		//printf("Txt mode:\n");
		while(1)
		{
			rin.init(Rijndael::CBC,Rijndael::Decrypt,key,Rijndael::Key16Bytes);
			len1 = rin.padDecrypt(output,len,output2);
		
			if(len1 >= 0)
			{
				for(i = 0; i < len1 && !(output2[i]&0x80); i++);
				if(i == len1) 
				{
					sprintf(buffer, "Key(%d):\t", 16);
					printf(buffer);
					display(key, 16, 1);
					fwrite(buffer, sizeof(char), strlen(buffer), pR);
					fwrite(key, sizeof(UINT8), 16, pR);
				
					sprintf(buffer, "\nMessage(%d)\t", len1);
					printf(buffer);
					display(output2, len1, 1);

					fwrite(buffer, sizeof(char), strlen(buffer), pR);
					fwrite(output2, sizeof(UINT8), len1, pR);
					sprintf(buffer, "\n--------------------------------------------------------------------\n");
					printf(buffer);
					fwrite(buffer, sizeof(char), strlen(buffer), pR);
				}
			}
			for(i = 0; i < keyLen; i++)
			{
				key[i] = '0'+(++key[i] - '0') % 10;
				if(i == (keyLen - 1) && key[i] == '0')
				{
					printf("The decrypted data saved in the file \"result\"!!\n\n");
					printf("Try bruteforce end\n");
					exit(1);
				}
				if(key[i]-'0')
					break;				
			}       
		}	
	}
//jpg模式下brute force
	else
	{
	//	printf("jpg mode:\n");
		fn=new char[150];
		while(1)
		{
			rin.init(Rijndael::CBC,Rijndael::Decrypt,key,Rijndael::Key16Bytes);
			//在此先破解第一塊,看是否符合jpg文件的頭部格式,如不符合,則無(wú)需破解其他明文塊。
			len1 = rin.blockDecrypt(output, 128, output2);

			if((strict && !memcmp(output2, "\xFF\xD8\xFF\xE0\x00\x10JFIF", 10) )|| (!strict && !memcmp(output2, "\xFF\xD8\xFF", 3)))
			{
				rin.init(Rijndael::CBC,Rijndael::Decrypt,key,Rijndael::Key16Bytes);
				len1 = rin.padDecrypt(output,len,output2);
				if(len1>=0)
				{
					memcpy(fn, key, keyLen);
					memcpy(fn+keyLen, ".jpg", 5);
					if((pJ = fopen(fn, "wb")) == NULL)
					{
						printf("file %s cann't be created", fn);
						exit(3);
					}
					fwrite(output2, sizeof(UINT8), len1, pJ);
					fclose(pJ);
					

					sprintf(buffer, "\nFind key:");
					printf(buffer);
					fwrite(buffer, sizeof(char), strlen(buffer), pR);

					display(key,16);
					fwrite(key, sizeof(UINT8), 16, pR);	
					printf("\nThe decrypted data saved in the file \"%s\"!!\n",fn);

					sprintf(buffer, "\n--------------------------------------------------------------------\n");
					printf(buffer);
					fwrite(buffer, sizeof(char), strlen(buffer), pR);
				}
			}
		//遍歷所有可能的key值
				
			for(i = 0; i < keyLen; i++)
			{
				key[i] = '0' + (++key[i] - '0') % 10;
				if(i == (keyLen - 1) && key[i] == '0')
				{
					printf("Try burteforce end\n");
					exit(1);
				}
				if(key[i]-'0')
					break;	
			}
		}
	
	}
	fclose(pR);
}

//輸出信息到控制臺(tái)
void display(UINT8 *buffer, int len, int mode)
{
	int i;

	if(mode < 2)
		for(i = 0; i < len; i++)
		{
			printf("%x%x ", buffer[i] >> 4, buffer[i] & 0x0f);
			if(i == len - 1) 
				break;
			if(i%16 == 15)
				printf("\n\t\t");
			else if(i%4 == 3) 
				printf("\t");
		}

	if(mode)
	{
		printf("\nASCII format(%d):", len);
		if(len > 16 )printf("\n");
		for(i = 0; i < len; i++)
			printf("%c",buffer[i]);

	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美主播一区二区三区| 欧美一区二区播放| 蜜桃精品在线观看| 中文字幕乱码亚洲精品一区| 在线成人免费观看| gogo大胆日本视频一区| 精品亚洲国产成人av制服丝袜| 亚洲视频网在线直播| 2020国产精品自拍| 欧美疯狂做受xxxx富婆| 99精品久久99久久久久| 国产乱码精品一区二区三区忘忧草 | 国产欧美在线观看一区| 91麻豆精品国产91久久久久| 色综合色狠狠天天综合色| 国产一区激情在线| 日韩国产精品久久久| 亚洲欧美日韩在线不卡| 国产女同互慰高潮91漫画| 日韩一本二本av| 欧美日韩亚洲另类| 色婷婷综合久色| 成人免费毛片aaaaa**| 国产一区二区在线看| 捆绑调教一区二区三区| 天天av天天翘天天综合网 | 国内精品视频一区二区三区八戒| 亚洲国产一区二区三区青草影视| 中文字幕在线一区| 国产欧美一区二区三区在线老狼 | 国产亚洲视频系列| 精品少妇一区二区三区日产乱码| 91麻豆精品国产91久久久资源速度| 在线亚洲精品福利网址导航| 99久久精品一区| 99综合影院在线| 99精品国产热久久91蜜凸| 不卡一区二区在线| 成人国产精品免费| 成人免费毛片aaaaa**| 成人综合婷婷国产精品久久蜜臀| 国产精品夜夜爽| 国产精品亚洲第一区在线暖暖韩国| 国产做a爰片久久毛片| 国产精品99久久久久久似苏梦涵| 国产精品一区二区91| 高清国产一区二区| 北条麻妃国产九九精品视频| av激情综合网| 日本精品一区二区三区高清| 欧美日韩国产一区二区三区地区| 678五月天丁香亚洲综合网| 91精品国产高清一区二区三区 | 国产午夜亚洲精品理论片色戒| 精品国产伦一区二区三区观看方式 | 亚洲色图欧美激情| 一区二区三区电影在线播| 亚洲国产日日夜夜| 日本午夜一本久久久综合| 捆绑调教美女网站视频一区| 国产精品69毛片高清亚洲| 成人av动漫在线| 欧美吞精做爰啪啪高潮| 91精品欧美一区二区三区综合在| 精品国产免费久久| 中文字幕亚洲区| 天天操天天综合网| 国产一区二区导航在线播放| av一本久道久久综合久久鬼色| 在线观看日韩av先锋影音电影院| 欧美日韩色一区| www国产精品av| 日韩一区日韩二区| 日韩二区在线观看| 成人激情电影免费在线观看| 在线免费观看成人短视频| 日韩天堂在线观看| 日韩美女视频19| 日韩av电影一区| a美女胸又www黄视频久久| 欧美精品一卡二卡| 国产精品欧美一区二区三区| 亚洲a一区二区| 国产传媒日韩欧美成人| 欧洲精品一区二区三区在线观看| 精品国产91九色蝌蚪| 亚洲欧美乱综合| 激情五月激情综合网| 欧美性大战久久久久久久蜜臀 | 夜夜嗨av一区二区三区网页| 精品一二三四在线| 欧美在线免费播放| 国产欧美日韩激情| 男人的天堂久久精品| a级高清视频欧美日韩| 精品人在线二区三区| 亚洲免费成人av| 国产一区二区在线看| 制服.丝袜.亚洲.中文.综合| 亚洲女与黑人做爰| 精品中文字幕一区二区| 欧洲精品在线观看| 国产精品久久久一区麻豆最新章节| 日本不卡视频在线观看| 色88888久久久久久影院按摩| 久久久久久夜精品精品免费| 亚洲大片一区二区三区| 91色综合久久久久婷婷| 国产无人区一区二区三区| 青青草97国产精品免费观看| 91国产视频在线观看| 中文字幕精品综合| 国产精品一区二区在线观看网站| 91麻豆精品国产无毒不卡在线观看| 亚洲激情图片qvod| 97久久精品人人做人人爽50路| 精品国产污网站| 麻豆视频一区二区| 欧美电影在线免费观看| 亚洲高清免费在线| 91国产福利在线| 亚洲天堂2016| 99久久精品免费看| 成人免费小视频| av资源网一区| 国产精品久久久久久久久久免费看| 国产一区二区三区黄视频 | 亚洲综合小说图片| 一本大道久久a久久精二百| 亚洲欧美在线观看| 成人高清在线视频| 国产精品天美传媒沈樵| 国产成人免费网站| 国产亚洲欧美一区在线观看| 国产专区欧美精品| 精品国产在天天线2019| 国内精品视频666| 欧美精品一区男女天堂| 国产在线一区二区综合免费视频| 日韩小视频在线观看专区| 久久不见久久见免费视频1| 精品99999| 高清在线观看日韩| 中文字幕综合网| 在线亚洲精品福利网址导航| 亚洲成a人v欧美综合天堂 | 1000精品久久久久久久久| av电影天堂一区二区在线 | 国产精品国产馆在线真实露脸| 成人一区二区三区视频在线观看| 欧美国产日韩在线观看| 成人精品免费看| 亚洲女子a中天字幕| 欧美体内she精高潮| 日韩高清电影一区| 亚洲精品在线观看视频| 成人国产视频在线观看| 亚洲最大成人综合| 日韩视频不卡中文| 成人一区二区在线观看| 亚洲亚洲精品在线观看| 欧美一区二区网站| 国产一区视频导航| 亚洲三级免费观看| 欧美一三区三区四区免费在线看 | 国产成人鲁色资源国产91色综| 国产精品久久久久久久久免费丝袜 | 色视频欧美一区二区三区| 午夜不卡av免费| 亚洲精品在线观| 91免费版在线| 日本特黄久久久高潮| 国产午夜精品久久久久久久 | 99久久精品国产导航| 丝袜亚洲另类欧美综合| 国产亚洲一区字幕| 欧美主播一区二区三区美女| 另类的小说在线视频另类成人小视频在线 | 欧美特级限制片免费在线观看| 日韩高清不卡在线| 中文字幕在线不卡一区| 制服丝袜亚洲精品中文字幕| 粉嫩在线一区二区三区视频| 亚洲小少妇裸体bbw| 国产拍揄自揄精品视频麻豆| 欧美日韩中文字幕一区| 国产精品亚洲一区二区三区妖精| 亚洲影院在线观看| 久久久久国产成人精品亚洲午夜| 在线观看亚洲a| 粉嫩av一区二区三区在线播放 | 亚洲va韩国va欧美va精品| 国产亚洲精品aa午夜观看| 色天天综合色天天久久| 国产麻豆视频一区| 亚洲成av人影院| 国产精品对白交换视频| 亚洲精品在线观看网站| 欧美日韩视频在线第一区| 99精品视频在线观看免费|