/* * gcc -O2 proof.c $(pkg-config --cflags --libs openssl) -o proof */ #include #include #include int main(int argc, char **argv) { const char *target = "31C"; char data[40]; if (argc < 2) { printf("Usage: proof [init]\n"); return 1; } memset(data, 'A', sizeof data); memcpy(&data[sizeof(data) - 32], argv[1], 32); unsigned long *first = (unsigned long *) data; unsigned char hash[32]; do { ++*first; SHA256((unsigned char *) &data, sizeof(data), hash); } while (memcmp(target, hash, strlen(target)) != 0); write(1, data, sizeof(data) - 32); return 0; }