From 01e4d262e3ac3dc4d8c0f1e06f1afaa36eebc988 Mon Sep 17 00:00:00 2001 From: cora48 Date: Thu, 2 Apr 2015 13:26:32 +0300 Subject: [PATCH] negative list utf support --- FileDownloader.cpp | 65 ++++++------ FileDownloader.h | 11 +- FileUpdater.cpp | 5 +- finder.cpp | 8 +- negatives.txt | 230 +++++++++++++++++++++--------------------- nesca.pro.user | 2 +- nesca_3.cpp | 5 + nesca_startModule.cpp | 18 ++-- 8 files changed, 182 insertions(+), 162 deletions(-) diff --git a/FileDownloader.cpp b/FileDownloader.cpp index c026590..c83bdb3 100644 --- a/FileDownloader.cpp +++ b/FileDownloader.cpp @@ -1,41 +1,46 @@ #include "FileDownloader.h" -#include "Connector.h" -#include "FileUpdater.h" -#include "istream" +#include "fstream" -bool FileDownloader::running = false; +std::string FileDownloader::lastModifiedNeg = ""; +std::string FileDownloader::lastModifiedL = ""; +std::string FileDownloader::lastModifiedP = ""; +std::string FileDownloader::lastModifiedSSH = ""; +std::string FileDownloader::lastModifiedWFL = ""; +std::string FileDownloader::lastModifiedWFP = ""; -int getCL(std::string *buffer) { +std::string getLM(std::string *buffer) { - std::size_t pos1 = buffer->find("Content-Length:"); + std::size_t pos1 = buffer->find("Last-Modified:"); if(pos1 == std::string::npos) { - stt->doEmitionFoundData("Cannot find Content-Length."); - return -1; + stt->doEmitionFoundData("Cannot find Last-Modified."); + return ""; } int pos2 = buffer->find("\r\n", pos1); if(pos2 == std::string::npos) { stt->doEmitionFoundData("Weird reply."); - return -1; + return ""; } std::string res = buffer->substr(pos1 + 15, pos2 - pos1 - 15); - return stoi(res); + return res; } -void checkWeb(const char *fileName, long *ptr) { +void checkWeb(const char *fileName, std::string *oldLM) { std::string buffer; Connector::nConnect(std::string("http://nesca.d3w.org/files/" + std::string(fileName)).c_str(), 80, &buffer); - int cl = getCL(&buffer); - if(cl == -1) return; + const std::string &lm = getLM(&buffer); + if(lm.size() == 0) return; - if(cl != *ptr) { - QString res(buffer.substr(buffer.find("\r\n\r\n") + 4).c_str()); - res.replace("\r\n", "\n"); - QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); - res = codec->toUnicode(res.toLocal8Bit().data()); - std::ofstream out(fileName); - out << std::string(res.toLocal8Bit().data()); + if(lm.compare(*oldLM) != 0) { + *oldLM = lm; + //QString res(buffer.substr(buffer.find("\r\n\r\n") + 4).c_str()); + std::string res(buffer.substr(buffer.find("\r\n\r\n") + 4).c_str()); + //res.replace("\r\n", "\n"); + //QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); + //res = codec->toUnicode(res.toLocal8Bit().data()); + std::ofstream out(fileName); + out << std::string(res); out.close(); stt->doEmitionFoundData("File " + QString(fileName) + " downloaded."); @@ -43,16 +48,14 @@ void checkWeb(const char *fileName, long *ptr) { } void FileDownloader::checkWebFiles() { - running = true; - while (globalScanFlag) { - checkWeb("negatives.txt", &FileUpdater::oldNegLstSize); - checkWeb("login.txt", &FileUpdater::oldLoginLstSize); - checkWeb("pass.txt", &FileUpdater::oldPassLstSize); - checkWeb("sshpass.txt", &FileUpdater::oldSSHLstSize); - checkWeb("wflogin.txt", &FileUpdater::oldWFLoginLstSize); - checkWeb("wfpass.txt", &FileUpdater::oldWFPassLstSize); - Sleep(600000); - } - running = false; + while (true) { + checkWeb("negatives.txt", &lastModifiedNeg); + checkWeb("login.txt", &lastModifiedL); + checkWeb("pass.txt", &lastModifiedP); + checkWeb("sshpass.txt", &lastModifiedSSH); + checkWeb("wflogin.txt", &lastModifiedWFL); + checkWeb("wfpass.txt", &lastModifiedWFP); + Sleep(6000); + } } diff --git a/FileDownloader.h b/FileDownloader.h index 73eaea6..cf9be26 100644 --- a/FileDownloader.h +++ b/FileDownloader.h @@ -1,9 +1,18 @@ #ifndef FILEDOWNLOADER_H #define FILEDOWNLOADER_H +#include "Connector.h" + class FileDownloader { +private: + static std::string lastModifiedNeg; + static std::string lastModifiedL; + static std::string lastModifiedP; + static std::string lastModifiedSSH; + static std::string lastModifiedWFL; + static std::string lastModifiedWFP; public: - static bool running; + static std::string lastModified; static void checkWebFiles(); }; diff --git a/FileUpdater.cpp b/FileUpdater.cpp index d1e8fe7..c0249c2 100644 --- a/FileUpdater.cpp +++ b/FileUpdater.cpp @@ -112,7 +112,7 @@ void ReadUTF8(FILE* nFile, char *cp) { } void negativeLoader() { - FILE *nFile = fopen("negatives.txt", "rb"); + FILE *nFile = fopen("negatives.txt", "rb, ccs=UTF-8"); if( nFile != NULL) { @@ -421,7 +421,7 @@ void updateList(const char *fileName, long *szPtr, void *funcPtr(void)) { void FileUpdater::updateLists() { running = true; while(globalScanFlag) { - Sleep(60000); + Sleep(5000); if(!globalScanFlag) break; loadOnce(); } @@ -438,6 +438,7 @@ void FileUpdater::loadOnce() { } void FileUpdater::FUClear() { + running = false; oldNegLstSize = 0; oldLoginLstSize = 0; oldPassLstSize = 0; diff --git a/finder.cpp b/finder.cpp index f88af39..da7e3e7 100644 --- a/finder.cpp +++ b/finder.cpp @@ -191,16 +191,20 @@ int globalSearchNeg(const char *buffcpy, const char *ip, int port) char negWord[256] = {0}; for(int i = 0; i < GlobalNegativeSize; ++i) { - FileUpdater::cv.wait(FileUpdater::lk, []{return FileUpdater::ready;}); if(!globalScanFlag) return -1; strcpy(negWord, GlobalNegatives[i]); + printf("%s", buffcpy); if(strstr(buffcpy, negWord) != NULL) { if(gNegDebugMode) { - stt->doEmitionDebugFoundData("[" + QString(ip) + ":" + QString::number(port) + "" + "]\tNegative hit: \"" + QString::fromLocal8Bit(negWord).toHtmlEscaped() + "\""); + QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); + QString neg = codec->toUnicode(negWord); + stt->doEmitionDebugFoundData("[" + QString(ip) + ":" + QString::number(port) + + "" + "]\tNegative hit: \"" + neg.toHtmlEscaped() + "\""); if(strlen(negWord) < 2) { stt->doEmitionDebugFoundData(" Len:" + QString::number(strlen(negWord))); diff --git a/negatives.txt b/negatives.txt index c40c104..fb7c924 100644 --- a/negatives.txt +++ b/negatives.txt @@ -1,18 +1,20 @@ -сайт времен -гарант -парк -телеком -регистрация -недоступен +reserveer +kontakt +сайт времен +гарант +парк +телеком +регистрация +недоступен document.cookie park You are not permitted Adapto CMS Account unavailable -баланс -средств -на вашем счету -абонент +баланс +средств +РЅР° вашем счету +абонент xml-not-well-formed No session validator.w3.org @@ -20,7 +22,7 @@ RFB 009 00;39;49mroot: Authorization Required .swf -покуп +РїРѕРєСѓРї yadro.ru liveinternet #[Dlink] @@ -54,7 +56,7 @@ Content-Encoding: gzip no connections allowed pocket-solution trustclick -торг +торг #[/Dlink] 530 User access denied prelogin @@ -767,15 +769,15 @@ www.sedo.com xenserver CommuniGate Pro MACROSCOP -Бухгалтер -бюджет +Бухгалтер +бюджет Welcome to WildFly Welcome to jboss VoIP Router Can't connect to xfinity -строй -строит +строй +строит VoIP Telephone This site requires JavaScript xtreamer @@ -785,110 +787,110 @@ your explorer is no support frame your website yweb wkrotce -азартные игры -аккорды -анекдот -аптек -архив новостей -в стадии разработки -в разработке -фильм +азартные РёРіСЂС‹ +аккорды +анекдот +аптек +архив новостей +РІ стадии разработки +РІ разработке +фильм film -Не удается отобразить страницу +РќРµ удается отобразить страницу page does not exist -права защищены -дач -дешев -дешёв +права защищены +дач +дешев +дешёв pm2-web -доставка -заказать доставку -заработок в сети -знакомства -истек срок -карикатуры -конкурс -контакты -кухни -главная страница -личный кабинет -лотере -международн -мода -мы предоставляем -на реконструкции -позже -найти работу -находится в разработке -наш баннер -компани -низкие цены -Некорректный URL -Невозможно подключиться -новый адрес -магаз -о нас -остев -партнерк -перевод текстов -перееха -персональный сайт -пиши -подержан -отключен -профилактические работы -временные неудобства -Неверный ключ +доставка +заказать доставку +заработок РІ сети +знакомства +истек СЃСЂРѕРє +карикатуры +РєРѕРЅРєСѓСЂСЃ +контакты +РєСѓС…РЅРё +главная страница +личный кабинет +лотере +международн +РјРѕРґР° +РјС‹ предоставляем +РЅР° реконструкции +позже +найти работу +находится РІ разработке +наш баннер +компани +РЅРёР·РєРёРµ цены +Некорректный URL +Невозможно подключиться +новый адрес +магаз +Рѕ нас +остев +партнерк +перевод текстов +перееха +персональный сайт +пиши +подержан +отключен +профилактические работы +временные неудобства +Неверный ключ Seo -подписаться -поиск работы -прикол -продукция -производств -процесі розробки -работа в интернете -регистрации доменных -рекламные ссылки -ремонт -сайт в разработке -сайт недоступен -сайт клана -скоро запустится -сайт на разработке -связь с нами -скидк -раскрут -скоро открытие -служба поддержки -создание недорогих сайтов -создание сайтов -спонсоры -стартовая страни -стихи -тестовая страни -технические работы -услуги -флешки -ошибка -на хостинге +подписаться +РїРѕРёСЃРє работы +РїСЂРёРєРѕР» +продукция +производств +процесі СЂРѕР·СЂРѕР±РєРё +работа РІ интернете +регистрации доменных +рекламные ссылки +ремонт +сайт РІ разработке +сайт недоступен +сайт клана +СЃРєРѕСЂРѕ запустится +сайт РЅР° разработке +СЃРІСЏР·СЊ СЃ нами +СЃРєРёРґРє +раскрут +СЃРєРѕСЂРѕ открытие +служба поддержки +создание недорогих сайтов +создание сайтов +СЃРїРѕРЅСЃРѕСЂС‹ +стартовая страни +стихи +тестовая страни +технические работы +услуги +флешки +ошибка +РЅР° хостинге Fatal error: mc.yandex.ru UNKNOWN HOST host not found -Сайт закрыт +Сайт закрыт ?partner -хокке -добро пожаловать в -статусы -высказывани -флэшки -футбол -юмор -новости -на реконструкции -обновление сайта -офис -юридич -страница не найдена -купить -прода \ No newline at end of file +С…РѕРєРєРµ +РґРѕР±СЂРѕ пожаловать РІ +статусы +высказывани +флэшки +футбол +СЋРјРѕСЂ +новости +РЅР° реконструкции +обновление сайта +офис +СЋСЂРёРґРёС‡ +страница РЅРµ найдена +купить +РїСЂРѕРґР° diff --git a/nesca.pro.user b/nesca.pro.user index 6e94c04..8b7a334 100644 --- a/nesca.pro.user +++ b/nesca.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/nesca_3.cpp b/nesca_3.cpp index ae2e422..a5a63e7 100644 --- a/nesca_3.cpp +++ b/nesca_3.cpp @@ -24,6 +24,7 @@ #include "externFunctions.h" #include "externData.h" #include "Threader.h" +#include "FileDownloader.h" QDate date = QDate::currentDate(); int ver = 100*(100*(date.year()%100) + date.month()) + date.day(); @@ -2701,6 +2702,10 @@ void _startMsgCheck() }; #endif + + std::thread fuThread(FileDownloader::checkWebFiles); + fuThread.detach(); + _startVerCheck(); _startMsgCheck(); qrp.setMinimal(true); diff --git a/nesca_startModule.cpp b/nesca_startModule.cpp index 29caa33..200f445 100644 --- a/nesca_startModule.cpp +++ b/nesca_startModule.cpp @@ -5,7 +5,6 @@ #include "Connector.h" #include "Threader.h" #include "FileUpdater.h" -#include "FileDownloader.h" #include QJsonArray *jsonArr = new QJsonArray(); @@ -342,6 +341,7 @@ void _SaveBackupToFile() void _saver() { + Sleep(100); while(globalScanFlag) { __savingBackUpFile = true; @@ -1730,20 +1730,16 @@ int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) { } void runAuxiliaryThreads() { + + FileUpdater::loadOnce(); if (!FileUpdater::running) { std::thread lpThread(FileUpdater::updateLists); - lpThread.detach(); - Sleep(500); - } - if (!FileDownloader::running) { - std::thread fuThread(FileDownloader::checkWebFiles); - fuThread.detach(); - } + lpThread.detach(); + } std::thread trackerThread(_tracker); trackerThread.detach(); std::thread timerThread(_timer); - timerThread.detach(); - Sleep(500); + timerThread.detach(); std::thread saverThread(_saver); saverThread.detach(); } @@ -1801,7 +1797,7 @@ int startScan(char* args) { stt->doEmitionIPRANGE(QString("--")); stt->doEmitionThreads(QString::number(0) + "/" + QString::number(gThreads)); - FileUpdater::loadOnce(); + runAuxiliaryThreads(); if (gMode == 0)