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, 6699 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 ...

Datenbanken

MS SQL Server 2012 Update-Trigger

Tipp von EUuserDatenbanken

Hier ein kleiner Tipp, wie man Timestamps und Usernamen für Updates an Datensätzen anhängen kann. (Vielen Dank an ) ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...