Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Anleitung Entwicklung C und C++

Mitglied: lowbyte1

lowbyte1 (Level 2) - Jetzt verbinden

02.03.2009, aktualisiert 24.08.2010, 6594 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.
 
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Erkennung und -Abwehr
Alternative zu MS NAP (1)

Frage von oce zum Thema Erkennung und -Abwehr ...

Verschlüsselung & Zertifikate
Veracrypt: Welcher Algorithmus ist bei der Verschlüsselung zu empfehlen? (6)

Frage von NCCTech zum Thema Verschlüsselung & Zertifikate ...

Windows Netzwerk
Kein RDP über VPN per MS-TSC möglich (9)

Frage von survial555 zum Thema Windows Netzwerk ...

Windows Server
TSplus - eine Alternative zu MS RDS und Citrix (19)

Link von runasservice zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...