Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Brutforce - Algorithmus in C mit Slavasoft QuickHashS.lib Library (MS C-Cpp) Update 4 Release - For Multicore Cpu

Mitglied: lowbyte1

lowbyte1 (Level 2) - Jetzt verbinden

02.03.2009, aktualisiert 24.08.2010, 6744 Aufrufe, 1 Danke

XOR-BASE
http://vpn23.homelinux.org

Eine mögliche Implementierung eines Bruteforce Algorithmus, für ( in meinem Fall) Hash's zu (finden)
Dieser Algorithmus Arbeitet mit Multiblen Threads.Um optimale Geschwindikeit zu erreichen.

Der eigentliche Algorithmus ist mit verschachtelten for() schleifen implementiert wie sie sehen können.
Dabei hat dieser Algorithmus (in meinen Augen) die einzige schwäche das er auf eine Zeichen breite von 15 beschränkt ist.
Was sich aber mit ein bisschen Tiparbeit easy erweitern lässt.

Dieser Algorithmus ist speziell für Multicore Systeme geschriben, da er mit multiblen Threads arbeitet und somit Multicore CPU's Optimal auslastet. Und somit eine hohe Geschwindikeit erreicht wird.




BF & Dictionary Hash Finder(Cracker) 1.11 by LB

01.
//========================================================================= 
02.
// 
03.
// File    : (BruteForce - Dictionary - Hybrid) Hash splitter v1.0.11 
04.
// 
05.
// Author  : Lowbyte 
06.
//                            
07.
// Create  : 03.03.2009, 03:27,  Long***** 
08.
// 
09.
// Last Up : 29.05.2009, 07:46,  Long****** 
10.
// 
11.
// Prog.L  : C 
12.
// 
13.
// Project : 0020N 
14.
// 
15.
// THX     : Jonny,Sebastian,Michaela,Ruben 
16.
//========================================================================= 
17.
 
18.
#include <windows.h> 
19.
#include <stdio.h> 
20.
#include <string.h> 
21.
#include <stdlib.h> 
22.
#include <sys/stat.h> 
23.
#include <time.h> 
24.
#include <math.h> 
25.
#include <stdlib.h> 
26.
#include "console.h" 
27.
#include "QuickHash.h" 
28.
 
29.
#define MAX_T	30 
30.
 
31.
#pragma comment( lib, "QuickHashS.lib" ) 
32.
 
33.
__inline int BF_(int width); 
34.
int BF(int sw); 
35.
int DIC(void); 
36.
unsigned char memory_reduction(unsigned char a_ptr ,unsigned char b_ptr); 
37.
unsigned char convchartohex(unsigned char c); 
38.
void (*calcstr) ( void* pDest, const char* pSrc ); 
39.
struct TABLE alpha_splitter(int sizeofalpha ,int thrinst); 
40.
DWORD WINAPI STATUS(LPVOID ThreadIns); 
41.
DWORD WINAPI THREAD0(LPVOID r); 
42.
 
43.
unsigned char chartable[100]; 
44.
unsigned char *chartable0[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ ", 
45.
						     "abcdefghijklmnopqrstuvwxyz ", 
46.
							 "1234567890", 
47.
							 "1234567890!\"#$%&'()*+,-./:;<=>?@[]^_`{| }", 
48.
							 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ", 
49.
							 "abcdefghijklmnopqrstuvwxyz!\"#$%&'()*+,-./:;<=>?@[]^_`{|} ", 
50.
							 "abcdefghijklmnopqrstuvwxyz1234567890 "}; 
51.
 
52.
unsigned char *Hash_Name[]={"MD2","MD4","MD5","SHA1","SHA2_256","SHA2_384","SHA2_512","RIPEMD128", 
53.
				   "RIPEMD160","RIPEMD256","RIPEMD320","PANAMA","TIGER"}; 
54.
 
55.
int Hash_Size[]={16,16,16,20,32,48,64,16,20,32,40,32,24}; 
56.
 
57.
 
58.
HANDLE HStat; 
59.
DWORD StatId; 
60.
HANDLE ThreadH[30][15]; 
61.
DWORD ThreadID[30][15]; 
62.
 
63.
 
64.
unsigned char hash_buf[250]; 
65.
unsigned char tmp_hash_buf[250]; 
66.
unsigned char table[250]; 
67.
unsigned char output_hash[130]; 
68.
unsigned char teil_pwd_buf[100]; 
69.
 
70.
unsigned char strbuf[31][31][250]; 
71.
 
72.
unsigned char tmpbuf[31][31][100]; 
73.
unsigned char digesthex[31][31][100]; 
74.
 
75.
long long count[30][30]={0}; 
76.
long long counter=0; 
77.
 
78.
/* Split tables */ 
79.
 
80.
struct TABLE { 
81.
 
82.
	int START[30]; 
83.
	int END[30]; 
84.
 
85.
} splitpos; 
86.
 
