static void md5_50_bench(void) { uint8_t *buf; unsigned int nrprocessed = 0; clock_t startTime, endTime; int i; buf = calloc(16, sizeof(uint8_t)); md5_50_init(16); alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { md5_50(buf, 16); buf[0]++; nrprocessed++; } endTime = clock(); print_and_clean("MD5_50 (fast):\t", nrprocessed, &startTime, &endTime); buf[0] = 0; nrprocessed = 0; alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { for(i=0; i<50; i++) { md5(buf, 16, buf); } buf[0]++; nrprocessed++; } endTime = clock(); print_and_clean("MD5_50 (slow):\t", nrprocessed, &startTime, &endTime); free(buf); }
static void sha256_bench(void) { uint8_t *buf; uint8_t hash[32]; unsigned int nrprocessed = 0; clock_t startTime, endTime; buf = calloc(COMMON_SHA256_SLOW_SIZE, sizeof(uint8_t)); alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { sha256f(buf, COMMON_SHA256_SIZE, hash); buf[0]++; nrprocessed++; } endTime = clock(); print_and_clean("SHA256 (fast):\t", nrprocessed, &startTime, &endTime); buf[0] = 0; nrprocessed = 0; alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { sha256(buf, COMMON_SHA256_SLOW_SIZE, hash); buf[0]++; nrprocessed++; } endTime = clock(); print_and_clean("SHA256 (slow):\t", nrprocessed, &startTime, &endTime); free(buf); }
static void rc4_bench(void) { uint8_t *enckey; uint8_t match[32] = {0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD}; uint8_t cipher[32] = {0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD, 0xBE, 0xAD, 0xDE, 0xAD}; unsigned int nrprocessed = 0; clock_t startTime, endTime; enckey = calloc(16, sizeof(uint8_t)); alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { rc4Match40b(enckey, cipher, match); enckey[0]++; nrprocessed++; } endTime = clock(); print_and_clean("RC4 (40, static):", nrprocessed, &startTime, &endTime); setrc4DecryptMethod(40); nrprocessed = 0; alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { rc4Decrypt(enckey, cipher, 3, match); enckey[0]++; nrprocessed++; } endTime = clock(); print_and_clean("RC4 (40, no check):", nrprocessed, &startTime, &endTime); setrc4DecryptMethod(128); nrprocessed = 0; alarm(BENCHINTERVAL); startTime = clock(); while(!finished) { rc4Decrypt(enckey, cipher, 3, match); enckey[0]++; nrprocessed++; } endTime = clock(); print_and_clean("RC4 (128, no check):", nrprocessed, &startTime, &endTime); free(enckey); }
static void pdf_128b_bench(int numThreads, const unsigned int numCpuCores) { clock_t startTime, endTime; struct timeval wallTimeStart, wallTimeEnd; uint8_t o_string[32] = {0xcf, 0xeb, 0x57, 0x1b, 0xa4, 0x56, 0x35, 0x19, 0x4e, 0x09, 0x95, 0x24, 0x23, 0xf3, 0x9b, 0x81, 0x05, 0xae, 0xbc, 0xb2, 0x8c, 0x18, 0xd2, 0xbb, 0xff, 0x00, 0xc9, 0xaa, 0x3f, 0x36, 0xe3, 0x13}; uint8_t u_string[32] = {0x72, 0xf6, 0x56, 0x9e, 0xda, 0x7d, 0x20, 0x1a, 0x10, 0x6d, 0x8a, 0x5b, 0xfa, 0xb2, 0xe9, 0xc0, 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08}; uint8_t fileid[16] = {0xc9, 0xaa, 0x55, 0xc3, 0x6f, 0x3f, 0x5e, 0x84, 0x0d, 0x3d, 0x96, 0x8b, 0x97, 0xdb, 0xb2, 0xfe}; EncData e = { handler, o_string, u_string, fileid, true, 16, 1, 4, 128, -2359344, 3, 2 }; initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1); startTime = clock(); runCrackRev3(); endTime = clock(); print_and_clean("PDF (128, user):", getNrProcessed(), &startTime, &endTime); initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1); startTime = clock(); runCrackRev3_o(); endTime = clock(); print_and_clean("PDF (128, owner):", getNrProcessed(), &startTime, &endTime); initPDFCrack(&e, password, false, NULL, Generative, NULL, charset, 0, 4, true, numThreads, numCpuCores, 1, 1); startTime = clock(); runCrackRev3_of(); endTime = clock(); print_and_clean("PDF (128, owner, fast):", getNrProcessed(), &startTime, &endTime); if (numThreads > 0) { printf("\n"); printf("Benchmark (Wall time):\tAverage Speed (passwords / second):\n"); initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 5, true, numThreads, numCpuCores, 1, 1); gettimeofday(&wallTimeStart, NULL); runCrackMultiThreads(); gettimeofday(&wallTimeEnd, NULL); char buf[32]; sprintf(buf, "PDF (128, user, %i threads):", numThreads); print_and_clean_wall_time(buf, getNrProcessed(), wallTimeStart, wallTimeEnd); } }
static void pdf_40b_bench(void) { clock_t startTime, endTime; uint8_t o_string[32] = { 0xb7, 0x81, 0xc8, 0x3d, 0x93, 0x79, 0x21, 0xcc, 0x0f, 0x3d, 0x40, 0xed, 0x18, 0xe7, 0x7f, 0x7e, 0xc0, 0x15, 0xb1, 0x63, 0xf5, 0xc8, 0x34, 0xe0, 0x54, 0x37, 0x41, 0x29, 0xe7, 0xc5, 0x1d, 0xe3 }; uint8_t u_string[32] = { 0x61, 0x74, 0x7c, 0x5c, 0xb5, 0x38, 0x3d, 0xdd, 0x6f, 0xcb, 0xb2, 0xf2, 0xfe, 0xe3, 0x34, 0x8d, 0x81, 0xe2, 0x49, 0x99, 0xc4, 0x14, 0xf6, 0x6f, 0xd0, 0x0f, 0x97, 0xe8, 0xb8, 0x29, 0xe6, 0x27 }; uint8_t fileid[16] = { 0x21, 0x76, 0x36, 0x66, 0x67, 0xf0, 0x86, 0xd5, 0x09, 0x88, 0xc3, 0xa7, 0xe9, 0x3a, 0x92, 0xca }; EncData e = { handler, o_string, u_string, fileid, true, 16, 1, 4, 40, -64, 2, 1 }; initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 5, true); startTime = clock(); runCrackRev2(); endTime = clock(); print_and_clean("PDF (40, user):\t",getNrProcessed(),&startTime, &endTime); initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 5, true); startTime = clock(); runCrackRev2_o(); endTime = clock(); print_and_clean("PDF (40, owner):",getNrProcessed(), &startTime, &endTime); initPDFCrack(&e, password, false, NULL, Generative, NULL, charset,0, 5,true); startTime = clock(); runCrackRev2_of(); endTime = clock(); print_and_clean("PDF (40, owner, fast):", getNrProcessed(), &startTime, &endTime); }
static void pdf_128b_bench(void) { clock_t startTime, endTime; uint8_t o_string[32] = { 0xcf, 0xeb, 0x57, 0x1b, 0xa4, 0x56, 0x35, 0x19, 0x4e, 0x09, 0x95, 0x24, 0x23, 0xf3, 0x9b, 0x81, 0x05, 0xae, 0xbc, 0xb2, 0x8c, 0x18, 0xd2, 0xbb, 0xff, 0x00, 0xc9, 0xaa, 0x3f, 0x36, 0xe3, 0x13 }; uint8_t u_string[32] = { 0x72, 0xf6, 0x56, 0x9e, 0xda, 0x7d, 0x20, 0x1a, 0x10, 0x6d, 0x8a, 0x5b, 0xfa, 0xb2, 0xe9, 0xc0, 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08 }; uint8_t fileid[16] = { 0xc9, 0xaa, 0x55, 0xc3, 0x6f, 0x3f, 0x5e, 0x84, 0x0d, 0x3d, 0x96, 0x8b, 0x97, 0xdb, 0xb2, 0xfe }; EncData e = { handler, o_string, u_string, fileid, true, 16, 1, 4, 128, -2359344, 3, 2 }; initPDFCrack(&e, NULL, true, NULL, Generative, NULL, charset, 0, 4, true); startTime = clock(); runCrackRev3(); endTime = clock(); print_and_clean("PDF (128, user):", getNrProcessed(), &startTime, &endTime); initPDFCrack(&e, NULL, false, NULL, Generative, NULL, charset, 0, 4, true); startTime = clock(); runCrackRev3_o(); endTime = clock(); print_and_clean("PDF (128, owner):", getNrProcessed(), &startTime, &endTime); initPDFCrack(&e,password, false, NULL, Generative, NULL, charset, 0, 4,true); startTime = clock(); runCrackRev3_of(); endTime = clock(); print_and_clean("PDF (128, owner, fast):", getNrProcessed(), &startTime, &endTime); }
static void md5_bench(int numThreads, const unsigned int numCpuCores) { uint8_t *buf; uint8_t digest[16]; unsigned int nrprocessed = 0; clock_t startTime, endTime; buf = calloc(COMMON_MD5_SIZE, sizeof(uint8_t)); alarm(BENCHINTERVAL); startTime = clock(); while (!finished) { md5(buf, COMMON_MD5_SIZE, digest); buf[0]++; nrprocessed++; } endTime = clock(); print_and_clean("MD5:\t\t", nrprocessed, &startTime, &endTime); free(buf); }