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, 6722 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
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 6 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 15 StundenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 1 TagWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
OpenVPN Client Fehlermeldungen
Frage von chris84LAN, WAN, Wireless16 Kommentare

Hallo Zusammen, wir nutzen seit kurzem einen neuen Router und den OpenVPN Client. Die VPN Verbindung klappt; allerdings kommen ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit14 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...