day 14 finish
[aoc_eblake.git] / 2016 / advent5.c
blob2c10d3bfd8ef8a5ebb399f2ac0d6578e7528cbb3
1 #define _GNU_SOURCE 1
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 #include "md5.h"
8 int main(int argc, char **argv) {
9 if (argc != 2)
10 return 1;
11 unsigned char sum[16];
12 int i = 0;
13 char out[9] = "________";
14 while (strchr (out, '_')) {
15 if (!(++i % 10000))
16 printf ("\b\b\b\b\b\b\b\b\b\b\b %d", i);
17 char *str;
18 int len = asprintf(&str, "%s%d", argv[1], i);
19 md5_buffer(str, len, sum);
20 if (!(sum[0] | sum[1]) && sum[2] <= 0xf) {
21 if (out[sum[2]] == '_')
22 out[sum[2]] = "0123456789abcdef"[sum[3] >> 4];
23 printf ("\n%s potential match on %s\n", out, str);
26 printf ("final password: %s\n", out);
27 return 0;