From 519634774682b178ac3c5bc5e548597fc090c089 Mon Sep 17 00:00:00 2001 From: cora32 Date: Sun, 22 Feb 2015 15:31:51 +0300 Subject: [PATCH] Single ip scan fix. --- CheckKey_Th.cpp | 4 +- CheckProxy_Th.cpp | 2 +- connector.cpp | 14 +- externData.h | 2 +- finder.cpp | 1 + nesca_3.cpp | 11 +- nesca_3.h | 1 + nesca_3.ui | 62 ++++++-- nesca_startModule.cpp | 344 ++++++++++++++++++++++++++++++------------ oIRC_Th.cpp | 4 +- 10 files changed, 316 insertions(+), 129 deletions(-) diff --git a/CheckKey_Th.cpp b/CheckKey_Th.cpp index 2c1a694..901be01 100644 --- a/CheckKey_Th.cpp +++ b/CheckKey_Th.cpp @@ -67,7 +67,7 @@ int KeyCheckerMain() HOSTENT *host; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv); else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else @@ -184,7 +184,7 @@ int KeyCheckerMain() strcat(msg, "\r\nConnection: close"); strcat(msg, "\r\n\r\n"); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer); else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else diff --git a/CheckProxy_Th.cpp b/CheckProxy_Th.cpp index aebb53c..eb7c8b0 100644 --- a/CheckProxy_Th.cpp +++ b/CheckProxy_Th.cpp @@ -38,7 +38,7 @@ void CheckProxyLogic() HOSTENT *host; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy); else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else diff --git a/connector.cpp b/connector.cpp index 1c3b7d5..0dcc020 100644 --- a/connector.cpp +++ b/connector.cpp @@ -142,12 +142,10 @@ int OpenConnection(SOCKET *sock, const char *hostname, int port) struct sockaddr_in addr; if(strlen(hostname) == 0) { - stt->doEmitionDebugFoundData("[" + QString(hostname) + ":" + QString::number(port) + "" + "] Rejecting in _connection: Bad IP."); return -1; }; if(port < 0 || port > 65535) { - stt->doEmitionDebugFoundData("[" + QString(hostname) + ":" + QString::number(port) + "" + "] Rejecting in _connection: Bad port."); return -1; }; @@ -410,7 +408,7 @@ lopaStr _BABrute(char *cookie, char *ip, int port, char *pathT, char *method) sockAddr.sin_family = AF_INET; sockAddr.sin_port = htons(port); HOSTENT *host; -#if defined(WIN32) +#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(host=gethostbyname (ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; else @@ -865,7 +863,7 @@ lopaStr _FTPBrute(char *ip, int port, PathStr *ps) sockAddr.sin_port = htons(port); HOSTENT *host; -#if defined(WIN32) +#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(host=gethostbyname (ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; else @@ -1441,12 +1439,10 @@ int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *C CSTR->lowerBuff = NULL; if(strlen(ip) == 0) { - stt->doEmitionDebugFoundData("[" + QString(ip) + ":" + QString::number(port) + "" + "] Rejecting in _connection: Bad IP."); return -1; }; if(port < 0 || port > 65535) { - stt->doEmitionDebugFoundData("[" + QString(ip) + ":" + QString::number(port) + "" + "] Rejecting in _connection: Bad port."); return -1; }; @@ -1456,7 +1452,7 @@ int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *C sockAddr.sin_port = htons(port); HOSTENT *host; -#if defined(WIN32) +#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); @@ -1479,7 +1475,7 @@ int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *C sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); }; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) u_long FAR cmd = 1; if( ioctlsocket( sock , FIONBIO, &cmd ) != 0 ) #else @@ -2120,7 +2116,7 @@ int _webLoginSeq(char *request, char *login, char *pass, char *ip, int port, int sockAddr.sin_family = AF_INET; sockAddr.sin_port = htons(port); HOSTENT *host; -#if defined(WIN32) +#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(host=gethostbyname (ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; else diff --git a/externData.h b/externData.h index 6f080c7..0dd92da 100644 --- a/externData.h +++ b/externData.h @@ -13,7 +13,7 @@ extern volatile int BA, cons, BrutingThrds, gThreads; extern char **loginLst, **passLst, **wfLoginLst, **wfPassLst, **sshlpLst, **GlobalNegatives; extern bool trackerOK, __savingBackUpFile, globalScanFlag, MapWidgetOpened, widgetIsHidden, OnlineMsgSentFlag, utfIRCFlag, HTMLDebugMode, gNegDebugMode, - gDebugMode, horLineFlag, gPingNScan; + gDebugMode, horLineFlag, gPingNScan, gShuffle; extern int found, indexIP, gMode, MaxPass, MaxLogin, MaxWFLogin, MaxWFPass, MaxSSHPass, GlobalNegativeSize, isActive, gMaxBrutingThreads, diff --git a/finder.cpp b/finder.cpp index f1a5dd4..07743d9 100644 --- a/finder.cpp +++ b/finder.cpp @@ -1531,6 +1531,7 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * { int rh = _header(ip, p, buffcpy, lx, &ps, &redirStrLst, rBuff); strcpy(cp, ps.codepage); + if (rh == -1) return -1; if(rh <= -2) { flag = ps.flag; diff --git a/nesca_3.cpp b/nesca_3.cpp index b81f612..ca565cd 100644 --- a/nesca_3.cpp +++ b/nesca_3.cpp @@ -2825,7 +2825,8 @@ void nesca_3::ConnectEvrthng() connect ( ui->importButton, SIGNAL( clicked() ), this, SLOT( importAndScan() ) ); connect ( ui->startScanButton_3, SIGNAL( clicked() ), this, SLOT( startScanButtonClicked() ) ); connect ( ui->startScanButton_4, SIGNAL( clicked() ), this, SLOT( startScanButtonClickedDNS() ) ); - connect ( ui->trackerOnOff, SIGNAL( toggled(bool) ), this, SLOT( ChangeTrackerOK(bool) ) ); + connect ( ui->shuffle_onoff, SIGNAL(toggled(bool)), this, SLOT(ChangeShuffle(bool))); + connect ( ui->trackerOnOff, SIGNAL(toggled(bool)), this, SLOT(ChangeTrackerOK(bool))); connect ( ui->pingingOnOff, SIGNAL( toggled(bool) ), this, SLOT( ChangePingerOK(bool) ) ); connect ( ui->debugFileOnOff, SIGNAL( toggled(bool) ), this, SLOT( ChangeDebugFileState(bool) ) ); connect ( ui->importThreads, SIGNAL( textChanged(QString) ), this, SLOT( ChangeLabelThreads_ValueChanged(QString) ) ); @@ -3332,7 +3333,7 @@ void _startMsgCheck() pbPointerFont.setFamily("Eurostile"); pbPointerFont.setPixelSize(8); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) WSADATA wsda; if (WSAStartup(0x0101, &wsda)) { @@ -3389,7 +3390,7 @@ void nesca_3::exitButtonClicked() { globalScanFlag = false; stt->terminate(); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) WSACleanup(); #endif qApp->quit(); @@ -3407,6 +3408,10 @@ void nesca_3::trayButtonClicked() tray->show(); }; }; +void nesca_3::ChangeShuffle(bool val) +{ + gShuffle = val; +}; void nesca_3::ChangeTrackerOK(bool val) { trackerOK = val; diff --git a/nesca_3.h b/nesca_3.h index 8033f14..5c39a60 100644 --- a/nesca_3.h +++ b/nesca_3.h @@ -128,6 +128,7 @@ protected: void startScanButtonClickedDNS(); void saveOptions(); void ChangeTrackerOK(bool val); + void ChangeShuffle(bool val); void ChangeLabelThreads_ValueChanged(QString); void PingTO_ChangeValue(QString); void ChangeLabelTO_ValueChanged(QString); diff --git a/nesca_3.ui b/nesca_3.ui index f82fef6..c88ef91 100644 --- a/nesca_3.ui +++ b/nesca_3.ui @@ -1146,7 +1146,7 @@ border-radius: 3px; 30 - 90 + 100 208 17 @@ -1314,7 +1314,7 @@ border-radius: 3px; 30 - 110 + 116 276 17 @@ -1341,8 +1341,8 @@ border-radius: 3px; 30 - 70 - 85 + 84 + 75 17 @@ -1358,7 +1358,7 @@ border-radius: 3px; color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0); - Ping hosts + Ping hosts: Ctrl+S @@ -1373,10 +1373,10 @@ border-radius: 3px; - 390 - 70 + 108 + 86 51 - 20 + 15 @@ -1403,9 +1403,9 @@ border-radius: 3px; - 320 - 71 - 68 + 163 + 85 + 17 16 @@ -1418,7 +1418,7 @@ border-radius: 3px; color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0); - Ping timeout: + ms @@ -1428,7 +1428,7 @@ border-radius: 3px; 390 - 90 + 69 51 20 @@ -1458,7 +1458,7 @@ border-radius: 3px; 320 - 90 + 69 68 16 @@ -1479,7 +1479,7 @@ border-radius: 3px; 320 - 105 + 84 62 26 @@ -1505,7 +1505,7 @@ border-radius: 3px; 390 - 110 + 89 51 20 @@ -1531,6 +1531,36 @@ border-radius: 3px; 100 + + + + 30 + 68 + 100 + 17 + + + + + Eurostile + + + + Shuffle ip-ranges before scan. + + + color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0); + + + Shuffle ip ranges + + + Ctrl+S + + + true + + diff --git a/nesca_startModule.cpp b/nesca_startModule.cpp index 06c140d..cbd4f17 100644 --- a/nesca_startModule.cpp +++ b/nesca_startModule.cpp @@ -10,6 +10,7 @@ typedef struct ST{ QJsonArray *jsonArr = new QJsonArray(); +bool gShuffle = true; bool __savingBackUpFile = false; bool horLineFlag = false; static int portArr[65536] = {0}; @@ -64,7 +65,7 @@ void SaveErrorLog(char *sender, char *MesSent, char *ReplRecv) { fclose(errFile); }; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) CreateDirectory(L"./logs", NULL); #else struct stat st = {0}; @@ -378,7 +379,7 @@ void _saver() }; }; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) void _timer() #else void *_timer() @@ -420,7 +421,7 @@ void *_timer() }; }; bool trackAlreadyGoing = false; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) void _tracker() #else void *_tracker() @@ -450,7 +451,7 @@ void *_tracker() HOSTENT *host; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv); else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else @@ -649,7 +650,7 @@ void *_tracker() delete jsonArr; jsonArr = new QJsonArray(); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer); else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else @@ -789,11 +790,16 @@ void *_tracker() unsigned long int numOfIps(int ipsstart[], int ipsend[]) { - gTargets += 256*256*256*(ipsend[0] - ipsstart[0]); - gTargets += 256*256*(ipsend[1] - ipsstart[1]); - gTargets += 256*(ipsend[2] - ipsstart[2]); + gTargets += 16777216 * (ipsend[0] - ipsstart[0]); + gTargets += 65536 * (ipsend[1] - ipsstart[1]); + gTargets += 256 * (ipsend[2] - ipsstart[2]); gTargets += (ipsend[3] - ipsstart[3]); gTargetsOverall = gTargets - 1; + + //unsigned long ip1 = (ipsstart[0] * 16777216) + (ipsstart[1] * 65536) + (ipsstart[2] * 256) + ipsstart[3]; + //unsigned long ip2 = (ipsend[0] * 16777216) + (ipsend[1] * 65536) + (ipsend[2] * 256) + ipsend[3]; + //unsigned long gTargets = ip2 - ip1; + return gTargets; }; //#include @@ -868,7 +874,7 @@ unsigned long int numOfIps(int ipsstart[], int ipsend[]) //}; Connector con; -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) void _connect(void* ss) #else void *_connect(void* ss) @@ -2209,7 +2215,7 @@ int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) targetAndIPWriter(--gTargets, st->argv); ConInc(); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(globalScanFlag) _beginthread( (void(*)(void*))_connect, 0, st ); #else if(globalScanFlag) @@ -2245,7 +2251,7 @@ int startScan(char* args) ZeroMemory(ipsstart, sizeof(ipsstart)); ZeroMemory(ipsend, sizeof(ipsend)); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) CreateDirectory(L"./result_files", NULL); #else struct stat st = {0}; @@ -2283,25 +2289,101 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); _NegativeFapper(); char res[256] = {0}; - if(gMode == 0) + if (gMode == 0) { -#if defined(WIN32) - _beginthread( (void(*)(void*))_saver, 0, NULL ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_saver, 0, NULL); #else pthread_t thrs; pthread_create(&thrs, NULL, (void *(*)(void*))&_saver, NULL); #endif -#if defined(WIN32) - if(trackerOK) _beginthread( (void(*)(void*))_tracker, 0, NULL ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + if (trackerOK) _beginthread((void(*)(void*))_tracker, 0, NULL); Sleep(50); - _beginthread( (void(*)(void*))_timer, 0, NULL ); + _beginthread((void(*)(void*))_timer, 0, NULL); #else pthread_t thrt; pthread_t thrtt; if(trackerOK) pthread_create(&thrt, NULL, (void *(*)(void*))&_tracker, NULL); pthread_create(&thrtt, NULL, (void *(*)(void*))&_timer, NULL); #endif - int eor0 = 0, eor1 = 0, eor2 = 0, eor3 = 0; + + unsigned long ip1 = (ipsstart[0] * 16777216) + (ipsstart[1] * 65536) + (ipsstart[2] * 256) + ipsstart[3]; + unsigned long ip2 = (ipsend[0] * 16777216) + (ipsend[1] * 65536) + (ipsend[2] * 256) + ipsend[3]; + + switch (gShuffle) { + case true: { + std::vector ipVec; + struct in_addr tAddr; + + for (unsigned long i = ip1; i <= ip2; ++i) { + if (globalScanFlag == false) break; + int offset = ip2 - i; + + tAddr.s_addr = i; + ipVec.push_back(std::to_string(tAddr.S_un.S_un_b.s_b4) + "." + std::to_string(tAddr.S_un.S_un_b.s_b3) + "." + std::to_string(tAddr.S_un.S_un_b.s_b2) + "." + std::to_string(tAddr.S_un.S_un_b.s_b1)); + + if (ipVec.size() >= (offset < 1000 ? offset : 1000)) { + + std::random_shuffle(ipVec.begin(), ipVec.end()); + while (ipVec.size() != 0) { + + if (globalScanFlag == false) goto haters_gonna_hate_IPM; + st = new sockstruct(); + ZeroMemory(st->argv, sizeof(st->argv)); + + while (cons >= gThreads) Sleep(500); + ++indexIP; + strcpy(st->argv, ipVec[0].c_str()); + strcpy(saveStartIP, ipVec[0].c_str()); + ipVec.erase(ipVec.begin()); + + targetAndIPWriter(gTargets--, st->argv); + ConInc(); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_connect, 0, st); +#else + pthread_t thrc; + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st); +#endif + Sleep(gThreadDelay); + } + } + } + + haters_gonna_hate_IPM:; + break; + } + case false: { + struct in_addr tAddr; + for (unsigned long i = ip1; i <= ip2; ++i) { + if (globalScanFlag == false) break; + st = new sockstruct(); + ZeroMemory(st->argv, sizeof(st->argv)); + ZeroMemory(res, sizeof(res)); + while (cons >= gThreads) Sleep(500); + ++indexIP; + + tAddr.s_addr = i; + strcpy(res, (std::to_string(tAddr.S_un.S_un_b.s_b4) + "." + std::to_string(tAddr.S_un.S_un_b.s_b3) + "." + std::to_string(tAddr.S_un.S_un_b.s_b2) + "." + std::to_string(tAddr.S_un.S_un_b.s_b1)).c_str()); + strcpy(st->argv, res); + strcpy(saveStartIP, res); + + targetAndIPWriter(gTargets--, st->argv); + ConInc(); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_connect, 0, st); +#else + pthread_t thrc; + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st); +#endif + Sleep(gThreadDelay); + } + break; + } + } + + /*int eor0 = 0, eor1 = 0, eor2 = 0, eor3 = 0; stt->doEmitionChangeStatus("Scanning..."); sockstruct *st = NULL; while ((eor0 == 0 || eor1 == 0 || eor2 == 0 || eor3 == 0 ) && globalScanFlag) @@ -2342,7 +2424,7 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); targetAndIPWriter(gTargets--, st->argv); ConInc(); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) _beginthread( (void(*)(void*))_connect, 0, st ); #else pthread_t thrc; @@ -2366,11 +2448,11 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); ipsstart[3] = 0; ipsstart[2] = 0; ipsstart[1] = 0; - }; + };*/ } else if(gMode == 1 ) { -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) _beginthread( (void(*)(void*))_saver, 0, NULL ); #else pthread_t thrs; @@ -2382,7 +2464,7 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); if(trackerOK) { -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(trackerOK) _beginthread( (void(*)(void*))_tracker, 0, NULL ); #else pthread_t thrt; @@ -2391,7 +2473,7 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); }; Sleep(40); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) _beginthread( (void(*)(void*))_timer, 0, NULL ); #else pthread_t thrtt; @@ -2490,7 +2572,6 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); stt->doEmitionRedFoundData(errStr); return -1; - }; }; @@ -2511,9 +2592,9 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); stt->doEmitionRedFoundData("DNS-Mode error"); }; } - else if(gMode == -1) + else if (gMode == -1) { - if(flCounter == 0) + if (flCounter == 0) { stt->doEmitionRedFoundData("Empty IP list."); isActive = 0; @@ -2522,34 +2603,33 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); return -1; }; -#if defined(WIN32) - _beginthread( (void(*)(void*))_saver, 0, NULL ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_saver, 0, NULL); #else pthread_t thrs; pthread_create(&thrs, NULL, (void *(*)(void*))&_saver, NULL); #endif - if(trackerOK) + if (trackerOK) { -#if defined(WIN32) - _beginthread( (void(*)(void*))_tracker, 0, NULL ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_tracker, 0, NULL); #else - pthread_t thrt; - pthread_create(&thrt, NULL, (void *(*)(void*))&_tracker, NULL); + pthread_t thrt; + pthread_create(&thrt, NULL, (void *(*)(void*))&_tracker, NULL); #endif }; Sleep(40); -#if defined(WIN32) - _beginthread( (void(*)(void*))_timer, 0, NULL ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_timer, 0, NULL); #else pthread_t thrtt; pthread_create(&thrtt, NULL, (void *(*)(void*))&_timer, NULL); #endif - int eor0 = 0, eor1 = 0, eor2 = 0, eor3 = 0; stt->doEmitionChangeStatus("Scanning..."); sockstruct *st = NULL; - for(gC = 0; gC < flCounter; ++gC) + for (gC = 0; gC < flCounter; ++gC) { strcpy(metaRange, std::to_string(ipsstartfl[gC][0]).c_str()); strcat(metaRange, "."); @@ -2567,79 +2647,153 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); strcat(metaRange, "."); strcat(metaRange, std::to_string(ipsendfl[gC][3]).c_str()); - eor0 = 0, eor1 = 0, eor2 = 0, eor3 = 0; - while ((eor0 == 0 || eor1 == 0 || eor2 == 0 || eor3 == 0) && globalScanFlag) - { - if(globalScanFlag == false) break; - while(ipsstartfl[gC][0] < 256 && eor0 == 0) - { - if(globalScanFlag == false) break; - if(ipsstartfl[gC][0] == ipsendfl[gC][0]) eor0 = 1; - while(ipsstartfl[gC][1] < 256 && eor1 == 0) - { - if(globalScanFlag == false) break; - if(ipsstartfl[gC][1] == ipsendfl[gC][1] && eor0 == 1) eor1 = 1; - while(ipsstartfl[gC][2] < 256 && eor2 == 0) - { - if(globalScanFlag == false) break; - if(ipsstartfl[gC][2] == ipsendfl[gC][2] && eor1 == 1) eor2 = 1; - while(ipsstartfl[gC][3] < 256 && eor3 == 0) - { - if(globalScanFlag == false) break; + unsigned long ip1 = (ipsstartfl[gC][0] * 16777216) + (ipsstartfl[gC][1] * 65536) + (ipsstartfl[gC][2] * 256) + ipsstartfl[gC][3]; + unsigned long ip2 = (ipsendfl[gC][0] * 16777216) + (ipsendfl[gC][1] * 65536) + (ipsendfl[gC][2] * 256) + ipsendfl[gC][3]; + + switch (gShuffle) { + case true: { + std::vector ipVec; + struct in_addr tAddr; + + for (unsigned long i = ip1; i <= ip2; ++i) { + if (globalScanFlag == false) break; + int offset = ip2 - i; + + tAddr.s_addr = i; + ipVec.push_back(std::to_string(tAddr.S_un.S_un_b.s_b4) + "." + std::to_string(tAddr.S_un.S_un_b.s_b3) + "." + std::to_string(tAddr.S_un.S_un_b.s_b2) + "." + std::to_string(tAddr.S_un.S_un_b.s_b1)); + + if (ipVec.size() >= (offset < 1000 ? offset : 1000)) { + + std::random_shuffle(ipVec.begin(), ipVec.end()); + while (ipVec.size() != 0) { + + if (globalScanFlag == false) goto haters_gonna_hate_IM; + st = new sockstruct(); + ZeroMemory(st->argv, sizeof(st->argv)); + + while (cons >= gThreads) Sleep(500); + ++indexIP; + strcpy(st->argv, ipVec[0].c_str()); + strcpy(saveStartIP, ipVec[0].c_str()); + ipVec.erase(ipVec.begin()); + + targetAndIPWriter(gTargets--, st->argv); + ConInc(); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_connect, 0, st); +#else + pthread_t thrc; + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st); +#endif + Sleep(gThreadDelay); + } + } + } + haters_gonna_hate_IM:; + break; + } + case false: { + struct in_addr tAddr; + for (unsigned long i = ip1; i <= ip2; ++i) { + if (globalScanFlag == false) break; st = new sockstruct(); ZeroMemory(st->argv, sizeof(st->argv)); ZeroMemory(res, sizeof(res)); - - while(cons >= gThreads) Sleep(300); - - if(ipsstartfl[gC][3] == ipsendfl[gC][3] && eor2 == 1) eor3 = 1; - + while (cons >= gThreads) Sleep(500); ++indexIP; - strcat(res, std::to_string(ipsstartfl[gC][0]).c_str()); - strcat(res, "."); - strcat(res, std::to_string(ipsstartfl[gC][1]).c_str()); - strcat(res, "."); - strcat(res, std::to_string(ipsstartfl[gC][2]).c_str()); - strcat(res, "."); - strcat(res, std::to_string(ipsstartfl[gC][3]).c_str()); - + tAddr.s_addr = i; + strcpy(res, (std::to_string(tAddr.S_un.S_un_b.s_b4) + "." + std::to_string(tAddr.S_un.S_un_b.s_b3) + "." + std::to_string(tAddr.S_un.S_un_b.s_b2) + "." + std::to_string(tAddr.S_un.S_un_b.s_b1)).c_str()); strcpy(st->argv, res); strcpy(saveStartIP, res); targetAndIPWriter(gTargets--, st->argv); - ConInc(); -#if defined(WIN32) - _beginthread( (void(*)(void*))_connect, 0, st ); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_connect, 0, st); #else pthread_t thrc; - pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st ); + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st); #endif Sleep(gThreadDelay); - if(ipsstartfl[gC][3] == 255) break; - if(ipsstartfl[gC][3] <= ipsendfl[gC][3]) ++ipsstartfl[gC][3]; - }; - ipsstartfl[gC][3] = 0; - if(ipsstartfl[gC][2] == 255) break; - if(ipsstartfl[gC][2] <= ipsendfl[gC][2]) ++ipsstartfl[gC][2]; - }; - ipsstartfl[gC][3] = 0; - ipsstartfl[gC][2] = 0; - if(ipsstartfl[gC][1] == 255) break; - if(ipsstartfl[gC][1] <= ipsendfl[gC][1]) ++ipsstartfl[gC][1]; - }; - ipsstartfl[gC][3] = 0; - ipsstartfl[gC][2] = 0; - ipsstartfl[gC][1] = 0; - if(ipsstartfl[gC][0] == 255) break; - if(ipsstartfl[gC][0] <= ipsendfl[gC][0]) ++ipsstartfl[gC][0]; - }; - ipsstartfl[gC][3] = 0; - ipsstartfl[gC][2] = 0; - ipsstartfl[gC][1] = 0; + + } + break; + /*int eor0 = 0, eor1 = 0, eor2 = 0, eor3 = 0; + while ((eor0 == 0 || eor1 == 0 || eor2 == 0 || eor3 == 0) && globalScanFlag) + { + if (globalScanFlag == false) break; + while (ipsstartfl[gC][0] < 256 && eor0 == 0) + { + if (globalScanFlag == false) break; + if (ipsstartfl[gC][0] == ipsendfl[gC][0]) eor0 = 1; + while (ipsstartfl[gC][1] < 256 && eor1 == 0) + { + if (globalScanFlag == false) break; + if (ipsstartfl[gC][1] == ipsendfl[gC][1] && eor0 == 1) eor1 = 1; + while (ipsstartfl[gC][2] < 256 && eor2 == 0) + { + if (globalScanFlag == false) break; + if (ipsstartfl[gC][2] == ipsendfl[gC][2] && eor1 == 1) eor2 = 1; + while (ipsstartfl[gC][3] < 256 && eor3 == 0) + { + if (globalScanFlag == false) break; + st = new sockstruct(); + ZeroMemory(st->argv, sizeof(st->argv)); + ZeroMemory(res, sizeof(res)); + + while (cons >= gThreads) Sleep(300); + + if (ipsstartfl[gC][3] == ipsendfl[gC][3] && eor2 == 1) eor3 = 1; + + ++indexIP; + + strcat(res, std::to_string(ipsstartfl[gC][0]).c_str()); + strcat(res, "."); + strcat(res, std::to_string(ipsstartfl[gC][1]).c_str()); + strcat(res, "."); + strcat(res, std::to_string(ipsstartfl[gC][2]).c_str()); + strcat(res, "."); + strcat(res, std::to_string(ipsstartfl[gC][3]).c_str()); + + strcpy(st->argv, res); + strcpy(saveStartIP, res); + + targetAndIPWriter(gTargets--, st->argv); + + ConInc(); +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) + _beginthread((void(*)(void*))_connect, 0, st); +#else + pthread_t thrc; + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st); +#endif + Sleep(gThreadDelay); + if (ipsstartfl[gC][3] == 255) break; + if (ipsstartfl[gC][3] <= ipsendfl[gC][3]) ++ipsstartfl[gC][3]; + }; + ipsstartfl[gC][3] = 0; + if (ipsstartfl[gC][2] == 255) break; + if (ipsstartfl[gC][2] <= ipsendfl[gC][2]) ++ipsstartfl[gC][2]; + }; + ipsstartfl[gC][3] = 0; + ipsstartfl[gC][2] = 0; + if (ipsstartfl[gC][1] == 255) break; + if (ipsstartfl[gC][1] <= ipsendfl[gC][1]) ++ipsstartfl[gC][1]; + }; + ipsstartfl[gC][3] = 0; + ipsstartfl[gC][2] = 0; + ipsstartfl[gC][1] = 0; + if (ipsstartfl[gC][0] == 255) break; + if (ipsstartfl[gC][0] <= ipsendfl[gC][0]) ++ipsstartfl[gC][0]; + }; + ipsstartfl[gC][3] = 0; + ipsstartfl[gC][2] = 0; + ipsstartfl[gC][1] = 0; + };*/ }; - }; + } + } } else { diff --git a/oIRC_Th.cpp b/oIRC_Th.cpp index ef6fab5..286177d 100644 --- a/oIRC_Th.cpp +++ b/oIRC_Th.cpp @@ -315,7 +315,7 @@ void IRCLoop() { addr.sin_port = htons(atoi(ircProxyPort)); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy); else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else @@ -327,7 +327,7 @@ void IRCLoop() { addr.sin_port = htons(atoi(ircPort)); -#if defined(WIN32) +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ircServer) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircServer); else if(host = gethostbyname (ircServer)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; #else