87.
long long len=0; 
88.
int stab; 
89.
int SIZEH=0; 
90.
int DIGESTSIZE=0; 
91.
char hashname[15]; 
92.
int modflag; 
93.
int ctable; 
94.
long slen; 
95.
long elen; 
96.
long elem; 
97.
int HYBRID=0; 
98.
int thrinstanz=0; 
99.
 
100.
FILE *fileptr; 
101.
 
102.
int main() 
103.
104.
 
105.
	int op=0; 
106.
 
107.
	/* console style */ 
108.
	setColor(8); 
109.
 
110.
	do 
111.
112.
		system("title LB                                                                         Powered by - Longvalley Computer Club -"); 
113.
		printf("\n - Hash splitter v1.0.11 -\n\n"); 
114.
		printf("Options:\n"); 
115.
 
116.
		printf("\n1. Brute-Force [ATK]"); 
117.
		printf("\n2. Dictionary [ATK]"); 
118.
		printf("\n3. Hybrid Brute-Force [ATK]"); 
119.
		printf("\n0. Exit\n\n"); 
120.
 
121.
		printf("Input:"); 
122.
		fflush(stdin); 
123.
		scanf("%1i" ,&op); 
124.
 
125.
		switch(op) { 
126.
 
127.
			case 1: BF(0); 
128.
					break; 
129.
			case 2: DIC(); 
130.
					break; 
131.
			case 3:	BF(1); 
132.
					break; 
133.
			case 0: return 0; 
134.
 
135.
		   default: printf("Wrong input !\n"); 
136.
					_sleep(2000); 
137.
					cls(); 
138.
					break; 
139.
140.
		cls(); 
141.
142.
	while(1); 
143.
 
144.
	return 0; 
145.
146.
 
147.
 
148.
 
149.
/* Dictionary ATK function */ 
150.
 
151.
int DIC(void) 
152.
153.
 
154.
	WIN32_FIND_DATA data; 
155.
	HANDLE h; 
156.
	struct stat attr; 
157.
	char tmp[126]; 
158.
	char hash_buf[250]; 
159.
	int mod; 
160.
	size_t table_len=0; 
161.
	size_t pass_len=0; 
162.
	long i=0; 
163.
	int rc=0; 
164.
	int d_flag=0; 
165.
	int f_flag=0; 
166.
	int s; 
167.
	int j ,m ,c;  
168.
	int flag=0; 
169.
 
170.
	cls(); 
171.
	printf("\nDICTIONARY HASH SPLITTER v1.0.11 by lb\n"); 
172.
	printf("\n"); 
173.
	printf("0 -MD2       7 -RIPEMD128 \n"); 
174.
	printf("1 -MD4       8 -RIPEMD192 \n"); 
175.
	printf("2 -MD5       9 -RIPEMD256 \n"); 
176.
	printf("3 -SHA1     10 -RIPEMD320 \n"); 
177.
	printf("4 -SHA256   11 -PANAMA    \n"); 
178.
	printf("5 -SHA384   12 -TIGER     \n"); 
179.
	printf("6 -SHA512                 \n"); 
180.
 
181.
	printf("\nInput mod:"); 
182.
	scanf("%2i", &mod); 
183.
 
184.
	/* Entsprechende adresse dem pointer zuweisen */ 
185.
	switch(mod) 
186.
187.
		case 0 : calcstr=SL_MD2_CalculateStr; break; 
188.
		case 1 : calcstr=SL_MD4_CalculateStr; break; 
189.
		case 2 : calcstr=SL_MD5_CalculateStr; break; 
190.
		case 3 : calcstr=SL_SHA1_CalculateStr; break; 
191.
		case 4 : calcstr=SL_SHA256_CalculateStr; break; 
192.
		case 5 : calcstr=SL_SHA384_CalculateStr; break; 
193.
		case 6 : calcstr=SL_SHA512_CalculateStr; break; 
194.
		case 7 : calcstr=SL_RIPEMD128_CalculateStr; break; 
195.
		case 8 : calcstr=SL_RIPEMD160_CalculateStr; break; 
196.
		case 9 : calcstr=SL_RIPEMD256_CalculateStr; break; 
197.
		case 10: calcstr=SL_RIPEMD320_CalculateStr; break; 
198.
		case 11: calcstr=SL_PANAMA_CalculateStr; break; 
199.
		case 12: calcstr=SL_TIGER_CalculateStr; break; 
200.
201.
 
202.
	/* Define digest size */ 
203.
	DIGESTSIZE = Hash_Size[mod]; 
204.
 
205.
	fflush(stdin); 
206.
	printf("\nInput Hash:"); 
207.
	fgets(&hash_buf[0] ,130 ,stdin); 
208.
	hash_buf[(strlen(hash_buf)-1)]='\0'; 
209.
 
210.
	/* Memory reduction */ 
211.
	for(j=0,m=0;(j<DIGESTSIZE);j++) { 
212.
		c = memory_reduction(hash_buf[m] ,hash_buf[m+1]); 
213.
		tmp_hash_buf[j]=c; 
214.
		m +=2; 
215.
216.
	tmp_hash_buf[DIGESTSIZE]='\0'; 
217.
 
218.
	strcpy(&output_hash[0] ,&hash_buf[0]); 
219.
	strcpy(hash_buf ,tmp_hash_buf); 
220.
 
221.
	do 
222.
223.
		rc=0; 
224.
		printf("\nInput dictionary or dictionaries of the path (FQPN):"); 
225.
		fflush(stdin); 
226.
		fgets(&table[0] ,250 ,stdin); 
227.
		table_len=strlen(table); 
228.
		table[(table_len)-1]='\0'; 
229.
		for(s=(int)strlen(table)-1;(s>0);s--){ 
230.
			if(table[s]=='\\'){ 
231.
				d_flag=1; 
232.
233.
			if(d_flag==1) 
234.
			break; 
235.
236.
		if(table[strlen(table)-4] == '.'){ 
237.
			f_flag=1; 
238.
239.
 
240.
		if( !((f_flag == 1) || (d_flag == 1)) ){ 
241.
			printf("wrong input !"); 
242.
			_sleep(2000); 
243.
			cls(); 
244.
			rc=1; 
245.
246.
247.
	while(rc); 
248.
 
249.
	if(d_flag==1) { 
250.
 
251.
		strcat(table ,"\\*"); 
252.
 
253.
		h = FindFirstFile(table, &data); 
254.
		do 
255.
256.
 
257.
			if(! strcmp(data.cFileName,".") ) { 
258.
				flag=1; 
259.
260.
			if(! strcmp(data.cFileName,"..") ) { 
261.
				flag=1; 
262.
263.
		 
264.
			if(flag!=1) { 
265.
 
266.
				strcpy(&tmp[0] ,&table[0]); 
267.
				strcpy(&tmp[strlen(tmp)-1] ,"\\"); 
268.
				strcat(tmp ,data.cFileName); 
269.
				stat(tmp, &attr); 
270.
 
271.
				if(attr.st_mode & S_IFDIR ) { 
272.
273.
				}else if(attr.st_mode & S_IFREG) { 
274.
 
275.
					printf("%s\n", data.cFileName); 
276.
					fileptr = fopen(tmp ,"r+"); 
277.
					if(fileptr==NULL){ 
278.
						printf("\nKann File nicht oeffnen / finden ...\n"); 
279.
						getchar(); 
280.
						return 0; 
281.
282.
 
283.
					while( fgets(&tmpbuf[0][0][0] ,250 ,fileptr) ){ 
284.
						pass_len = strlen(&tmpbuf[0][0][0]); 
285.
						tmpbuf[0][0][pass_len-1]='\0'; 
286.
 
287.
						/* Hashing */ 
288.
						(*calcstr)( &digesthex[0][0][0], &tmpbuf[0][0][0]); 
289.
 
290.
						i++; 
291.
 
292.
						if( ! strncmp(&hash_buf[0] ,&digesthex[0][0][0] ,DIGESTSIZE) ) { 
293.
							printf("\nLine:%li Cracked Hash :%s - Password :%s\n",i ,&output_hash[0] , &tmpbuf[0][0] ); 
294.
							getchar(); 
295.
							return 0; 
296.
297.
 
298.
299.
 
300.
					fclose(fileptr); 
301.
302.
 
303.
304.
 
305.
		flag=0; 
306.
 
307.
308.
		while( FindNextFile(h ,&data) ); 
309.
		FindClose(h); 
310.
		printf("\nNot find ...\n"); 
311.
		_sleep(3000); 
312.
		cls(); 
313.
 
314.
	} else { 
315.
		printf("%s\n", data.cFileName); 
316.
		fileptr = fopen(table ,"r+"); 
317.
		if(fileptr==NULL){ 
318.
			printf("\nKann File nicht oeffnen / finden ...\n"); 
319.
			getchar(); 
320.
			return 0; 
321.
322.
 
323.
		while( fgets(&tmpbuf[0][0][0] ,250 ,fileptr) ){ 
324.
			pass_len = strlen(&tmpbuf[0][0][0]); 
325.
			tmpbuf[0][0][pass_len-1]='\0'; 
326.
 
327.
			/* Hashing */ 
328.
			(*calcstr)( &digesthex[0][0][0], &tmpbuf[0][0][0]); 
329.
 
330.
			i++; 
331.
 
332.
			if( ! strncmp(&hash_buf[0] ,&digesthex[0][0][0] ,DIGESTSIZE) ) { 
333.
				printf("\nLine:%li Cracked Hash :%s - Password :%s\n",i ,&output_hash[0] , &tmpbuf[0][0] ); 
334.
				getchar(); 
335.
				return 0; 
336.
337.
 
338.
339.
 
340.
		fclose(fileptr); 
341.
 
342.
		printf("\nNot found ...\n"); 
343.
		getchar(); 
344.
 
345.
346.
 
347.
	return 0; 
348.
349.
 
350.
 
351.
 
352.
 
353.
/* Brute-force ATK function */ 
354.
 
355.
int BF(sw) 
356.
357.
 
358.
	int j ,m ,c ,f ,a ,y ,s; 
359.
	clock_t start, end; 
360.
 
361.
 
362.
 
363.
	/* ---------------------------------Menu------------------------------------ */   
364.
	cls(); 
365.
 
366.
	if(sw == 0) { 
367.
		printf("\nBRUTE-FORCE HASH SPLITTER v1.0.11 by LB\n\n"); 
368.
	} else { 
369.
		printf("\nHYBRID BRUTE-FORCE HASH SPLITTER v1.0.11 by LB\n\n"); 
370.
371.
 
372.
	printf("Hash mod's:");		            printf("\t\t\tAlphabet's:\n\n");		 
373.
 
374.
	printf("0 -MD2       7 -RIPEMD128 ");		printf("\t0 - A-Z space\n"); 
375.
	printf("1 -MD4       8 -RIPEMD192 ");		printf("\t1 - a-z space\n"); 
376.
	printf("2 -MD5       9 -RIPEMD256 ");		printf("\t2 - 0-9\n"); 
377.
	printf("3 -SHA1     10 -RIPEMD320 ");		printf("\t3 - 0-9 sonderzeichen\n"); 
378.
	printf("4 -SHA256   11 -PANAMA    ");		printf("\t4 - A-Z a-z space\n"); 
379.
	printf("5 -SHA384   12 -TIGER     ");		printf("\t5 - a-z sonderzeichen\n"); 
380.
	printf("6 -SHA512                 ");		printf("\t6 - a-z 0-9 space\n"); 
381.
 
382.
	if(sw==1) { 
383.
 
384.
		/* Input teil Password */ 
385.
		fflush(stdin); 
386.
		printf("\nInput teil Password:"); 
387.
		fgets(&teil_pwd_buf[0] ,100 ,stdin); 
388.
		teil_pwd_buf[(strlen(teil_pwd_buf)-1)]='\0'; 
389.
		/* Teil Password in temp Buffer kopieren */ 
390.
		for(s=0;(s<=30);s++) { 
391.
			for(a=0;(a<=30);a++) { 
392.
				strcpy(&strbuf[s][a][0] ,&teil_pwd_buf[0]); 
393.
394.
395.
		/* Hybrid mod flag setzen */ 
396.
		HYBRID = 1; 
397.
398.
 
399.
	/* Input Algorithm mod */ 
400.
	do 
401.
402.
		printf("\nInput Algorithm mod:"); 
403.
		scanf("%2i", &modflag ); 
404.
		fflush(stdin); 
405.
		if(!(modflag < 13)) { 
406.
			printf("\nWrong input !\n"); 
407.
			_sleep(1000); 
408.
409.
410.
	while(!(modflag < 13)); 
411.
 
412.
	/* Define digestsize */ 
413.
	strcpy(&hashname[0], Hash_Name[modflag]); 
414.
	SIZEH=Hash_Size[modflag]; 
415.
 
416.
	/* Input hash */ 
417.
	do 
418.
419.
		fflush(stdin); 
420.
		printf("\nInput Hash:"); 
421.
		fgets(&hash_buf[0] ,130 ,stdin); 
422.
		hash_buf[(strlen(hash_buf)-1)]='\0'; 
423.
		if(!(SIZEH==(strlen(hash_buf)-SIZEH)) ) { 
424.
			printf("\nWrong input !\n"); 
425.
			printf("The length of the %s Hash must be exactly %i Byte long !\n",&hashname[0] ,SIZEH); 
426.
427.
428.
	while(!(SIZEH==(strlen(hash_buf)-SIZEH)) ); 
429.
 
430.
	/* Memory reduction */ 
431.
	for(j=0,m=0;(j<SIZEH);j++) { 
432.
		c = memory_reduction(hash_buf[m] ,hash_buf[m+1]); 
433.
		tmp_hash_buf[j]=c; 
434.
		m +=2; 
435.
436.
	tmp_hash_buf[SIZEH]='\0'; 
437.
 
438.
	strcpy(&output_hash[0] ,&hash_buf[0]); 
439.
	strcpy(hash_buf ,tmp_hash_buf); 
440.
 
441.
	/* Input alphabet */ 
442.
	do 
443.
444.
		printf("\nInput Alphabet (0-6):"); 
445.
		scanf("%1i", &ctable ); 
446.
		fflush(stdin); 
447.
		if(!(ctable < 7)) { 
448.
			printf("\nWrong input !\n"); 
449.
			_sleep(1000); 
450.
451.
452.
	while(!(ctable < 7)); 
453.
 
454.
	/* Input start width */ 
455.
	do 
456.
457.
		printf("\nStart bei WORD breite (MAX 15):"); 
458.
		scanf("%2i",&slen); 
459.
		fflush(stdin); 
460.
		if(!(slen <= 15)) { 
461.
			printf("\nWrong input !\n"); 
462.
			_sleep(1000); 
463.
464.
465.
	while(!(slen <= 15)); 
466.
 
467.
	/* Input end width */ 
468.
	do 
469.
470.
		printf("\nEnde bei WORD breite (MAX 15):"); 
471.
		scanf("%2i",&elen); 
472.
		fflush(stdin); 
473.
		if( !((elen <= 15) && (elen>=slen))) { 
474.
			printf("\nWrong input !\n"); 
475.
			_sleep(1000); 
476.
477.
478.
	while( !((elen <= 15) && (elen>=slen)) ); 
479.
 
480.
	/* Input thread instanzen */ 
481.
	do 
482.
483.
		printf("\nInput Thread instanzen (MAX 30 & <= ALPHA_LEN):"); 
484.
		scanf("%2i",&thrinstanz); 
485.
		fflush(stdin); 
486.
		if( !( (thrinstanz<=MAX_T) && (thrinstanz <= (int)strlen(chartable0[ctable]))) ) { 
487.
			printf("\nWrong input !\n"); 
488.
			_sleep(1000); 
489.
490.
491.
	while( !( (thrinstanz <= MAX_T) && (thrinstanz <= (int)strlen(chartable0[ctable])) ) ); 
492.
 
493.
	cls(); 
494.
 
495.
	/*-------------------------------------------------------------------------- */ 
496.
 
497.
	/* Entsprechende Adresse dem Pointer zuweisen */ 
498.
	switch(modflag) 
499.
500.
		case 0 : calcstr=SL_MD2_CalculateStr; break; 
501.
		case 1 : calcstr=SL_MD4_CalculateStr; break; 
502.
		case 2 : calcstr=SL_MD5_CalculateStr; break; 
503.
		case 3 : calcstr=SL_SHA1_CalculateStr; break; 
504.
		case 4 : calcstr=SL_SHA256_CalculateStr; break; 
505.
		case 5 : calcstr=SL_SHA384_CalculateStr; break; 
506.
		case 6 : calcstr=SL_SHA512_CalculateStr; break; 
507.
		case 7 : calcstr=SL_RIPEMD128_CalculateStr; break; 
508.
		case 8 : calcstr=SL_RIPEMD160_CalculateStr; break; 
509.
		case 9 : calcstr=SL_RIPEMD256_CalculateStr; break; 
510.
		case 10: calcstr=SL_RIPEMD320_CalculateStr; break; 
511.
		case 11: calcstr=SL_PANAMA_CalculateStr; break; 
512.
		case 12: calcstr=SL_TIGER_CalculateStr; break; 
513.
514.
	 
515.
	/* Copy alphabet */ 
516.
	strcpy(&chartable[0] ,chartable0[ctable]); 
517.
 
518.
	/* Get size of table */ 
519.
	stab = (int)strlen(chartable); 
520.
 
521.
	/* Alpha splitten	*/ 
522.
	splitpos = alpha_splitter( (int)strlen( *(chartable0+ctable) ) ,thrinstanz); 
523.
	 
524.
	/* Cursor off */ 
525.
	cursorOff(); 
526.
 
527.
	/* Start Thread Status */ 
528.
	HStat = CreateThread(NULL ,0 ,&STATUS ,(LPVOID)(long long)elen ,0 ,&StatId ); 
529.
 
530.
	_sleep(500); 
531.
 
532.
	/* Zeitmessung start*/ 
533.
	start = clock(); 
534.
 
535.
	/* Start BF Algo. */ 
536.
	for(f=slen;(f<=elen);f++) { 
537.
		for(y=0;(y<thrinstanz);y++) { 
538.
			ThreadH[y][f] = CreateThread(NULL ,0 ,THREAD0 ,(LPVOID) (long long) f ,0 ,&ThreadID[y][f]); 
539.
540.
541.
	 
542.
	/* Elemente und Position im Array berechnen */ 
543.
	if((elen - slen) == 0){ 
544.
		elem = 1; 
545.
	}  else { 
546.
		elem = ((elen-slen)+1); 
547.
548.
 
549.
	/* Warten auf alle Objekte */ 
550.
	for(y=0;(y<thrinstanz);y++) { 
551.
		WaitForMultipleObjects( elem ,&ThreadH[y][slen] ,TRUE ,INFINITE ); 
552.
553.
 
554.
	/* Zeitmessung ende */ 
555.
	end = clock(); 
556.
 
557.
	/* Terminate stat thread */ 
558.
	_sleep(2000); 
559.
	TerminateThread(HStat,0); 
560.
	_sleep(1000); 
561.
 
562.
	/* Handle Release */ 
563.
	for(f=(slen);(f<=elen);f++) { 
564.
		for(y=0;(y<thrinstanz);y++) { 
565.
			CloseHandle(ThreadH[y][f]); 
566.
567.
568.
	CloseHandle(HStat); 
569.
 
570.
	/* Calculate count */ 
571.
	counter = 0; 
572.
	for(y=0;(y<thrinstanz);y++) { 
573.
		for(f=slen;(f<=elen);f++) { 
574.
			counter += count[y][f]; 
575.
576.
577.
 
578.
	/* Output */ 
579.
	printf("\n\n --Process completed-- \n"); 
580.
	printf("\nAlgorithm     : %s",&hashname[0]); 
581.
	printf("\nAlphabet      : %s", &chartable[0]); 
582.
	printf("\nWord width    : %i-%i",slen ,elen); 
583.
	printf("\nAlpha-Threads : %i",thrinstanz); 
584.
	printf("\nCombinations  : %Li",counter); 
585.
	printf("\nTime          : %.2fSec",(float)(end-start) / CLOCKS_PER_SEC); 
586.
 
587.
	/* Var counter reset */ 
588.
	for(y=0;(y<thrinstanz);y++) { 
589.
		for(f=0;(f<30);f++) { 
590.
			count[y][f] = 0; 
591.
592.
593.
	counter = 0; 
594.
	HYBRID = 0; 
595.
 
596.
	/* Cursor on */ 
597.
	cursorOn(); 
598.
 
599.
	getchar(); 
600.
	return 0; 
601.
 
602.
603.
 
604.
 
605.
 
606.
DWORD WINAPI THREAD0(r) 
607.
{  
608.
	BF_(r); 
609.
	ExitThread(0); 
610.
611.
 
612.
 
613.
 
614.
int BF_(int width) 
615.
616.
	int r[15]={0}; 
617.
	int sp[15]={0}; 
618.
	static int spl[30]={0}; 
619.
	register int i ,f; 
620.
	register int widthinc=0; 
621.
 
622.
	widthinc = width; 
623.
	--widthinc; 
624.
 
625.
	spl[widthinc]++; 
626.
	if( !(thrinstanz > spl[widthinc]) ) { 
627.
		spl[widthinc] = 0; 
628.
629.
	sp[widthinc] = spl[widthinc]; 
630.
 
631.
	for(r[14]=0;(r[14]<stab);r[14]++) { 
632.
	  for(r[13]=0;(r[13]<stab);r[13]++) { 
633.
		for(r[12]=0;(r[12]<stab);r[12]++) { 
634.
		  for(r[11]=0;(r[11]<stab);r[11]++) { 
635.
			for(r[10]=0;(r[10]<stab);r[10]++) { 
636.
			  for(r[9]=0;(r[9]<stab);r[9]++) { 
637.
				for(r[8]=0;(r[8]<stab);r[8]++) { 
638.
				  for(r[7]=0;(r[7]<stab);r[7]++) { 
639.
					for(r[6]=0;(r[6]<stab);r[6]++) { 
640.
					  for(r[5]=0;(r[5]<stab);r[5]++) { 
641.
						for(r[4]=0;(r[4]<stab);r[4]++) { 
642.
						  for(r[3]=0;(r[3]<stab);r[3]++) { 
643.
							for(r[2]=0;(r[2]<stab);r[2]++) { 
644.
							  for(r[1]=0;(r[1]<stab);r[1]++) { 
645.
								  for(r[0]=0;(r[0]<stab);r[0]++) { 
646.
 
647.
									/* Initialisieren - verlassen */ 
648.
									if(r[widthinc]==0) r[widthinc] = splitpos.START[sp[widthinc]]; 
649.
									if(r[widthinc]== splitpos.END[sp[widthinc]]) return 0; 
650.
 
651.
									/* String (password) build */ 
652.
									for(f=0;(f<width);f++){ 
653.
										tmpbuf[sp[widthinc]][widthinc][f]  =  chartable[r[f]]; 
654.
655.
 
656.
									/* Hybrid mod */ 
657.
									if(HYBRID == 1) { 
658.
										tmpbuf[sp[widthinc]][widthinc][(f)]='\0'; 
659.
										strcpy(&strbuf[sp[widthinc]][widthinc][strlen(teil_pwd_buf)] ,&tmpbuf[sp[widthinc]][widthinc][0]); 
660.
										strcpy(&tmpbuf[sp[widthinc]][widthinc][0] ,&strbuf[sp[widthinc]][widthinc][0]); 
661.
662.
 
663.
									/* Callback hash funktion */ 
664.
									(*calcstr)( &digesthex[sp[widthinc]][widthinc][0], &tmpbuf[sp[widthinc]][widthinc][0]); 
665.
 
666.
									/* Binary Hash's vergleichen */ 
667.
									if( ! strncmp(&hash_buf[0] ,&digesthex[sp[widthinc]][widthinc][0], SIZEH) ) { 
668.
										_sleep(1000); 
669.
										TerminateThread(HStat,0); 
670.
										printf("\n\nCracked Hash :%s - Password :%s\n\n" ,&output_hash[0] , &tmpbuf[sp[widthinc]][widthinc][0] ); 
671.
										/* Therminate all Threads */ 
672.
										for(i=(slen-1);i<=elen;i++) { 
673.
											for(f=0;(f<=thrinstanz);f++) { 
674.
												if((i != width)){ 
675.
							    					TerminateThread(ThreadH[f][i],0); 
676.
												}	 
677.
678.
679.
										for(i=0;(i<30);i++) { 
680.
											spl[i]=0; 
681.
682.
										return 0; 
683.
684.
 
685.
									/* Counter increment */ 
686.
									count[sp[widthinc]][width]++; 
687.
 
688.
689.
								  if(width==1) return 0; 
690.
691.
								if(width==2) return 0; 
692.
693.
							  if(width==3) return 0; 
694.
695.
							if(width==4) return 0; 
696.
697.
						  if(width==5) return 0; 
698.
699.
						if(width==6) return 0; 
700.
701.
					  if(width==7) return 0; 
702.
703.
					if(width==8) return 0; 
704.
705.
				  if(width==9) return 0; 
706.
707.
				if(width==10) return 0; 
708.
709.
			  if(width==11) return 0; 
710.
711.
		   if(width==12) return 0; 
712.
713.
		 if(width==13) return 0; 
714.
715.
	   if(width==14) return 0; 
716.
717.
	return 0; 
718.
}  
719.
 
720.
 
721.
 
722.
 
723.
 
724.
DWORD WINAPI STATUS(ThreadIns) 
725.
726.
	register int t ,x ,f; 
727.
	long double stat=0; 
728.
	long double potenz=0; 
729.
 
730.
	/* Set thread priority TIME_CRITICAL*/ 
731.
	SetThreadPriority(HStat ,THREAD_PRIORITY_TIME_CRITICAL); 
732.
 
733.
	/* Potenz berechnung */ 
734.
	for(x=ThreadIns; (x>(slen-1)) ;x--) { 
735.
		potenz += (long long)pow((long double)strlen(chartable),(long double)x); 
736.
737.
 
738.
	while(1) { 
739.
 
740.
		/* Calculate counter */ 
741.
		for(x=0;(x<thrinstanz);x++) { 
742.
			for(f=slen;(f<=elen);f++) { 
743.
				counter += count[x][f]; 
744.
745.
746.
 
747.
		/* STATUS Output */ 
748.
		printf("\n\nProcessing %%\n\n"); 
749.
		stat = (long double)((long double) counter / potenz); 
750.
		printf("\nSTATUS %.2f%% : ", (float)(stat*100)); 
751.
		for(t=0;(t<(int)(((int)(stat*100))>>1));t++) { 
752.
			printf("%c", 219); 
753.
754.
		for(t=(int)(((int)(stat*100))>>1);t<50;t++) { 
755.
			printf("%c", 177); 
756.
757.
 
758.
		counter=0; 
759.
		_sleep(1000); 
760.
		cls();	 
761.
 
762.
763.
 
764.
	return 0; 
765.
 
766.
767.
 
768.
 
769.
unsigned char memory_reduction(unsigned char a_ptr ,unsigned char b_ptr) 
770.
771.
	unsigned char a ,b; 
772.
 
773.
	a = convchartohex(a_ptr); 
774.
	b = convchartohex(b_ptr); 
775.
 
776.
	return b|a<<4; 
777.
 
778.
 
779.
780.
 
781.
 
782.
unsigned char convchartohex(unsigned char c) 
783.
784.
 
785.
	if(c >= 'a' && c <= 'f'){ 
786.
		return 10 + (c - 'a'); 
787.
788.
	if(c >= '0' && c <= '9'){ 
789.
		return c - '0'; 
790.
791.
	return 0; 
792.
793.
 
794.
 
795.
 
796.
 
797.
struct TABLE alpha_splitter(int sizeofalpha ,int thrinst) 
798.
799.
	int split=0; 
800.
	int res=0; 
801.
	int s ,y; 
802.
	struct TABLE pos; 
803.
 
804.
	/* Berechen aus Alphabetlänge und Threadinstanzen 
805.
	   den Teiler und Restwert 
806.
	*/ 
807.
	split = (sizeofalpha / thrinst); 
808.
	res	  =	(sizeofalpha % thrinst); 
809.
 
810.
	/* Struct var`s set zero */ 
811.
	memset(&pos.START[0] ,0 ,30); 
812.
	memset(&pos.END[0] ,0 ,30); 
813.
 
814.
	/* Initialisierung Start[] */ 
815.
	for(y=1;(y<=thrinst);y++) { 
816.
		pos.START[y] = (pos.START[(y-1)] + split); 
817.
818.
 
819.
	/* Restwert verteilen */ 
820.
	for(y=2;(y<=res);y++) { 
821.
		for(s=y;(s<=(thrinst));s++) { 
822.
			pos.START[s] += 1;	 
823.
824.
825.
 
826.
	/* Initialisierung Ende[] */ 
827.
	for(y=0;(y<thrinst);y++) { 
828.
		pos.END[y]=pos.START[y+1]; 
829.
830.
 
831.
	/* Define START - END point */ 
832.
	pos.START[0]=0; 
833.
	pos.END[thrinst-1]=sizeofalpha; 
834.
 
835.
	printf("\n\n"); 
836.
	for(s=0;(s<thrinstanz);s++) { 
837.
		printf("Start:%i - End:%i\n",pos.START[s] ,pos.END[s]); 
838.
		_sleep(100); 
839.
840.
 
841.
	return pos; 
842.
843.
 
844.
 
Ähnliche Inhalte
C und C++

C-Sharp WPF Binding und Rechnen mit Element.With

Tipp von mayho33C und C++10 Kommentare

Hi @ All Eventuell geht es dem einen oder anderen ähnlich wie mir: WPF ist mächtig, hat aber seine ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabinesMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-eWindows Update

Servus Kollegen, Günter Born verweist auf ein problematisches Zwischenupdate zum Windows Server 2012 R2 Konnte das Problem eben grad ...

CPU, RAM, Mainboards

Spectre Variante 2: Ältere CPU-Architekturen bekommen doch kein Update mehr

Information von FrankCPU, RAM, Mainboards

Intel hat seine Arbeit an neuen CPU-Microcodes, die gegen Spectre Variante 2 absichern, als beendet erklärt. Neben CPUs der ...

Neue Wissensbeiträge
Windows 10

Mikrofon von Headset geht nach Update auf Windows 10 1803 nicht mehr

Tipp von Deepsys vor 1 TagWindows 10

Ich verwende ein Plantronics Headset das per USB mit dem Windows 10 PC verbunden ist. Damit kann ich auch ...

Video & Streaming

Ruckelfreies Fernsehen auf Smartphone oder Tablet - in SD oder gar HD - Eine Alternative zum Fritz DVB-C Receiver

Anleitung von power-user vor 1 TagVideo & Streaming9 Kommentare

Wer kennt das nicht: Man möchte gemütlich auf dem Balkon sitzen und vielleicht grillen und dabei das WM-Spiel gucken ...

Erkennung und -Abwehr
Trendmicro WFBS 10 ist in deutsch verfügbar!
Tipp von VGem-e vor 2 TagenErkennung und -Abwehr4 Kommentare

Servus Kollegen, downloadbar unter

Windows Update

Microsoft Patchday Juni 2018 - BSOD, obwohl noch kein Patch freigegeben

Erfahrungsbericht von diemilz vor 2 TagenWindows Update7 Kommentare

Hallo zusammen, wir hatten hier letzte Woche ein massives Problem. Alles begann damit, dass ein Mitarbeiter kurz vor Feierabend ...

Heiß diskutierte Inhalte
Windows Userverwaltung
User Überwachung
gelöst Frage von YellowcakeWindows Userverwaltung37 Kommentare

Hey ich habe von unserem neuem Datenschutzbeauftragten ein kleines Horror Paket bekommen. Ich soll wenn es möglich ist, das ...

Windows Installation
Adobe Reader noch notwendig?
gelöst Frage von EitieOSWindows Installation26 Kommentare

Muss ich mir noch die Arbeit machen und den Adobe Reader installieren und aktuell halten, wenn doch in Win10 ...

Video & Streaming
PVR-Projekt - RTSP - Streams auf NAS aufnehmen - welche Tools sind am leichtesten einzurichten ?
Frage von power-userVideo & Streaming21 Kommentare

Hallo zusammen, hier die Details zur obigen Frage: AAusgangspunkt / Grundvoraussetzungen Wir betreiben hier ein kleines Heimnetzwerk. 2 Smartphones, ...

Festplatten, SSD, Raid
Bad Sector auf S-ATA Festplatte
Frage von gerry56Festplatten, SSD, Raid14 Kommentare

Ich habe 2 Festplatten in meinem PC eingebaut. Auf Festplatte 1 habe ich mehrere Betriebssysteme und auf Festplatte 2 ...