int tryLogin(int hSocket, _MODULE_DATA* _psSessionData, sLogin** psLogin, char* szLogin, char* szPassword) { int iRet; unsigned char* szTmp = NULL; unsigned char* szEncodedAuth = NULL; int nSendBufferSize = 0; struct afp_url tmpurl; /* Build AFP authentication request */ libafpclient_register(&afpclient); afp_main_quick_startup(NULL); init_uams(); afp_default_url(&tmpurl); memcpy(&tmpurl.servername, (*psLogin)->psServer->pHostIP, AFP_SERVER_NAME_LEN); memcpy(&tmpurl.username, szLogin, AFP_MAX_USERNAME_LEN); memcpy(&tmpurl.password, szPassword, AFP_MAX_PASSWORD_LEN); if ( server_subconnect(tmpurl) == SUCCESS ) { writeError(ERR_DEBUG_MODULE, "[%s] Login attempt successful.", MODULE_NAME); (*psLogin)->iResult = LOGIN_RESULT_SUCCESS; iRet = MSTATE_EXITING; } else { writeError(ERR_DEBUG_MODULE, "[%s] Login attempt failed.", MODULE_NAME); (*psLogin)->iResult = LOGIN_RESULT_FAIL; iRet = MSTATE_RUNNING; } setPassResult((*psLogin), szPassword); return(iRet); }
int start_afp(int s, char *ip, int port, unsigned char options, char *miscptr, FILE * fp) { char *empty = ""; char *login, *pass, mlogin[AFP_MAX_USERNAME_LEN], mpass[AFP_MAX_PASSWORD_LEN]; struct afp_url tmpurl; /* Build AFP authentication request */ libafpclient_register(&afpclient); afp_main_quick_startup(NULL); init_uams(); afp_default_url(&tmpurl); if (strlen(login = hydra_get_next_login()) == 0) login = empty; if (strlen(pass = hydra_get_next_password()) == 0) pass = empty; strncpy(tmpurl.servername, hydra_address2string(ip), AFP_SERVER_NAME_LEN - 1); tmpurl.servername[AFP_SERVER_NAME_LEN] = 0; strncpy(mlogin, login, AFP_MAX_USERNAME_LEN - 1); mlogin[AFP_MAX_USERNAME_LEN - 1] = 0; strncpy(mpass, pass, AFP_MAX_PASSWORD_LEN - 1); mpass[AFP_MAX_PASSWORD_LEN - 1] = 0; memcpy(&tmpurl.username, mlogin, AFP_MAX_USERNAME_LEN); memcpy(&tmpurl.password, mpass, AFP_MAX_PASSWORD_LEN); if (server_subconnect(tmpurl) == 0) { hydra_report_found_host(port, ip, "afp", fp); hydra_completed_pair_found(); if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) return 3; return 2; } else { hydra_completed_pair(); if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) return 2; } return 1; }