diff --git a/finder.cpp b/finder.cpp index abb2fa7..4e04279 100755 --- a/finder.cpp +++ b/finder.cpp @@ -661,9 +661,11 @@ void putInFile(int flag, char *ip, char *port, int recd, char *finalstr, char *h QTextCodec *codec; strcat(msg, ""); strcat(msg, ip); + strcat(msg, ":"); strcat(msg, port); strcat(msg, ""); @@ -711,10 +713,15 @@ void putInFile(int flag, char *ip, char *port, int recd, char *finalstr, char *h }; } else strcat(log, " "); - strcat(log, ":: "); + strcat(log, "; Received: "); + strcat(log, "\">"); + strcat(log, ip); + strcat(log, ":"); + strcat(log, port); + strcat(log, "; Received: "); strcat(log, std::to_string((long double)recd).c_str()); strcat(log, ""); @@ -1087,26 +1094,29 @@ void _specWFBrute(char *ip, int port, char *hl, char *buff, int flag, char *path if(inputVec.size() > 0) { + char tport[16] = {0}; + strcpy(tport, itoa(port, b, 10)); if(strlen(userVal) != 0 && strlen(passVal) != 0) { Connector con; lopaStr lps = con._WFLobby(cookie, ip, port, methodVal, actionVal, userVal, passVal, formVal); - char tport[16] = {0}; - strcpy(tport, itoa(port, b, 10)); if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0) { _specFillerWF(hl, ip, tport, title, lps.login, lps.pass, flag); - fillGlobalLogData(ip, hl, tport, std::to_string((long double)recd).c_str(), title, lps.login, lps.pass, comment, cp, "Web Form"); - + fillGlobalLogData(ip, hl, tport, std::to_string((long double)recd).c_str(), title, lps.login, lps.pass, comment, cp, tclass); + putInFile(flag, ip, tport, recd, title, hl, cp); }; } else { stt->doEmitionFoundData("" + QString(ip) + ":" + QString::number(port) + " - [WF]: Cannot find user/pass field."); + fillGlobalLogData(ip, hl, tport, std::to_string((long double)recd).c_str(), title, "?", "?", "Unknown webform", cp, tclass); + putInFile(flag, ip, tport, recd, title, hl, cp); }; }; + OnLiner = 0; }; void _specWEBIPCAMBrute(char *ip, int port, char *hl, char *finalstr, int flag, char *comment, char *tclass, char *cp, int recd, char *SPEC) { @@ -1125,8 +1135,7 @@ void _specWEBIPCAMBrute(char *ip, int port, char *hl, char *finalstr, int flag, { _specFillerBA(hl, ip, tport, finalstr, lps.login, lps.pass, flag); - fillGlobalLogData(ip, hl, tport, std::to_string((long double)recd).c_str(), finalstr, lps.login, lps.pass, comment, cp, "Basic Authorization"); - + fillGlobalLogData(ip, hl, tport, std::to_string((long double)recd).c_str(), finalstr, lps.login, lps.pass, comment, cp, "Basic Authorization"); }; }; void _specBrute(char *ip, int port, char *hl, char *finalstr, int flag, char *path, char *comment, char *tclass, char *cp, int recd, char *data) @@ -1339,8 +1348,7 @@ int Lexems::_filler(int p, char* buffcpy, char* ip, int recd, Lexems *lx, char * char cp[32] = {0}; strcpy(cp, "utf-8"); char port[32] = {0}; - strcpy(port, ":"); - strcat(port, itoa(p, b, 10)); + strcpy(port, itoa(p, b, 10)); int flag = 0; flag = ContentFilter(buffcpy, p, ip); diff --git a/nesca_3.cpp b/nesca_3.cpp index c6de242..a4f2927 100755 --- a/nesca_3.cpp +++ b/nesca_3.cpp @@ -457,7 +457,7 @@ void SetValidators() ui->iptoLine_value_2->setValidator(validator); ui->iptoLine_value_3->setValidator(validator); - validator = new QRegExpValidator(QRegExp("(\\w|-|\\.|\\$)+"), NULL); + validator = new QRegExpValidator(QRegExp("(\\w|-|\\.|\\[|\\])+"), NULL); ui->lineEditStartIPDNS->setValidator(validator); validator = new QRegExpValidator(QRegExp("(\\w|-|\\.)+((\\w|-|\\.)+)+"), NULL); @@ -2925,40 +2925,16 @@ void RestoreSession() } else if(gMode == 1) { - dnsVec.clear(); - FILE *f = fopen("dnsbackup.lst", "r"); - char curDNS[256] = {0}; - int counter = 0; - if(f != NULL) - { - stt->doEmitionYellowFoundData("Loading DNS-range..."); - while(fgets(curDNS, 256, f) != NULL) - { - if(strcmp(curDNS, "") == 0 || strcmp(curDNS, " ") == 0 || strcmp(curDNS, "\r\n") == 0 || strcmp(curDNS, "\n") == 0) - { - ZeroMemory(curDNS, sizeof(curDNS)); - continue; - }; + ui->lineEditStartIPDNS->setText(QString(lex)); + lex = strtok(NULL, " "); + strcpy(gFirstDom, lex); - ++counter; - if(curDNS[strlen(curDNS) - 1] == '\n') curDNS[strlen(curDNS) - 1] = '\0'; - dnsVec.push_back(std::string(curDNS)); - ZeroMemory(curDNS, 256); - }; - stt->doEmitionYellowFoundData("DNS-range loaded (" + QString::number(counter) + " domains)"); - - ui->lineEditStartIPDNS->setText(QString(lex)); - lex = strtok(NULL, " "); - strcpy(gFirstDom, lex); - - lex = strtok(NULL, " "); - gThreads = atoi(lex); - ui->lineEditThread->setText(QString(lex)); - ui->lineILVL->setText(QString(gFirstDom)); - ui->tabMainWidget->setCurrentIndex(1); - ui->startScanButton_4->setText("RESTORE"); - fclose(f); - }; + lex = strtok(NULL, " "); + gThreads = atoi(lex); + ui->lineEditThread->setText(QString(lex)); + ui->lineILVL->setText(QString(gFirstDom)); + ui->tabMainWidget->setCurrentIndex(1); + ui->startScanButton_4->setText("RESTORE"); } else if(gMode == -1) { diff --git a/nesca_3.ui b/nesca_3.ui index 846446a..ec208a8 100755 --- a/nesca_3.ui +++ b/nesca_3.ui @@ -593,7 +593,7 @@ color: rgb(216, 216, 216);background-color: rgb(56, 56, 56); - $a$a$a$a + [09][az][0-] 128 @@ -602,7 +602,7 @@ Qt::AlignCenter - Mask here ($a$a$a$a) + [09][az][0-][09][az][0-] diff --git a/nesca_startModule.cpp b/nesca_startModule.cpp index f3f02d1..84580d4 100755 --- a/nesca_startModule.cpp +++ b/nesca_startModule.cpp @@ -2,44 +2,37 @@ #include "STh.h" #include "resource.h" -int gC = 0; -static int portArr[65536] = {0}; -char endIP2[128] = {0}; QJsonArray *jsonArr = new QJsonArray(); +static int portArr[65536] = {0}; +int gC = 0; int gTimeOut = 3; int PieAnomC1 = 0, PieBA = 0, PieSusp = 0, PieLowl = 0, PieWF = 0, PieSSH = 0; int AnomC1 = 0, Filt = 0, Overl = 0, Lowl = 0, Alive = 0, Activity = 0, saved = 0, Susp = 0, WF = 0, offlines = 0, ssh = 0; -volatile int BA = 0; int GlobalWSAErr = 0; int GlobalNegativeSize = 0; -volatile int BrutingThrds = 0; +int ovrlIPs = 0, ipCounter = 0; +int mode; +int found = 0, fillerFlag = 0, indexIP = 1; +int gMaxSize = 65536; +int gMode; +int OnLiner = 0; +int MaxPass = 0, MaxLogin = 0, MaxTags = 0, MaxWFLogin = 0, MaxWFPass = 0, MaxSSHPass = 0; +int ipsstart[4], ipsend[4], ipsstartfl[8192][4], ipsendfl[8192][4], starterIP[8192][4], + startNum, endNum, overallPorts, flCounter, octet[4]; +double ips = 0; char top_level_domain[128] = {0}; char startM[64] = {0}, endM[64] = {0}; +char endIP2[128] = {0}; char **GlobalNegatives = 0; char **loginLst, **passLst; char **wfLoginLst, **wfPassLst; char **sshlpLst; -double ips = 0; -volatile int cons = 0; -int ovrlIPs = 0, ipCounter = 0; -int mode; -volatile int threads = 20; -unsigned long int gTargets = 0, gTargetsOverall = 1; -int found = 0, fillerFlag = 0, indexIP = 1; -int gMaxSize = 65536; char des1[64] = {0}, res[32]= {0}; char saveStartIP[128] = {0}; char saveEndIP[128] = {0}; -volatile int gThreads; -int gMode; char gRange[128] = {0}; char gFirstDom[128] = {0}; char gPorts[65536] = {0}; -int OnLiner = 0; -int MaxPass = 0, MaxLogin = 0, MaxTags = 0, MaxWFLogin = 0, MaxWFPass = 0, MaxSSHPass = 0; -unsigned long int targets; -int ipsstart[4], ipsend[4], ipsstartfl[8192][4], ipsendfl[8192][4], starterIP[8192][4], - startNum, endNum, overallPorts, flCounter, octet[4]; char metaIPDNS[256] = {0}; char metaRange[256] = {0}; char metaPercent[256] = {0}; @@ -47,8 +40,15 @@ char metaIPS[256] = {0}; char metaTargets[256] = {0}; char metaETA[256] = {0}; char metaOffline[256] = {0}; -volatile bool ConnLocked = false; bool ErrLogFirstTime = true; +volatile bool ConnLocked = false; +unsigned long long gTargets = 0, gTargetsOverall = 1, targets; +volatile int gThreads; +volatile int cons = 0; +volatile int BA = 0; +volatile int BrutingThrds = 0; +volatile int threads = 20; + void SaveErrorLog(char *sender, char *MesSent, char *ReplRecv) { FILE *errFile = fopen("./logs/ns-track_errors.html", "r"); @@ -161,29 +161,6 @@ void ConDec() stt->doEmitionThreads(QString::number(cons) + "/" + QString::number(gThreads)); #pragma endregion }; - -std::vector dnsVec; -std::string dnsVecBU; -void _saveDNSMode() -{ - if(dnsVecBU.size() != 0) - { - FILE *dnsFile = fopen("dnsbackup.lst", "w"); - if(dnsFile != NULL) - { - for(int i = std::distance(dnsVec.begin(), std::find(dnsVec.begin(), dnsVec.end(), dnsVecBU)); i < dnsVec.size(); ++i) - { - fputs(dnsVec[i].c_str(), dnsFile); - fputc('\n', dnsFile); - }; - fclose(dnsFile); - } - else - { - stt->doEmitionRedFoundData("[!!!] Cant save DNS-range."); - }; - }; -}; void _SaveBackupToFile() { char saveStr[512] = {0}; @@ -194,17 +171,7 @@ void _SaveBackupToFile() { if(gMode == 1) { - _saveDNSMode(); - if(strstr(endIP2, "RESTORED_SESSION") == NULL) - { - strcpy(endStr, "[RESTORED_SESSION("); - strcat(endStr, endIP2); - strcat(endStr, ")]"); - } - else - { - strcpy(endStr, endIP2); - }; + strcpy(endStr, endIP2); } else { @@ -2012,10 +1979,121 @@ int ParseArgs(int argc, char *argv[]) return 0; }; + +char charAll[38] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '_', '-'}; + +sockstruct *st = NULL; +char iip[256] = {0}; +int _getPos(char l) +{ + for(int i = 0; i < 38; ++i) + { + if(l == charAll[i]) return i; + }; + return -1; +}; +int _getChunkCount(char *data) +{ + int firstPos = _getPos(data[1]); + int secondPos = _getPos(data[2]); + return secondPos - firstPos + 1; +}; +int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) +{ + if(strstr(mask, "[") != NULL) + { + char maskEnd[1024] = {0}; + char maskRes[1024] = {0}; + char *ptr1 = strstr(mask, "["); + char *ptr2 = strstr(ptr1, "]"); + int sz = ptr2 - ptr1; + char chunk[8] = {0}; + strncpy(chunk, ptr1, sz + 1); + int firstPos = _getPos(chunk[1]); + int secondPos = _getPos(chunk[2]); + + if(firstPos > secondPos) + { + stt->doEmitionRedFoundData("Error at mask (Wrong letter sequence)"); + return -1; + }; + + char maskStart[1024] = {0}; + int startPosition = strstr(mask, "[") - mask; + strncpy(maskStart, mask, startPosition); + + char maskEntry[1024] = {0}; + if(saveMaskEnder != NULL) + { + int startSavePosition = strstr(saveMaskEnder, "[") - saveMaskEnder; + strncpy(maskEntry, saveMaskEnder, startSavePosition); + }; + + int szMask = strlen(mask); + int szOffset = startPosition + 2; + if(szMask != szOffset) strcpy(maskEnd, strstr(mask, "]") + 1); + else + { + ZeroMemory(maskEnd, sizeof(maskEnd)); + }; + char maskSaver[128] = {0}; + if(firstPos != -1 && secondPos != -1) + { + for(int i = firstPos; i <= secondPos; ++i) + { + if(globalScanFlag == false) break; + strcpy(maskSaver, saveMask); + strcat(maskSaver, maskEntry); + chunk[1] = charAll[i]; + strcat(maskSaver, chunk); + strcpy(maskRes, maskStart); + maskRes[startPosition] = charAll[i]; + strcat(maskRes, maskEnd); + + if(_GetDNSFromMask(maskRes, maskSaver, maskEnd) == -1) return -1; + ZeroMemory(maskSaver, sizeof(maskSaver)); + ZeroMemory(maskRes, sizeof(maskRes)); + }; + }; + } + else + { +#pragma region DNS-SCAN + if(globalScanFlag == false) return 0; + strcpy(endIP2, saveMask); + st = new sockstruct(); + ZeroMemory(st->argv, sizeof(st->argv)); + ZeroMemory(iip, sizeof(iip)); + while(cons >= gThreads) Sleep(300); + strcpy(iip, mask); + strcpy(saveStartIP, iip); + strcat(iip, top_level_domain); + + ++indexIP; + + strcpy(st->argv, iip); + + targetAndIPWriter(--gTargets, st->argv); + + ConInc(); +#if defined(WIN32) + if(globalScanFlag) _beginthread( (void(*)(void*))_connect, 0, st ); +#else + if(globalScanFlag) + { + pthread_t thrc; + pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st ); + }; +#endif + Sleep(10); +#pragma endregion + }; +}; int startScan(char* args) { - dnsVecBU = ""; flCounter = 0; PieAnomC1 = 0, PieWF = 0, PieBA = 0, PieSusp = 0, PieLowl = 0, PieSSH = 0; AnomC1 = 0, BA = 0, Filt = 0, Overl = 0, Lowl = 0, Alive = 0, Activity = 0, saved = 0, Susp = 0, WF = 0, offlines = 0; @@ -2192,171 +2270,71 @@ stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); pthread_create(&thrtt, NULL, (void *(*)(void*))&_timer, NULL); #endif - char *charAll[38] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", - "-", "_", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", - "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; - char *charDec[10] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; - char *charChar[26] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", - "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; - char dataEntry[1024] = {0}; strcpy(dataEntry, saveEndIP); - char dataStart[1024] = {0}; - char dataEnd[1024] = {0}; - char dataRes[1024] = {0}; - if(strstr(dataEntry, "RESTORED") == NULL) - { - dnsVec.clear(); - std::vector maskVec; - maskVec.push_back(dataEntry); - int index = 0; int sz = strlen(saveEndIP); - - if(strstr(dataEntry, "$") == NULL) + for(int i = 0; i < sz; ++i) { - dnsVec.push_back(dataEntry); - } - else - { - for(int i = 0; i < sz; ++i) + if(dataEntry[i] == '[') { - if(dataEntry[i] == '$') + for(int j = i + 1; j < i + 3; ++j) { - ++i; - if(dataEntry[i] != 'd' && dataEntry[i] != 'a' && dataEntry[i] != 'c') + if((dataEntry[j] < '0' || dataEntry[j] > '9') + && (dataEntry[j] < 'a' || dataEntry[j] > 'z') + && dataEntry[j] != '_' + && dataEntry[j] != '-' + ) { - QString errStr = "Error in dns-range at " + QString::number(i-1); - errStr += " ("; - errStr += QString(dataEntry).mid(0, i-1); + QString errStr = "Error at mask (" + QString::number(j-1); + errStr += ") \""; + errStr += QString(dataEntry).mid(0, j-1); errStr += ""; - errStr += QString(dataEntry).mid(i-1, i+1); + errStr += QString(dataEntry).mid(j-1, j+1); errStr += ""; - errStr += QString(dataEntry).mid(i+1, strlen(dataEntry)); - errStr += ")"; + errStr += QString(dataEntry).mid(j+1, strlen(dataEntry)); + errStr += "\""; stt->doEmitionRedFoundData(errStr); - stt->doEmitionKillSttThread(); return -1; }; }; - }; - - stt->doEmitionYellowFoundData("Forming DNS-range, please wait..."); - - for(int vecIndex = 0; vecIndex < maskVec.size(); ++vecIndex) + i += 3; + } + else if(dataEntry[i] == ']') { - strcpy(dataEntry, maskVec[vecIndex].c_str()); + QString errStr = "Error at mask (" + QString::number(i-1); + errStr += ") \""; + errStr += QString(dataEntry).mid(0, i-1); + errStr += ""; + errStr += QString(dataEntry).mid(i-1, i+1); + errStr += ""; + errStr += QString(dataEntry).mid(i+1, strlen(dataEntry)); + errStr += "\""; - sz = strlen(dataEntry); - index = 0; - for(int i = 0; i < sz; ++i) - { - if(globalScanFlag == false) break; - if(dataEntry[i] == '$') - { - ++i; - if(dataEntry[i] == 'd') - { - strncpy(dataEnd, dataEntry + i + 1, sz - i - 1); + stt->doEmitionRedFoundData(errStr); + return -1; - for(int j = 0; j < 10; ++j) - { - strcpy(dataRes, dataStart); - strcat(dataRes, charDec[j]); - strcat(dataRes, dataEnd); - - maskVec.push_back(dataRes); - if(strstr(dataRes, "$") == NULL) dnsVec.push_back(dataRes); - }; - ZeroMemory(dataEntry, sizeof(dataEntry)); - ZeroMemory(dataRes, sizeof(dataRes)); - ZeroMemory(dataStart, sizeof(dataStart)); - ZeroMemory(dataEnd, sizeof(dataEnd)); - break; - } - else if(dataEntry[i] == 'a') - { - strncpy(dataEnd, dataEntry + i + 1, sz - i - 1); - - for(int j = 0; j < 38; ++j) - { - strcpy(dataRes, dataStart); - strcat(dataRes, charAll[j]); - strcat(dataRes, dataEnd); - - maskVec.push_back(dataRes); - if(strstr(dataRes, "$") == NULL) dnsVec.push_back(dataRes); - }; - ZeroMemory(dataEntry, sizeof(dataEntry)); - ZeroMemory(dataRes, sizeof(dataRes)); - ZeroMemory(dataStart, sizeof(dataStart)); - ZeroMemory(dataEnd, sizeof(dataEnd)); - break; - } - else if(dataEntry[i] == 'c') - { - strncpy(dataEnd, dataEntry + i + 1, sz - i - 1); - - for(int j = 0; j < 26; ++j) - { - strcpy(dataRes, dataStart); - strcat(dataRes, charChar[j]); - strcat(dataRes, dataEnd); - - maskVec.push_back(dataRes); - if(strstr(dataRes, "$") == NULL) dnsVec.push_back(dataRes); - }; - ZeroMemory(dataEntry, sizeof(dataEntry)); - ZeroMemory(dataRes, sizeof(dataRes)); - ZeroMemory(dataStart, sizeof(dataStart)); - ZeroMemory(dataEnd, sizeof(dataEnd)); - break; - }; - }; - dataStart[index++] = dataEntry[i]; - }; - }; - stt->doEmitionYellowFoundData("DNS-range is ready!"); + }; }; - }; - gTargets = dnsVec.size(); - gTargetsOverall = gTargets; - char iip[256] = {0}; - stt->doEmitionChangeStatus("Scanning..."); - sockstruct *st = NULL; - for(int i = 0; i < dnsVec.size(); ++i) - { - if(globalScanFlag == false) break; - st = new sockstruct(); - ZeroMemory(st->argv, sizeof(st->argv)); - ZeroMemory(iip, sizeof(iip)); - while(cons >= gThreads) Sleep(300); - strcpy(iip, dnsVec[i].c_str()); - strcpy(saveStartIP, iip); - strcat(iip, top_level_domain); - - ++indexIP; - - strcpy(st->argv, iip); - - targetAndIPWriter(--gTargets, st->argv); - - dnsVecBU = dnsVec[i]; - ConInc(); -#if defined(WIN32) - if(globalScanFlag) _beginthread( (void(*)(void*))_connect, 0, st ); -#else - if(globalScanFlag) + unsigned long long dnsCounter = 1; + char *dnsPtr1 = strstr(dataEntry, "["); + while(dnsPtr1 != NULL) { - pthread_t thrc; - pthread_create(&thrc, NULL, (void *(*)(void*))&_connect, st ); + dnsCounter *= _getChunkCount(dnsPtr1); + dnsPtr1 = strstr(dnsPtr1 + 1, "["); + }; + gTargets = dnsCounter; + gTargetsOverall = gTargets; + stt->doEmitionYellowFoundData("Starting DNS-scan..."); + stt->doEmitionChangeStatus("Scanning..."); + + if(_GetDNSFromMask(dataEntry, "", dataEntry) == -1) + { + stt->doEmitionRedFoundData("DNS-Mode error"); }; -#endif - Sleep(10); - }; } else if(gMode == -1) { diff --git a/resource.h b/resource.h index 96333dd..24da4ed 100755 --- a/resource.h +++ b/resource.h @@ -94,7 +94,6 @@ extern string toLowerStr(const char *str); extern QList lstOfLabels; extern bool ME2ScanFlag, QoSScanFlag, VoiceScanFlag, PieStatFlag; extern int AnomC1, Filt, Overl, Lowl, Alive, Activity, saved, Susp, WF, offlines, ssh; -extern volatile int BA; extern int PieAnomC1, PieSusp, PieBA, PieLowl, PieWF, PieSSH; extern bool connectedToIRC; extern bool globalScanFlag; @@ -128,7 +127,6 @@ extern char ircProxyPort[8]; extern char ircNick[32]; extern int stopGlobalLog; extern int GlobalNegativeSize; -extern volatile int BrutingThrds; extern char* thrds, top_level_domain[128]; extern char startM[64], endM[64]; struct workerStruct @@ -137,23 +135,23 @@ struct workerStruct bool giveMeMore; char argv[MAX_ADDR_LEN]; }; - extern char **GlobalNegatives; extern char **loginLst, **passLst, **wfLoginLst, **wfPassLst, **sshlpLst; extern int MaxPass, MaxLogin, MaxWFLogin, MaxWFPass, MaxSSHPass; - extern double ips; extern int ovrlIPs, ipCounter; extern int mode; -extern volatile int threads; -extern unsigned long int gTargets, gTargetsOverall, targets; +extern unsigned long long gTargets, gTargetsOverall, targets; +extern volatile int BA; extern volatile int cons; +extern volatile int BrutingThrds; +extern volatile int gThreads; +extern volatile int threads; extern int found, fillerFlag, indexIP; extern char timeLeft[64], tempRes[32], des1[64], res[32]; extern int gMaxSize; extern char saveStartIP[128]; extern char saveEndIP[128]; -extern volatile int gThreads; extern int gMode; extern char gRange[128]; extern char gFirstDom[128]; @@ -165,7 +163,7 @@ extern int ipsstart[4], ipsend[4], ipsstartfl[8192][4], ipsendfl[8192][4], start startNum, endNum, overallPorts, flCounter, octet[4]; -extern std::vector dnsVec; +//extern std::vector dnsVec; typedef struct ST{ char argv[2048];