int run_cesa_test(CESA_TEST *cesa_test) { switch(cesa_test->test){ case(MULTI): combiTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(SIZE): multiSizeTest(cesa_test->req_size, cesa_test->iter, cesa_test->checkmode, NULL); break; case(SINGLE): cesaOneTest(cesa_test->session_id, cesa_test->data_id, cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(AES): aesTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(DES): desTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(TRI_DES): tripleDesTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(MD5): mdTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; case(SHA1): shaTest(cesa_test->iter, cesa_test->req_size, cesa_test->checkmode); break; default: dprintk("%s(unknown test 0x%x)\n", __FUNCTION__, cesa_test->test); return -EINVAL; } return 0; }
char* handle_crack_request(char* crack_req) { char* hash, * lower, * upper; char* delim = " "; char* ret = NULL; int i; int len; char* cur; char* cur_prev; DEBUG("handle_crack_request: %s", crack_req); strtok(crack_req, delim); hash = strtok(NULL, delim); lower = strtok(NULL, delim); upper = strtok(NULL, delim); len = strlen(lower); DEBUG("handle_crack_request: hash %s, lower %s, upper %s, len %d", hash, lower, upper, len); cur = (char*)malloc(len); if (cur == NULL) { DEBUG("handle_crack_request: malloc cur fail"); } strcpy(cur, lower); for(;;) { DEBUG("handle_crack_request: sha1 on %s", cur); if (shaTest(cur, len, hash)) { ret = (char*)malloc(len + 2); sprintf(ret, "f ", 2); memcpy(ret + 2, cur, len); DEBUG("handle_crack_request: found password %s", cur); DEBUG("handle_crack_request: send %s", ret); return ret; } DEBUG("handle_crack_request: compare %s %s", cur, upper); if (strcmp(cur, upper) == 0) { break; } cur_prev = cur; cur = pass_increment(cur_prev, len); free(cur_prev); } // "x": password not found ret = (char*)malloc(2); memset(ret, 0, 2); sprintf(ret, "x", 1); return ret; }