summaryrefslogtreecommitdiff
path: root/2016/5b.c
blob: 4d575fb351fa67b8dc39cf03966d1008d1c1d352 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <openssl/md5.h>

int main(void){
	int counter=0;
	char inbuf[100];
	unsigned char outbuf[16];
	int prelen;
	scanf("%s%n",inbuf,&prelen);

	char passbuf[9];
	strcpy(passbuf,"________");
	fprintf(stderr,"%s",passbuf);

	for(int i=0;i<8;i++){
		while(true){
			int len=prelen+sprintf(inbuf+prelen,"%d",counter);
			counter++;
			MD5((const unsigned char*)inbuf,len,outbuf);
			if(outbuf[0]==0&&outbuf[1]==0&&(outbuf[2]>>4)==0){
				if((outbuf[2]&0xf)<8&&passbuf[outbuf[2]&0xf]=='_'){
					passbuf[outbuf[2]&0xf]="0123456789abcdef"[outbuf[3]>>4];
					fprintf(stderr,"\r%s",passbuf);
					break;
				}
			}
		}
	}
	fputc('\n',stderr);
	printf("%s\n",passbuf);
}