Exemplo n.º 1
0
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;
}