//DLP = Dynamic Leecher Protection //this code is part of Xtreme-Mod //author: Xman //This program is free software; you can redistribute it and/or //modify it under the terms of the GNU General Public License //as published by the Free Software Foundation; either //version 2 of the License, or (at your option) any later version. // //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU General Public License for more details. // //You should have received a copy of the GNU General Public License //along with this program; if not, write to the Free Software //Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "CString_wx.h" #include "antiLeech.h" #define __declspec(var) CantiLeech:: #define SPECIAL_DLP_VERSION #define ALL_VERYCD_MOD #ifdef _DEBUG #define new DEBUG_NEW #endif //>>> eWombat [SNAFU_V3] LPCTSTR apszSnafuTag[]= { _T("[DodgeBoards]"), //0 _T("[DodgeBoards & DarkMule eVorteX]"), //1 _T("[DarkMule v6 eVorteX]"), //2 _T("[eMuleReactor]"), //3 _T("[Bionic]"), //4 _T("[LSD7c]"), //5 _T("[0x8d] unknown Leecher - (client version:60)"), //6 _T("[RAMMSTEIN]"), //7 _T("[MD5 Community]"), //8 _T("[new DarkMule]"), //9 _T("[OMEGA v.07 Heiko]"), //10 _T("[eMule v0.26 Leecher]"), //11 _T("[Hunter]"), //12 _T("[Bionic 0.20 Beta]"), //13 _T("[Rumata (rus)(Plus v1f)]"), //14 _T("[Fusspi]"), //15 _T("[donkey2002]"), //16 _T("[md4]"), //17 _T("[SpeedMule]"), //18 Xman _T("[pimp]") //19 Xman ,_T("[Chinese Leecher]") //20 SquallATF //,_T("[eChanblardNext]") //21 zz_fly }; const DWORD CantiLeech::DLPVersion = 4405; //deactivate M$WIN-specific codes #if 0 BOOL WINAPI DllMain ( HANDLE hModule, DWORD dwFunction, LPVOID lpNot) { switch (dwFunction) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } void __declspec(dllexport) TestFunc() { ::MessageBox(NULL,_T("Inside the DLL!"),_T("Nix"),0); } #endif //old versions just to keep compatible /* //drop old version support LPCTSTR __declspec(dllexport) DLPCheckModstring(LPCTSTR modversion, LPCTSTR clientversion) { if(modversion==NULL || clientversion==NULL) return NULL; if (StrStrI(modversion,_T("Freeza"))|| StrStrI(modversion,_T("d-unit"))|| //StrStrI(modversion,_T("NOS"))|| //removed for the moment StrStrI(modversion,_T("imperator"))|| StrStrI(modversion,_T("SpeedLoad"))|| StrStrI(modversion,_T("gt mod"))|| StrStrI(modversion,_T("egomule"))|| StrStrI(modversion,_T("aldo"))|| StrStrI(modversion,_T("darkmule"))|| StrStrI(modversion,_T("LegoLas"))|| StrStrI(modversion,_T("dodgethis"))|| //Updated StrStrI(modversion,_T("DM-"))|| StrStrI(modversion,_T("|X|"))|| StrStrI(modversion,_T("eVorte"))|| StrStrI(modversion,_T("Mison"))|| StrStrI(modversion,_T("father"))|| StrStrI(modversion,_T("Dragon"))|| StrStrI(modversion,_T("booster"))|| //Temporaly added, must check the tag StrStrI(modversion,_T("$motty"))|| StrStrI(modversion,_T("Thunder"))|| StrStrI(modversion,_T("BuzzFuzz"))|| StrStrI(modversion,_T("Speed-Unit"))|| StrStrI(modversion,_T("Killians"))|| StrStrI(modversion,_T("Element"))|| StrStrI(modversion,_T("§¯Å]"))|| StrStrI(modversion,_T("Rappi"))|| StrStrI(modversion,_T("EastShare")) && StrStrI(clientversion,_T("0.29"))|| StrStrI(modversion,_T("eChanblard v7.0")) || //StrStrI(modversion,_T("ACAT")) || StrStrI(modversion,_T("!FREEANGEL!")) || StrStrI(modversion,_T(" ")) || StrStrI(modversion,_T("Stonehenge")) || StrStrI(modversion,_T("@RAPTOR")) || StrStrI(modversion,_T("pwNd muLe")) || StrStrI(modversion,_T("HARDPAW")) || StrStrI(modversion,_T("XXL")) || StrStrI(modversion,_T("LSD")) || StrStrI(modversion,_T("Rockesel")) || //WiZaRd StrStrI(modversion,_T("Bad Donkey")) || //WiZaRd StrStrI(modversion,_T("DSL-Light-Client")) || //WiZaRd StrStrI(modversion,_T("Elben")) || //WiZaRd StrStrI(modversion,_T("PROeMule")) || //WiZaRd StrStrI(modversion,_T("OO.de")) || //WiZaRd StrStrI(modversion,_T("00.de")) || //WiZaRd StrStrI(modversion,_T("OOde")) || //WiZaRd StrStrI(modversion,_T("00de")) || StrStrI(modversion,_T("Devil")) || StrStrI(modversion,_T("Elfen")) || StrStrI(modversion,_T("Ef-mod ")) || //Xman this mod can be abused as a full leecher StrStrI(modversion,_T("HARDMULE")) || StrStrI(modversion,_T("Xtreme Xtended")) || //Xman 15.08.05 StrStrI(modversion, _T("MirageMod"))|| // " StrStrI(modversion, _T("SpeedX"))|| StrStrI(modversion, _T("AIDEADSL"))|| StrStrI(modversion, _T("Hypnotix"))|| StrStrI(modversion, _T("blackviper"))|| StrStrI(modversion, _T("BlackAngel"))|| StrStrI(modversion, _T("Community"))|| StrStrI(modversion, _T("rabbit"))|| StrStrI(modversion, _T("rabb_it"))|| StrStrI(modversion, _T("Speedmule"))|| StrStrI(modversion, _T("Raptor"))|| StrStrI(modversion, _T("Hawkstar"))|| StrStrI(modversion, _T("ServerClient"))|| StrStrI(modversion, _T("Love-Angel"))|| StrStrI(modversion, _T("SuperKiller"))|| StrStrI(modversion, _T("Ultimativ"))|| StrStrI(modversion, _T("uptempo"))|| StrStrI(modversion, _T("ZamBoR"))|| StrStrI(modversion, _T("Arabella"))|| StrStrI(modversion,_T("Morph")) && (StrStrI(modversion,_T("Max")) || StrStrI(modversion,_T("+")) || StrStrI(modversion,_T("×"))) || StrStrI(modversion, _T("Morph XT"))|| //very bad mod (MPAA ?) StrStrI(modversion, _T("BlueHex"))|| StrStrI(modversion, _T("FlowerPower"))|| StrStrI(modversion, _T("Fincan"))|| StrStrI(modversion, _T("Heartbreaker"))|| StrStrI(modversion, _T("Administrator"))|| StrStrI(modversion, _T("B@d-D3vi7"))|| StrStrI(modversion, _T("CryptedSpeed"))|| StrStrI(modversion, _T("DarkDragon"))|| StrStrI(modversion, _T("OS_"))|| //Xman most are found via other checks, but not all _tcslen(modversion) > 0 && (StrStrI(clientversion,_T("edonkey")) || modversion[0]==_T('[')) || //1. donkey user with modstring, 2. modstring begins with [ this is a known leecher (StrStrI(modversion, _T("Xtreme")) && StrStrI(modversion, _T("]"))) //bad Xtreme mod ) return _T("Bad MODSTRING"); return NULL; } LPCTSTR __declspec(dllexport) DLPCheckUsername(LPCTSTR username) { if(username==NULL) return NULL; if (StrStrI(username,_T("$GAM3R$"))|| StrStrI(username,_T("G@m3r"))|| StrStrI(username,_T("$WAREZ$"))|| //StrStrI(username,_T("RAMMSTEIN"))||// //Xman 21.06.05 SNAFU should filter the right ones out //StrStr(username,_T("toXic"))|| //Xman 19.10.05 too old StrStrI(username,_T("Leecha"))|| StrStr(username,_T("eDevil"))|| StrStrI(username,_T("darkmule"))|| //StrStrI(username,_T("phArAo"))|| //Xman 19.10.05 too old //StrStrI(username,_T("dodgethis"))|| //Xman 21.06.05 not seen for a long time StrStrI(username,_T("Reverse"))|| //StrStrI(username,_T("eVortex"))|| //Xman didn't see it for a long time //StrStrI(username,_T("|eVorte|X|"))|| //" //StrStrI(username,_T("Chief"))|| //Xman 17.5.08 old and no more needed StrStrI(username,_T("$motty"))|| StrStrI(username,_T("emule-speed"))|| StrStrI(username,_T("celinesexy"))|| StrStrI(username,_T("Gate-eMule"))|| StrStrI(username,_T("energyfaker"))|| StrStrI(username,_T("BuzzFuzz"))|| StrStrI(username,_T("Speed-Unit"))|| StrStrI(username,_T("Killians"))|| StrStrI(username,_T("pubsman"))|| StrStrI(username,_T("emule-element"))|| StrStrI(username,_T("00de.de"))|| StrStrI(username,_T("00de")) || StrStrI(username,_T("OO.de"))|| StrStrI(username,_T("OOde")) || StrStrI(username,_T("emule")) && StrStrI(username,_T("booster")) || StrStrI(username,_T("Rappi")) || StrStrI(username,_T("Ketamine")) || StrStrI(username,_T("HARDMULE")) || StrStrI(username,_T("emuleech")) || //Xman 15.08.05 StrStrI(username, _T("SchlumpMule"))|| //" StrStrI(username, _T("Safty´s"))|| StrStrI(username, _T("UnKnOwN pOiSoN"))|| StrStrI(username, _T("ElfenPower"))|| StrStrI(username, _T("eMule Cow"))|| StrStrI(username, _T("Freezamule"))|| StrStr(username, _T("EGOmule"))|| StrStrI(username, _T("-=EGOist=-"))|| StrStrI(username, _T("FreezaVamp"))|| StrStrI(username, _T("Muli_Checka"))|| StrStr(username, _T("PrOjEcT-SaNdStOrM"))|| StrStr(username, _T("NotHer eDitiOn"))|| StrStrI(username, _T("eSl@d3vil"))|| StrStrI(username, _T(" AgentSmith"))|| StrStrI(username, _T("rabb_it"))|| StrStrI(username, _T("ServerClient"))|| StrStrI(username, _T(">>Power-Mod"))|| StrStr(username, _T("DM_X"))|| //darkmule StrCmpI(username, _T("Muse"))==0 || //ketamine mod StrStr(username, _T("ZamBoR"))|| StrStr(username, _T("emule.razorback3.com"))|| StrStrI(username,_T("[LSD.19")) //Xman 21.06.2005 definitive not a good mod, with protocol bugs ) return _T("Bad USERNAME"); //bad mods, where every second sign is //enough to check two places if(_tcslen(username) >=4 && username[3]<=0x1F && username[1]<=0x1F ) return _T("Leecher-Username"); return NULL; } LPCTSTR __declspec(dllexport) DLPCheckNameAndHash(CString username, CString& userhash) { if(username.IsEmpty() || userhash.IsEmpty()) return NULL; //community check if(username.GetLength()>=7 && username.Right(1)==_T("]")) { //check for gamer //two checks should be enough. if(username.Right(6).Left(1)==userhash.Mid(5,1) && username.Right(3).Left(1)==userhash.Mid(7,1) ) return _T("Gamers"); //check for snake int find=username.ReverseFind(_T('[')); if(find>=0) { CString addon=username.Mid(find+1); int endpos=addon.GetLength()-1; for(int i=0; i=_T('0') && addon.GetAt(i)<=_T('9')) ) { i=endpos+1; } } if(i==endpos) return _T("Snake"); } } return NULL; } */ //end old version ------------------------------------------ bool CantiLeech::IsTypicalHex(const CString& addon) { if(addon.GetLength()>25 || addon.GetLength()<5) return false; short bigalpha=0; short smallalpha=0; short numeric=0; int endpos=addon.GetLength(); int i = 0; for(i=0;i=_T('0') && addon.GetAt(i)<=_T('9')) ) numeric++; else if( (addon.GetAt(i)>=_T('A') && addon.GetAt(i)<=_T('F')) ) bigalpha++; else if( (addon.GetAt(i)>=_T('a') && addon.GetAt(i)<=_T('f')) ) smallalpha++; else break; } if(i==endpos) { if(numeric>0 && (smallalpha>0 && bigalpha==0 || smallalpha==0 && bigalpha>0) ) return true; } return false; } LPCTSTR __declspec(dllexport) DLPCheckUserhash(const PBYTE userhash) { // No more AJ check return NULL; } //new versions LPCTSTR __declspec(dllexport) DLPCheckModstring_Hard(LPCTSTR modversion, LPCTSTR clientversion) { if(modversion==NULL || clientversion==NULL) return NULL; if(_tcsstr(clientversion, L"eMule Compat v0.26.2")) return L"Flashget"; if ( //Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= _tcsstr(modversion,L"TM0910") || //Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= //StrStrI(modversion,_T("Freeza"))|| StrStrI(modversion,_T("FXeMule"))|| StrStrI(modversion,_T("FX eMule"))|| StrStrI(modversion,_T("RIAA"))|| //StrStrI(modversion,_T("d-unit"))|| //StrStrI(modversion,_T("NOS"))|| //removed for the moment //StrStrI(modversion,_T("imperator"))|| StrStrI(modversion,_T("SpeedLoad"))|| //StrStrI(modversion,_T("gt mod"))|| //outdated //StrStrI(modversion,_T("egomule"))|| //outdated //StrStrI(modversion,_T("aldo"))|| //outdated //StrStrI(modversion,_T("darkmule"))|| //outdated //StrStrI(modversion,_T("LegoLas"))|| //StrStrI(modversion,_T("dodgethis"))|| //Updated //StrStrI(modversion,_T("DM-"))|| //StrStrI(modversion,_T("|X|"))|| //StrStrI(modversion,_T("eVorte"))|| //StrStrI(modversion,_T("Mison"))|| //StrStrI(modversion,_T("father"))|| //StrStrI(modversion,_T("Dragon"))|| //StrStrI(modversion,_T("$motty"))|| //StrStrI(modversion,_T("Thunder"))|| //StrStrI(modversion,_T("BuzzFuzz"))|| //StrStrI(modversion,_T("Speed-Unit"))|| //StrStrI(modversion,_T("Killians"))|| StrStrI(modversion,_T("Element"))|| //StrStrI(modversion,_T("§¯Å]"))|| //outdated StrStrI(modversion,_T("Rappi"))|| StrStrI(modversion,_T("EastShare")) && StrStrI(clientversion,_T("0.29"))|| StrStrI(modversion,_T("eChanblard v7.0")) || //StrStrI(modversion,_T("ACAT")) || //StrStrI(modversion,_T("!FREEANGEL!")) || StrStrI(modversion,_T(" ")) || //StrStrI(modversion,_T("Stonehenge")) || StrStrI(modversion,_T("@RAPTOR")) || StrStr(modversion,_T("pwNd muLe")) || StrStrI(modversion,_T("HARDPAW")) || //StrStrI(modversion,_T("XXL")) || StrStrI(modversion,_T("LSD")) || StrStrI(modversion,_T("Bad Donkey")) || //WiZaRd StrStrI(modversion,_T("DSL-Light-Client")) || //WiZaRd StrStrI(modversion,_T("Elben")) || //WiZaRd StrStr(modversion,_T("PROeMule")) || //WiZaRd StrStrI(modversion,_T("Devil")) || StrStrI(modversion,_T("Elfen")) || StrStrI(modversion,_T("Ef-mod 2.0 ")) || //Xman this mod can be abused as a full leecher StrStrI(modversion,_T("Xtreme Xtended")) || //Xman 15.08.05 StrStrI(modversion, _T("MirageMod"))|| // " StrStrI(modversion, _T("SpeedX"))|| StrStrI(modversion, _T("AIDEADSL"))|| StrStrI(modversion, _T("Hypnotix"))|| StrStrI(modversion, _T("BLACKMULE"))|| StrStrI(modversion, _T("blackviper"))|| StrStrI(modversion, _T("BlackAngel"))|| StrStrI(modversion, _T("rabbit"))|| StrStrI(modversion, _T("rabb_it"))|| StrStrI(modversion, _T("Raptor"))|| StrStrI(modversion, _T("Hawkstar"))|| StrStrI(modversion, _T("ServerClient"))|| StrStrI(modversion, _T("Love-Angel"))|| StrStrI(modversion, _T("SuperKiller"))|| StrStrI(modversion, _T("ZamBoR"))|| StrStrI(modversion,_T("Morph")) && (StrStrI(modversion,_T("Max")) || StrStrI(modversion,_T("+")) || StrStrI(modversion,_T("×"))) || StrStrI(modversion, _T("Morph XT"))|| //very bad mod (MPAA ?) StrStrI(modversion, _T("Mørph"))|| StrStrI(modversion, _T("BlueHex"))|| StrStrI(modversion, _T("FlowerPower"))|| StrStrI(modversion, _T("Fincan"))|| StrStrI(modversion,_T("OO.de")) || //WiZaRd StrStrI(modversion,_T("00.de")) || //WiZaRd StrStrI(modversion,_T("OOde")) || //WiZaRd StrStrI(modversion,_T("00de")) || StrStrI(modversion, _T("OS_")) || //Xman most are found via other checks, but not all StrStrI(modversion, _T("Heartbreaker"))|| StrStrI(modversion, _T("Arabella"))|| StrStrI(modversion, _T("Administrator"))|| StrStrI(modversion, _T("B@d-D3vi7"))|| StrStrI(modversion, _T("Dying Angel"))|| StrStrI(modversion, _T("FREAK MOD VENOM"))|| StrStrI(modversion, _T("CryptedSpeed"))|| StrStrI(modversion, _T("h34r7b34k3r"))|| StrStrI(modversion, _T("Exorzist"))|| StrStrI(modversion, _T("A.i.d.e-A.D.S.L"))|| StrStrI(modversion, _T("albaR"))|| StrStrI(modversion, _T("AngelDr"))|| //5/2006 StrStrI(modversion, _T("Tombstone Reloaded"))|| //5/2006 StrStrI(modversion, _T("Tombstone Next"))|| //10/2006 StrStrI(modversion, _T("pP.r8b"))|| //5/2006 StrStrI(modversion, _T("x0Rz!$T"))|| //E/€xorzist StrStrI(modversion, _T("€xORz!§T"))|| _tcsstr(clientversion,_T("eMule Compat v0.40")) || //7/2006 _tcsstr(clientversion,_T("eMule Compat v127.")) || //8/2006 StrStrI(modversion, _T("No Ratio"))|| //based on scarangel 7/2006 StrStrI(modversion, _T("DeathAngel"))|| //based on Xtreme 8/2006 StrStrI(modversion, _T("PROemule"))|| //9/2006 StrStrI(modversion, _T("Simple Leecher"))|| //9/2006 StrStrI(modversion, _T("oFF *+*"))|| //10/2006 StrStrI(modversion, _T("0FF "))|| //6/2007 StrStrI(modversion, _T("SmartMuli"))|| //12/2006 StrStrI(modversion, _T("D10T"))|| //12/2006 StrStrI(modversion, _T("the fonz"))|| //12/2006 StrStrI(modversion, _T("TurkMule"))|| //1/2007 StrStrI(modversion, _T("Hyperdrive"))|| //1/2007 StrStrI(modversion, _T("NextEvolution"))|| //1/2007 StrStrI(modversion, _T("Pimp"))|| //3/2007 StrStrI(modversion, _T("XDP "))|| //6/2007 StrStrI(modversion, _T("AeOnFlux"))|| //8/2007 //8/2007 from dlarge: StrStrI(modversion, _T("Final Fight"))|| //added dlarge StrStrI(modversion, _T("Fireball"))|| //added dlarge "standart String" StrStrI(modversion, _T("SunPower"))|| //added dlarge "standart String" StrStrI(modversion, _T("SuperKiller"))|| //added dlarge StrStrI(modversion, _T("X-Cite"))|| //added dlarge StrStrI(modversion, _T("waZZa"))|| //added dlarge StrStrI(modversion, _T("Merza"))|| //added dlarge StrStrI(modversion, _T("K.O.T."))|| //added dlarge StrStrI(modversion, _T("Licokine"))|| //added dlarge StrStrI(modversion, _T("BlackStar"))|| //added dlarge StrStrI(modversion, _T("nEwLoGic"))|| //added dlarge //end StrStrI(modversion, _T("Applejuice"))|| //6/2007 now ban instead score reduce //more AJ modstrings StrStrI(modversion, L"Wikinger") || StrStrI(modversion, L"ROCKFORCE") || StrStrI(modversion, L"RC-ATLANTIS") || //more AJ modstrings //zz_fly Start //modstring of XL _tcsstr(modversion, _T("20071122")) || _tcsstr(modversion, _T("20080228")) || _tcsstr(modversion, _T("080620")) || _tcsstr(modversion, _T("080307")) || _tcsstr(modversion, _T("080509")) || _tcsstr(modversion, _T("20080505")) || _tcsstr(modversion, _T("v 080828")) || _tcsstr(modversion, _T("XL8828")) || _tcsstr(modversion, _T("build 11230")) || _tcsstr(modversion, _T("20080923")) || _tcsstr(modversion, _T("ZZULL")) || _tcsstr(modversion, _T("XunaLei")) || _tcsstr(modversion, _T("XunL")) || _tcsstr(modversion, _T("Xthunder")) || _tcsstr(modversion, _T("xl build")) || //end _tcsstr(modversion, _T("FreeCD")) || //BitComet, changed to hardban _tcsstr(modversion, _T("PlayMule")) || //PlayMule ( !CString(modversion).IsEmpty() && CString(modversion).Trim().IsEmpty() ) || //pruma, korean leecher, modversion is a space _tcsstr(modversion,_T("VMULE")) || //israel StrStrI(modversion,_T("Goop.co.il")) || StrStrI(modversion,_T("Razorback")) || StrStrI(modversion,_T("UlTiMaTiC ")) || //based on MA 3.5 StrStrI(modversion,_T("Peizheng")) || //gpl-breaker _tcsstr(modversion,_T("amule")) || //fake version, amule never write a modstring here _tcsstr(modversion,_T("Amule")) || //2010/5/29 _tcsstr(modversion,_T("miniMule")) || //a compatible client, but without share file option. StrStrI(modversion,_T("EYE888")) || //compatible client in china, but no src StrStrI(modversion,_T("WebeSo")) || //compatible client in china, but no src //Chengr28 (_tcsstr(modversion,_T(" 091113")) && !_tcsstr(modversion,_T("VeryCD"))) || //compatible client in china, but no src //tetris StrStrI(modversion,_T("Unbuyi")) || //a client announced that it is based on a its framework, but in fact it just copy VeryCD's code //Chengr28 //2010/12/11 _tcsstr(modversion, _T("easyMule2")) || //protocol bug, lack maintaince, ban //zz_fly End _tcsstr(modversion, _T("Neo-R")) || _tcsstr(modversion, _T("Neo-RS")) || StrStrI(modversion, _T("Apace")) || StrStrI(modversion, _T("L!()Netw0rk")) || StrStrI(modversion, _T("L!ONetwork")) || StrStrI(modversion, _T("l!onet"))|| StrStrI(modversion, _T("l!0net"))|| StrStrI(modversion, _T("lionet"))|| StrStrI(modversion, _T("li0net"))|| StrStrI(modversion, _T("li()net"))|| StrStrI(modversion, _T("L!()Net"))|| StrStrI(modversion, _T("800STER")) || StrStrI(modversion, _T("8OOSTER")) || StrStrI(modversion, _T("BOO$T")) || StrStrI(modversion, _T("B00ST")) || StrStrI(modversion, _T("T-L-N BO0ST")) || //by briandgwx StrStrI(modversion, _T("T L N B O O S T")) || //by taz-me StrStrI(modversion, _T("iberica")) || //by briandgwx //from **Riso64Bit** _tcsstr(modversion, _T("Thor ")) || _tcsstr(modversion, _T("DeSfAlko")) || _tcsstr(modversion, _T("The Killer Bean")) || _tcsstr(modversion, _T("ZZ-R ")) || _tcsstr(modversion, _T("ZZ-RS ")) || _tcsstr(modversion, _T("Reptil-Crew-3")) || _tcsstr(modversion, _T("Anonymous Mod")) || StrStrI(modversion, _T("NFO.Co.iL")) || _tcsstr(modversion, _T("Down.co.il")) || _tcsstr(modversion, _T("Red Projekt")) || _tcsstr(modversion, _T("centraldivx.com")) || //no source StrStrI(modversion, _T("emule.co.il")) || StrStrI(modversion, _T("Fire eMule")) || StrStrI(modversion, _T("PirateMule")) || StrStrI(modversion, _T("HighTime")) || StrStrI(modversion, _T("GPS2Crew")) || StrStrI(modversion, _T("TLN eMule")) || StrStrI(modversion, _T("DVD-RS")) || _tcsstr(modversion, _T("ZZULtimativ-R")) || _tcsstr(modversion, _T("Div eMule")) || _tcsstr(modversion, _T("Pwr eMule")) || //_tcsstr(modversion, _T("VipeR")) || //it become good _tcsstr(modversion, _T("Methadone")) || _tcsstr(modversion, _T("Titandonkey")) || _tcsstr(modversion, _T("SpeedShare")) || _tcsstr(modversion, _T("Wodan")) || _tcsstr(modversion, _T("Sikombious")) || _tcsstr(modversion, _T("HyperTraxx")) || _tcsstr(modversion, _T("Div pro")) || _tcsstr(modversion, _T("GangBang")) || _tcsstr(modversion, _T("WarezFaw")) || _tcsstr(modversion, _T("Rastak")) || _tcsstr(modversion, _T("Okinawa")) || _tcsstr(modversion, _T("Hiroshima")) || _tcsstr(modversion, _T("Kamikaze")) || _tcsstr(modversion, _T("Yotoruma")) || _tcsstr(modversion, _T("Nagasaki")) || _tcsstr(modversion, _T("Addiction")) || _tcsstr(modversion, _T("Bondage")) || _tcsstr(modversion, _T("eMuleLife")) || StrStrI(modversion, _T("PP-edition")) || StrStrI(modversion, _T("ZZULtra")) || _tcsstr(modversion, _T("eMulix")) || _tcsstr(modversion, _T("BigBang")) || _tcsstr(modversion, _T("PR0 ")) || //0(zero) _tcsstr(modversion, _T("PRO ")) || //o _tcsstr(modversion, _T("LoCMuLe")) || _tcsstr(modversion, _T("Flux ")) || //_tcsstr(modversion, _T("Aurora")) || //_tcsstr(modversion, _T("Alias")) || //although it is the base-version of leechermods, but it has no leecher function, unban it //_tcsstr(modversion, _T("R-Mod"))|| //same as Alias _tcsstr(modversion, _T("UniATeam")) || StrStrI(modversion, _T("Torenkey")) || StrStrI(modversion, _T("RSVCD")) || _tcsstr(modversion, _T("BlueEarth")) || _tcsstr(modversion, _T("RocketMule")) || _tcsstr(modversion, _T("eMule 0.4")) || //some bad mods write clientversion in modstring _tcsstr(modversion, _T("Emule")) || _tcsstr(modversion, _T("eMule v")) || _tcsstr(modversion, _T("OrAnGe")) || StrStrI(modversion, _T("Evil Mod")) || StrStrI(modversion, _T("StulleMule v")) || //real modstring is "StulleMule #.#", no 'v' StrStrI(modversion, _T("X-Ray v")) || StrStrI(modversion, _T("Ulti F"))|| StrStrI(modversion, _T("ChímÊrÂ"))|| StrStrI(modversion, _T("ÇhïmerÀ"))|| StrStrI(modversion, _T("Plus Plus"))|| //some of them did not banned in bin _tcsstr(modversion, _T("UMatic"))|| _tcsstr(modversion, _T("BRAZILINJAPAN"))|| //no source StrStrI(modversion, _T("Pigpen"))|| _tcsstr(modversion, _T("TCMod"))|| StrStrI(modversion, _T("UltiMatiX"))|| _tcsstr(modversion, _T("Perestroika"))|| _tcsstr(modversion, _T("Ebola")) || StrStrI(modversion, _T("StulleMule Plus")) || _tcsstr(modversion, _T("DVD-START.COM")) || (_tcsicmp(clientversion, _T("eMule"))==0) || //the client did not send client version _tcsstr(modversion, _T("Penthotal")) || _tcsstr(clientversion,_T("eMule Compat v2.1")) || //+Ultra //_tcsstr(modversion, _T("TSmod")) || _tcsstr(modversion, _T("Okaemule")) || _tcsstr(modversion, _T("Okamula")) || _tcsstr(modversion, _T("Potenza")) || _tcsstr(modversion, _T("AntraX MoD")) || //_tcsstr(modversion, _T("Picapica")) || //_tcsstr(modversion, _T("PeaceMule")) || _tcsstr(modversion, _T("0.49b")) || _tcsstr(modversion, _T("0.49c")) || _tcsstr(modversion, _T("Metha")) || //_tcsstr(modversion, _T("XTreme")) || move to fake area //newlines 2009/11/8 _tcsstr(modversion, _T("UMatiX-45a")) || StrStrI(modversion, _T("maultierpower")) || // maultier-power.com sponsorize applejuice StrStrI(modversion, _T("PoWeR MoD")) || StrStrI(modversion, _T("UltiAnalyzer")) || StrStrI(modversion, _T("UBR-Mod")) || //2009/11/29 StrStrI(modversion, _T("UltraFast")) || //thl //2010/4/4 _tcsstr(modversion, _T("Devils Mod")) || StrStrI(modversion, _T("-XDP-")) || //2010/6/6 _tcsstr(modversion, _T("Sharinghooligan")) || //end //from XRAY antileecher start StrStrI(modversion, L"SPEED EMULE") || //MyTh StrStrI(modversion, L"SPIKE2 +") || //MyTh hard leecher //StrStrI(modversion, L"Adunanza") || //MyTh italian ISP-spec com user StrStrI(modversion, L"Asiklar") || //MyTh apple-com StrStrI(modversion, L"Shadow") || //MyTh StrStrI(modversion, L"EPB") || //MyTh StrStrI(modversion, L"Tyrantmule") || //MyTh StrStrI(modversion, L"APRC") || //MyTh StrStrI(modversion, L"Hardstyle") || //MyTh StrStrI(modversion, L"pP.r12b") || //MyTh StrStrI(modversion, L"Simple Life") || //MyTh StrStrI(modversion, L"TYRANUS") || //MyTh StrStrI(modversion, _T("[OO.de-L33CH4")) || //Stulle ( StrStrI(modversion, _T("sivka v12e8")) && StrStrI(clientversion, L"0.42e") ) || //m_nClientVersion != MAKE_CLIENT_VERSION(0, 42, 4) // added - Stulle StrStrI(modversion, L"RapCom") || //added dlarge StrStrI(modversion, L"SBI leecher") || //added dlarge StrStrI(modversion, L"TS Next Lite") || //added dlarge //from XRAY antileecher end StrStrI(modversion, L"Dein Modstring") || // JvA: moved up from soft because also used by Applejuice StrStrI(modversion, L"Angelmule") || // JvA: no sources, no changelog, community username,... StrStrI(modversion, L"TR-P2P-MoD") || // JvA: bad client StrStrI(modversion, L"Esekci") || // JvA: no sources, no changelog, ... StrStrI(modversion, L"MaGiX") || // default modstring if activated and unchanged StrStrI(modversion, L"MorphJC") || // bad 'Justice CS' and PBF for incomplete files _tcslen(modversion) > 0 && (StrStrI(clientversion,_T("edonkey")) || modversion[0]==_T('[')) || //1. donkey user with modstring, 2. modstring begins with [ this is a known leecher (StrStrI(modversion, _T("Xtreme")) && StrStrI(modversion, _T("]"))) //bad Xtreme mod ) return _T("Bad MODSTRING"); if(_tcsstr(modversion, _T("xtreme")) || _tcsstr(modversion, _T("XTreme"))) //case sensitive! return _T("Fake Xtreme"); //zz_fly :: fake modstring area //move some entries from above if(((_tcsstr(modversion, _T("MorphXT v9.6")) || _tcsstr(modversion, _T("Xtreme 7")) || _tcsstr(modversion, _T("ZZUL Plus 1"))) && _tcsstr(clientversion, _T("0.48a"))) || //should not 0.48a _tcsstr(modversion, _T("NetF WARP 9")) || //should be NetF WARP 0.3a.9 _tcsstr(modversion, _T("VeryCD 080126")) || //Fake VeryCD _tcsstr(modversion, _T("VeryCD 080730")) || //Fake VeryCD _tcsstr(modversion, _T("VeryCD 080509")) || //Fake VeryCD _tcsstr(modversion, _T("VeryCD 080606")) || //Fake VeryCD _tcsstr(modversion, _T("VeryCD 080624")) || //Fake VeryCD _tcsstr(modversion, _T("VeryCD 080630")) || //Fake VeryCD (_tcsstr(modversion, _T("easyMule 10")) && _tcsstr(clientversion,_T("0.48a"))) || //easymule 10#### are not based on .48a (_tcsstr(modversion, _T("VeryCD 080919")) && _tcsstr(clientversion,_T("0.49b"))) //fake clientversion, should be 0.48a ) return _T("Fake MODSTRING"); //zz_fly :: end //WiZaRd Bad Modstring Scheme CString strMod = CString(modversion); if( strMod.IsEmpty() || (strMod.Find(_T("CHN "))==0 && strMod.GetLength() > 8) || (strMod.Find(_T("Apollo"))==0) || //Apollo is a Portugal Mod (strMod.Find(_T("sivka"))==0) || (strMod.Find(_T("aMule CVS"))==0) ) { ;//do nothing } else { if(_tcsstr(clientversion, _T("eMule v")) && (strMod.GetLength() <= 4)) //most of them are fincan return L"Bad Modstring Scheme"; int iNumberFound = -1; _TINT ch; bool bBad = false; bool bNotEnd = false; for(int i = 0; i < strMod.GetLength() && bBad == false; ++i) { ch = strMod.GetAt(i); if( ch == L'.' || ch == L' ' ) { bNotEnd = true; //these chars should not be the end of modstring iNumberFound = -1; //this is a simple hack to not punish mods like TK4 or Spike2 :) continue; //skip "legal" chars } if( ch == L'-' /*|| ch == L'+'*/ ) //connector characters, connect two string or two numbers { bNotEnd = true; //these chars should not be the end of modstring if(iNumberFound != -1) iNumberFound++; //exclude some modstring like v#.#-a1 continue; } if( _istpunct(ch) || _istspace(ch)) bBad = true; //illegal punctuation or whitespace character else if(_istcntrl(ch)) bBad = true; //control character in modstring!? else { bNotEnd = false; if( _istdigit(ch) ) iNumberFound = i; else if ( (iNumberFound == i-1) && _istxdigit(ch) ) //abcdef is legal in the end of version number, also exclude bowlfish tk4 and so on { ;//do nothing } else if(iNumberFound != -1) bBad = true; //that is: number out of row, e.g. not MorphXT v11.9 but Morph11XT.9 } } if(bBad || bNotEnd) return L"Bad Modstring Scheme"; } //WiZaRd //Add by SDC team. #if defined(SPECIAL_DLP_VERSION) //Some Bad MODSTRING check if (wcsstr(modversion, L"eMule-GIFC") || //GPL-Breaker [DragonD] (wcsstr(clientversion, L"0.49c") && wcsstr(modversion, L"X-Ray 2.")) || //Fake X-Ray Mod [**Riso64Bit**] (wcsstr(clientversion, L"0.48a") && wcsstr(modversion, L"MorphCA")) || //Fake MorphCA [DargonD] wcsstr(modversion, L"0.50a") || //It should be a ClientVersion, not a ModString [DargonD] wcsstr(clientversion, L"4.0h") || //New SpeedyP2P client wcsstr(modversion, L"OS") || //GPL-Breaker [ieD2k] wcsstr(modversion, L"THC") || //Fake queues client [Bill Lee] wcsstr(modversion, L"EggAche") || //Custom ModString wcsstr(modversion, L"DarkSky") || //Custom ModString wcsstr(clientversion, L"eMule v5.6a") || //Fake official version [冰靈曦曉] wcsstr(modversion, L"eMuleTorrent")) //GPL-Breaker [冰靈曦曉] return L"[SDC]Bad ModString"; #endif return NULL; } LPCTSTR __declspec(dllexport) DLPCheckModstring_Soft(LPCTSTR modversion, LPCTSTR clientversion) { if(modversion==NULL || clientversion==NULL) return NULL; if ( StrStrI(modversion,_T("Rockesel")) || StrStrI(modversion,_T("HARDMULE")) || StrStrI(modversion, _T("Community"))|| StrStrI(modversion,_T("IcE-MoD"))|| StrStrI(modversion,_T("a-eDit"))|| StrStrI(modversion, _T("Ultimativ"))|| StrStrI(modversion, _T("Ultimate"))|| //StrStrI(modversion, _T("Ulti F"))|| //move to hard ban StrStrI(modversion, _T("Enter MoD Name"))|| // StrStrI(modversion, _T("Dein Modstring"))|| // 3/2007 //StrStrI(modversion, _T("choose your modstring"))|| // 3/2007 StrStrI(modversion, _T("La tua Modstring"))|| //italian //8/2007 from dlarge: //StrStrI(modversion, _T("Enter Your Modstring"))|| //added dlarge StrStrI(modversion, _T("Your Modstring")) || StrStrI(modversion, _T("C-E-R-E-B-R-O")) || //added dlarge //end StrStrI(modversion, _T("NewMule"))|| StrStrI(modversion, _T("smart- muli"))|| StrStrI(modversion, _T("TCMatic 3"))|| //1/2007 //version 3 is the public version and used as leecher //StrStrI(clientversion, _T("eMule v2.0")) || //6/2007 fake Xtreme / GPL-breaker StrStrI(modversion, _T("uptempo")) //zz_fly Start ||_tcsstr(clientversion, _T("eMule v0.95g")) //korea ||_tcsstr(clientversion, _T("eMule v0.47f")) ||_tcsstr(modversion, _T("Bowlfish")) //international filter, change to softban. ||StrStrI(modversion, _T("BLACKMULE")) //no completely source, but it seems it do not have leecher functions. ||_tcsstr(clientversion, _T("eMule v1.")) //ban all version number >= 1.0 ||_tcsstr(clientversion, _T("eMule v2.")) //||_tcsstr(clientversion, _T("eMule v3.")) ||_tcsstr(clientversion, _T("Shareaza v6.")) //Shareaza's current version is 2.5.2 ||_tcsstr(clientversion, _T("Shareaza v5.")) ||_tcsstr(clientversion, _T("Shareaza v4.")) ||_tcsstr(clientversion, _T("Shareaza v3.")) ||StrStrI(modversion, _T(".COM")) //no domain name in modstring ||StrStrI(modversion, _T(".ORG")) ||StrStrI(modversion, _T(".NET")) ||StrStrI(modversion, _T(".BIZ")) ||StrStrI(modversion, _T(".INFO")) //zz_fly End ||(_tcsstr(clientversion, _T("lphant v2.01")) && _tcsstr(modversion, _T("Plus"))) //www.lphantplus.com, no src ) return _T("Bad MODSTRING"); //SDC Main #if defined(SPECIAL_DLP_VERSION) #if (defined(ALL_VERYCD_MOD) || defined(VERYCD_TAG)) if (!wcsstr(modversion, L"VeryCD 090304") && wcsstr(modversion, L"VeryCD")) //It will be checked in DLPCheckNameAndHashAndMod function. return L"[SDC]All-VeryCD-Mod"; #elif defined(VERYCD_EASYMULE_MOD) if (wcsstr(modversion, L"easyMule") || //New versions (wcsstr(modversion, L"VeryCD") && //Old versions released in 2007 and 2008 ((wcsstr(modversion, L" 07") && (wcsstr(modversion, L"1109") || wcsstr(modversion, L"1207") || wcsstr(modversion, L"1229"))) || (wcsstr(modversion, L" 08") && (wcsstr(modversion, L"0125") || wcsstr(modversion, L"0202") || wcsstr(modversion, L"0227") || wcsstr(modversion, L"0320") || wcsstr(modversion, L"0401") || wcsstr(modversion, L"0506") || wcsstr(modversion, L"0514") || wcsstr(modversion, L"0701") || wcsstr(modversion, L"0701") || wcsstr(modversion, L"0722") || wcsstr(modversion, L"0815") || wcsstr(modversion, L"0905") || wcsstr(modversion, L"0905") || wcsstr(modversion, L"0928") || wcsstr(modversion, L"1015") || wcsstr(modversion, L"1023") || wcsstr(modversion, L"1023") || wcsstr(modversion, L"1113") || wcsstr(modversion, L"1121") || wcsstr(modversion, L"1122") || wcsstr(modversion, L"1205") || wcsstr(modversion, L"1218")))))) return L"[SDC]VeryCD-EasyMule-Mod"; #endif #endif return NULL; } LPCTSTR __declspec(dllexport) DLPCheckUsername_Hard(LPCTSTR username) { if(username==NULL) return NULL; if ( //Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= _tcsstr(username,L"dianlei.com") || _tcsstr(username,L"[eMuleBT]") || _tcsstr(username,L"[PPMule]") || StrStrI(username,L"TUOTU") || _tcsstr(username,L"kaggo.com") || _tcsstr(username,L"[Chinfo]") || _tcsstr(username,L"vgo.21cn") || //Chinese Leecher - https://forum.emule-project.net/index.php?showtopic=134097&hl= //StrStrI(username,_T("$WAREZ$"))|| //StrStrI(username,_T("Leecha"))|| //StrStrI(username,_T("Reverse"))|| //StrStrI(username,_T("$motty"))|| StrStrI(username,_T("emule-speed"))|| StrStrI(username,_T("Intuition"))|| //StrStrI(username,_T("W.I.P."))|| //outdated //StrStrI(username,_T("celinesexy"))|| //StrStrI(username,_T("Gate-eMule"))|| //StrStrI(username,_T("energyfaker"))|| //StrStrI(username,_T("BuzzFuzz"))|| //StrStrI(username,_T("Speed-Unit"))|| //StrStrI(username,_T("Killians"))|| //StrStrI(username,_T("pubsman"))|| StrStrI(username,_T("emule-element"))|| //StrStrI(username,_T("emule")) && StrStrI(username,_T("booster")) || //StrStrI(username,_T("Rappi")) || StrStrI(username,_T("Ketamine")) || StrStrI(username,_T("emuleech.com")) || //StrStrI(username, _T("SchlumpMule"))|| //" //StrStrI(username, _T("Safty´s"))|| StrStr(username, _T("UnKnOwN pOiSoN"))|| //StrStrI(username, _T("ElfenPower"))|| //StrStrI(username, _T("eMule Cow"))|| //StrStrI(username, _T("Freezamule"))|| StrStrI(username, _T("EGOmule"))|| StrStrI(username, _T("-=EGOist=-"))|| //StrStrI(username, _T("FreezaVamp"))|| StrStrI(username, _T("Muli_Checka"))|| StrStrI(username,_T("00de.de"))|| //StrStrI(username,_T("00de")) || //StrStrI(username,_T("OO.de"))|| //StrStrI(username,_T("OOde")) || //StrStrI(username, _T("PrOjEcT-SaNdStOrM"))|| //StrStrI(username, _T("NotHer eDitiOn"))|| //StrStrI(username, _T("eSl@d3vil"))|| //StrStrI(username, _T(" AgentSmith"))|| //StrStrI(username, _T("rabb_it"))|| //StrStrI(username, _T("ServerClient"))|| StrCmpIW(username, _T("Muse"))==0 || //ketamine mod //StrStr(username, _T("ZamBoR"))|| //StrStrI(username,_T("HARDMULE")) || StrStrI(username,_T("futurezone-reloaded")) || StrStrI(username,_T("Gate-To-Darkness.com")) || StrStrI(username,_T("Razorback")) || StrStrI(username,_T("Titanesel.tk")) || StrStrI(username,_T("bigbang.to")) || StrStrI(username,_T("leecherclients.org")) || //Xman 10/06 StrStrI(username,_T("futuremods.de")) || //Xman 10/06 StrStrI(username,_T(".::Stenoco-Zone::.")) || StrStrI(username,_T("emule-mods.cc")) || //Xman 01/07 StrStrI(username,_T("leecher-mod.net")) || //Xman 02/07 //08/2007 from dlarge: StrStrI(username,_T("leecher-world.com")) || //added dlarge StrStrI(username,_T("leecher.biz")) || //added dlarge //end //Xman 6/2007: //more AJ modstrings //( StrStrI(username, L"[") && StrStrI(username, L"]") //&& ( StrStrI(username, L"Applejuice") || StrStrI(username, L"Wikinger") || StrStrI(username, L"ROCKFORCE") || StrStrI(username, L"RC-ATLANTIS") || StrStrI(username, L"Fireball") || StrStrI(username, L"SunPower") || // ) //) || // StrStrI(username,_T("AppleJuice")) && StrStrI(username,_T("[")) && StrStrI(username,_T("]")) || StrStrI(username, L"futuremod.de") || // JvA: apple-com adress //more AJ modstrings StrStrI(username, L"@ Raptor") || //added dlarge StrStrI(username, L"FUCKLW") || //added dlarge //zz_fly Start _tcsstr(username,_T("a1[VeryCD]xthame")) || //XL StrStrI(username,_T("Flashget")) || //FlashGet _tcsstr(username,_T("http://www.net-xfer.com")) || //netxfer _tcsstr(username,_T("emuIe-project.net")) || //phishing site _tcsstr(username,_T("QQDownload")) || //tencent _tcsstr(username,_T("[Devils][")) || //2009/12/25 _tcsstr(username,_T("sharing-devils")) || // leecher community //2010/5/29 //_tcsstr(username,_T("btbbt.com")) || //community username //_tcsstr(username,_T("Greendown.Cn")) || //community username //these two sites provide some modified versions. they only hacked the title and changed the default username. i think the users are innocent. unban. _tcsstr(username,_T("MTVP2P")) || //community username from Chengr28 _tcsstr(username,_T("qobfxb")) || //community username _tcsstr(username,_T("[CHN][VeryCD]QQ"))|| //QQDownload //zz_fly End StrStrI(username, _T("lionetwork"))|| StrStrI(username, _T("[lionheart"))|| StrStrI(username, _T("li@network"))|| StrStrI(username, _T("l!onetwork"))|| StrStrI(username, _T("li()net"))|| StrStrI(username, _T("l!0net"))|| StrStrI(username, _T("L!()Network")) || StrStrI(username, _T("Li()Network")) || StrStrI(username, _T("L!0Network")) || StrStrI(username, _T("Li@Network")) || //from **Riso64Bit** _tcsstr(username, _T("FincanMod")) || //fincan _tcsstr(username, _T("Finc@nMod")) || StrStrI(username, _T("titanmule")) || StrStrI(username, _T(".c0.il")) || //0, zero StrStrI(username, _T("Goop.Co.il")) || //israel community StrStrI(username, _T("Div.Co.il")) || StrStrI(username, _T("emule.co.il")) || StrStrI(username, _T("pwr.co.il")) || StrStrI(username, _T("nFo.Co.il")) || StrStrI(username, _T("lhnet.co.il")) || StrStrI(username, _T("ynet.co.il")) || StrStrI(username, _T("wnet.co.il")) || StrStrI(username, _T("Paf.co.il")) || StrStrI(username, _T("finder.co.il")) || StrStrI(username, _T("joop.Co.il")) || StrStrI(username, _T("Www.NFOil.com")) || StrStrI(username, _T("TLN eMule")) || StrStrI(username, _T("LHeMule")) || StrStrI(username, _T("VMULE 2007")) || StrStrI(username, _T("TLNGuest")) || StrStrI(username, _T("Div eMule 2007")) || StrStrI(username, _T("eMulePro.de.vu")) || StrStrI(username, _T("emuIe-co.net")) || StrStrI(username, _T("AE CoM UseR")) || StrStrI(username, _T("BTFaw.Com")) || StrStrI(username, _T("warezfaw")) || StrStrI(username, _T("lh.2y.net")) || //StrStrI(username, _T("viper-istraeL.Org")) || StrStrI(username, _T("[Pwr Mule]Usuario")) || StrStrI(username, _T("Www.D-iL.Net")) || StrStrI(username, _T("www.aideadsl.com")) || StrStrI(username, _T("tangot.com")) || StrStrI(username, _T("r3wlx.com")) || StrStrI(username, _T("http://yo.com")) || StrStrI(username, _T("Angel eMule")) || StrStrI(username, _T("AngelMule")) || //MyTh NOT to ban! /* //they are some release groups, although some of them use bad mods, but rest of them is good one. _tcsstr(username, _T("Ultimativ"))|| StrStrI(username, _T("gps2c.6x.to")) || StrStrI(username, _T("maultier-power")) || _tcsstr(username, _T("RSVCD-Forum")) || StrStrI(username, _T("rsvcd-crew")) || StrStrI(username, _T("Ulti-Board")) || _tcsstr(username, _T("R-Mod"))|| StrStrI(username, _T("gps2crew")) || */ //StrStrI(username, _T("www.eChanblardNext.org")) || //StrStrI(username, _T("www.e-sipa.de")) || StrStrI(username, _T("[TEC]")) || //fincan StrStrI(username, _T("e-Sipa")) || StrStrI(username, _T("emuleech")) || StrStrI(username, _T("mkp2p")) || _tcsstr(username, _T("[ CHN]")) || //a space after bracket StrStrI(username, _T("PlayMule")) || StrStrI(username, _T("eDonkey2008")) || StrStrI(username, _T("Torenkey")) || //StrStrI(username, _T("sdjtuning")) || StrStrI(username, _T("RAPCOM")) || _tcsstr(username, _T("ZZULtimativ-R")) || _tcsstr(username, _T("ZZ-R ")) || StrStrI(username, _T("OFF +")) || StrStrI(username, _T("OFF+")) || StrStrI(username, _T("Ultim@tiv")) || StrStrI(username, _T("[CHN][VeryCD][Your")) || _tcsstr(username, _T("eMuleUniATeam")) || StrStrI(username, _T("mods.sub.cc")) || _tcsstr(username, _T("ExtrEMule")) || _tcsstr(username, _T("Titandonkey")) || _tcsstr(username, _T("xtmhtl [ePlus]"))|| //same name, same userhash _tcsstr(username, _T("eMule Accelerator")) || //2010/4/4 StrStrI(username, _T("eMule Pro Ultra")) || StrStrI(username, _T("[CHN][VeryCD][username]")) || //[CHN][VeryCD][username] eMule v0.48a [xl build58] //2010/5/29 StrStrI(username, _T("Fireb@ll")) || //2010/6/6 StrStrI(username, _T("monster-mod.com")) || StrStrI(username, _T("Reptil-Crew-3")) || //Reptil mod StrStrI(username, _T("!Lou-Nissart!")) || //no src only BIN (kick from upload) //all sites below are phishing sites StrStrI(username, _T("www.extremule.com")) || StrStrI(username, _T("www.emuleproject.com")) || StrStrI(username, _T("bigbang-emule.de.vu")) || StrStrI(username, _T("emulenet.de.vu")) || _tcsstr(username, _T("http://emule.net")) || StrStrI(username, _T("http://emulo.net")) || StrStrI(username, _T("http://projekt.org")) || StrStrI(username, _T("CryptMule.de.vu")) || StrStrI(username, _T("titanload.to")) || StrStrI(username, _T("http://emule-projekt.net")) || StrStrI(username, _T("emuleitalianogratis.com")) || StrStrI(username, _T("http://www.official-emule.com")) || StrStrI(username, _T("emulepro.6x.to")) || //StrStrI(username, _T("power-portal")) || //MyTh NOT to ban! StrStrI(username, _T("e-mule.nu")) || StrStrI(username, _T("emulesoftware.com")) || StrStrI(username, _T("emuleitaliano.com")) || StrStrI(username, _T("scaricareemule.com")) || StrStrI(username, _T("emule--it.com")) || StrStrI(username, _T("italian.eazel.com")) || StrStrI(username, _T("speed-downloading.com")) || StrStrI(username, _T("nuovaversione.com")) || StrStrI(username, _T("emuleplus.com")) || StrStrI(username, _T("emuleultra.com")) || StrStrI(username, _T("emule.org")) || StrStrI(username, _T("[emule.de v")) || //default name: [emule.de v ##] StrStrI(username, _T("emule.fr")) || StrStrI(username, _T("emule.ru")) || StrStrI(username, _T("emule.com")) || StrStrI(username, _T("emule-mods.biz")) || StrStrI(username, _T("emule-projet")) || StrStrI(username, _T("maomao.eu")) || StrStrI(username, _T("donkey.com")) || StrStrI(username, _T("super4.com")) || StrStrI(username, _T("emule.cc")) || StrStrI(username, _T("emule.net")) || StrStrI(username, _T("emulegratis.net")) || //new lines 2009/11/8 StrStrI(username, _T("emulespeedup.de.vu")) || StrStrI(username, _T("superemule.6x.to")) || StrStrI(username, _T("emulea.com")) || StrStrI(username, _T("emule24horas.com")) || StrStrI(username, _T("emule.es")) || StrStrI(username, _T("emulext.net")) || StrStrI(username, _T("netemule.com")) || StrStrI(username, _T("gratis-emule.com")) || StrStrI(username, _T("emuleproject.com")) || StrStrI(username, _T("emuleplusplus.de")) || StrStrI(username, _T("wikingergilde")) || StrStrI(username, _T("emuleclassic.com")) || StrStrI(username, _T("mega-emule.com")) || StrStrI(username, _T("speedyp2p.com")) || StrStrI(username, _T("anubisp2p.com")) || StrStrI(username, _T("cruxp2p.com")) || StrStrI(username, _T("downloademulegratis.com")) || StrStrI(username, _T("emulegold.com")) || StrStrI(username, _T("pro-sharing.com")) || StrStrI(username, _T("turbomule ")) || StrStrI(username, _T("devhancer.com")) || StrStrI(username, _T("emulefileswap.com")) || StrStrI(username, _T("p2psharing.biz")) || StrStrI(username, _T("fastsearchbooster.biz")) || StrStrI(username, _T("emule-features.6x.to")) || StrStrI(username, _T("emule-pro.blogspot.com")) || StrStrI(username, _T("emule-ng.com")) || StrStrI(username, _T("version049c-official.com")) || StrStrI(username, _T("emule.to")) || StrStrI(username, _T("adunanza.italiazip.com")) || StrStrI(username, _T("emulesoftware.com")) || StrStrI(username, _T("phpnuke.org")) || //new lines 2009/11/29 StrStrI(username, _T("gratis.emule49-info.com")) || StrStrI(username, _T("emuleds.com")) || StrStrI(username, _T("scarica-emule-gratis.com")) || StrStrI(username, _T("mp3edonkeysearch.com")) || StrStrI(username, _T("mp3rocket.com")) || StrStrI(username, _T("emule-rocket.com")) || StrStrI(username, _T("MonkeyP2P")) || //new lines 2010/01/17 StrStrI(username, _T("http://alpha-gaming.net")) || //new lines 2010/4/4 StrStrI(username, _T("piolet.com")) || StrStrI(username, _T("hermesp2p.com")) || StrStrI(username, _T("shareghost.com")) || StrStrI(username, _T("zultrax.com")) || StrStrI(username, _T("getfasterp2p.com")) || StrStrI(username, _T("pro-sharing.com")) || StrStrI(username, _T("truxshare.com")) || StrStrI(username, _T("meteorshare.com")) || StrStrI(username, _T("manolito.com")) || StrStrI(username, _T("blubster.com")) || StrStrI(username, _T("fastsearchbooster.biz")) || StrStrI(username, _T("e-mule-")) || // detect any mirror simil to "e-mule-it.com" StrStrI(username, _T("download-gratis-emule.com")) || StrStrI(username, _T("emule-italy.it")) || StrStrI(username, _T("e-mule.be")) || StrStrI(username, _T("official-emule")) || StrStrI(username, _T("emule-gratis.it")) || StrStrI(username, _T("devhancer")) || //2010/5/29 StrStrI(username, _T("dbgo.com")) || StrStrI(username, _T("net2search.com")) || //2010/6/6 StrStrI(username, _T("p2phood.com")) || StrStrI(username, _T("intelpeers.com")) || //End StrStrI(username,_T("[LSD.19")) //Xman 21.06.2005 definitive not a good mod, with protocol bugs ) return _T("Bad USERNAME"); //new ketamine //if(StrStrI(username, _T("[ePlus]")) != StrRStrI(username,NULL, _T("[ePlus]"))) //old version if(_tcslen(username) >=14) { LPCTSTR tempstr=StrStr(username, _T("[ePlus]")); if(tempstr && _tcslen(tempstr)>=7) if(StrStr(tempstr + 7, _T("[ePlus]"))) return _T("new Ketamine"); } //Add by SDC team. #if defined(SPECIAL_DLP_VERSION) //Some Bad USERNAME check if (wcsstr(username, L"VgroupTeam") || //Random ModString [doompower] // wcsstr(username, L"ED2000") || //GPL-Breaker wcsstr(username, L"[CHN]X_jIQ") || //P2PSearcher, old version wcsstr(username, L"[CHN]sf") || //P2PSearcher, new version wcsstr(username, L"[CHN]__VRom") || //P2PSearcher, new version [dark] wcsstr(username, L".net «Xtreme") || //eMule -LPE-, Fake ModString wcsstr(username, L"[CHN]yourname") || //Some old chinese leecher and default nickname in some QQDownload client wcsstr(username, L"28881.com") || //MTVP2P(2013) [雁蝎] wcsstr(username, L"[CHN]shaohan") || //Xunlei Offline Download Server and Moblie System Apps [Glasses 王子] wcsstr(username, L"HubbleKadTracker")) //GPL-Breaker [冰靈曦曉] return L"[SDC]Bad UserName"; #endif return NULL; } LPCTSTR __declspec(dllexport) DLPCheckUsername_Soft(LPCTSTR username) { if(username==NULL) return NULL; if ( //Xman 15.08.05 StrStrI(username, _T(">>Power-Mod")) //Xman 1/2007 /* StrStrI(username,_T("AppleJuice [")) && StrStrI(username,_T("]")) || StrStrI(username,_T("AppleJuice Mod [")) && StrStrI(username,_T("]")) || StrStrI(username,_T("AppleJuice eMule [")) && StrStrI(username,_T("]")) //5/2007 */ //zz_fly Start korea ||_tcsstr(username, _T("DONKEY2007")) //korea ||_tcsstr(username, _T("www.Freang.com")) ||_tcsstr(username, _T("www.pruna.com")) ||_tcsstr(username, _T("[KOREA]")) ||_tcsstr(username, _T("superemule")) ||_tcsstr(username, _T("PRUNA 2008")) ||_tcsstr(username, _T("MOYAM")) ||_tcsstr(username, _T("eDonkey2009")) //zz_fly End ) return _T("Bad USERNAME"); //bad mods, where every second sign is //enough to check two places if(_tcslen(username) >=4 && username[3]<=0x1F && username[1]<=0x1F ) return _T("Community-Username"); //community (based on LSD or it's smasher) if(_tcslen(username) >=4 && username[0]==_T('v') && StrStr(username, _T(":com ")) ) return _T("X-Treme"); //Add by SDC team. #if defined(VERYCD_TAG) if (StrStrIW(username, L"[VeryCD]") && //It will be checked in DLPCheckUsername_Hard function. !(wcsstr(username, L"a1[VeryCD]xthame") || (StrStrIW(username, L"[CHN][VeryCD]") && (StrStrIW(username, L"[Your") || StrStrIW(username, L"[username]"))) || wcsstr(username, L"[CHN][VeryCD]QQ"))) return L"[SDC]VeryCD-Tag"; #endif return NULL; } LPCTSTR __declspec(dllexport) DLPCheckNameAndHashAndMod(const CString& username, const CString& userhash, const CString& modversion) { if(username.IsEmpty() || userhash.IsEmpty()) return NULL; //zz_fly Start //Fake VeryCD if((_tcsstr(modversion,_T("VeryCD 071107")) || _tcsstr(modversion,_T("VeryCD 080307")) ) && _tcsstr(username, _T("[CHN][VeryCD]yourname")) ) //all fake VeryCD have a default username return _T("Fake VeryCD"); //community userhash check static const TCHAR refuserhash0[] = _T("154CE646120E96CC798C439A20D26F8D"); // (windows ue) static const TCHAR refuserhash1[] = _T("455361F9D95C3CD7E6BF2192D1CB3D02"); // (windows ue) static const TCHAR refuserhash2[] = _T("C8B5F41441C615FBABAD9A7E55294D01"); static const TCHAR refuserhash6[] = _T("A2221641460E961C8B7FF21A53FB6F6C"); //**Riso64Bit** static const TCHAR refuserhash7[] = _T("888F4742450EF75F9DD8B7E53FA06FF0"); //**Riso64Bit** static const TCHAR refuserhash8[] = _T("0B76CC42CB0E81B0DC6120D2BCB36FF9"); //**Riso64Bit** static const TCHAR refuserhash9[] = _T("EAA383FD9E0E68538C7AC8AD15526F7A"); //**Riso64Bit** static const TCHAR refuserhash10[]= _T("65C3B2E8940E582630A7F58AF9F26F9E"); //from TaiWan static const TCHAR refuserhash11[]= _T("9BA09B83DC0EE78BE20280C387936F00"); //from SS1900 static const TCHAR refuserhash12[]= _T("C92859E4860EA0F15F7837750C886FB6"); //from SS1900 static const TCHAR refuserhash13[]= _T("CB42F563EE0EA7907395420CAC146FF5"); //From "qobfxb" multi user [DargonD] //SDC fixed #if defined(SPECIAL_DLP_VERSION) if (_wcsicmp(userhash, refuserhash0) == 0 || _wcsicmp(userhash, refuserhash1) == 0 || _wcsicmp(userhash, refuserhash2) == 0 || _wcsicmp(userhash, refuserhash6) == 0 || _wcsicmp(userhash, refuserhash7) == 0 || _wcsicmp(userhash, refuserhash8) == 0 || _wcsicmp(userhash, refuserhash9) == 0 || _wcsicmp(userhash, refuserhash10) == 0 || _wcsicmp(userhash, refuserhash11) == 0 || _wcsicmp(userhash, refuserhash12) == 0 || //The official refuserhash13 with NickName "qobfxb" will be checked in DLPCheckUsername_Hard function. (!wcsstr(username, L"qobfxb") && _wcsicmp(userhash, refuserhash13) == 0)) return L"[SDC]Community UserHash"; #else //Official if(_tcsicmp(userhash,refuserhash0)==0 || _tcsicmp(userhash,refuserhash1)==0 || _tcsicmp(userhash,refuserhash2)==0 || _tcsicmp(userhash,refuserhash6)==0 || _tcsicmp(userhash,refuserhash7)==0 || _tcsicmp(userhash,refuserhash8)==0 || _tcsicmp(userhash,refuserhash9)==0 || _tcsicmp(userhash,refuserhash10)==0 || _tcsicmp(userhash,refuserhash11)==0 || _tcsicmp(userhash,refuserhash12)==0 || _tcsicmp(userhash,refuserhash13)==0) return _T("Community Userhash"); #endif //corrupt userhash check static const TCHAR refuserhash3[] = _T("00000000000E00000000000000006F00"); static const TCHAR refuserhash4[] = _T("FE000000000E00000000000000006F00"); if(_tcsicmp(userhash,refuserhash3)==0 || _tcsicmp(userhash,refuserhash4)==0) return _T("Corrupt UserHash"); //SDC fixed //Community Userhash check, thanks SquallATF. #if defined(SPECIAL_DLP_VERSION) static const wchar_t RefUserHash_5[] = L"DA1CEEE05B0E5319B3B48CAED24C6F4A"; // static const auto RefUserHash_5(L"DA1CEEE05B0E5319B3B48CAED24C6F4A"); if (!wcsstr(username, L"QQDownload") && _wcsicmp(userhash, RefUserHash_5) == 0) //The official refuserhash5 with NickName "QQDownload" will be checked in DLPCheckUsername_Hard function. return L"[SDC]Bad UserHash"; #else //Official static const TCHAR refuserhash5[] = _T("DA1CEEE05B0E5319B3B48CAED24C6F4A"); if (_tcsicmp(userhash, refuserhash5) == 0) return _T("Bad Userhash"); #endif //zz_fly End //Check for aedit //remark: a unmodded emule can't send a space at last sign if(modversion.IsEmpty() && username.Right(1)==_T(" ")) return _T("AEdit"); //Check for Hex-Modstring if(IsTypicalHex(modversion)) return _T("Hex-Modstring"); //community check if(username.GetLength()>=7 && username.Right(1)==_T("]")) { /* no more needed //check for gamer //two checks should be enough. if(username.Right(6).Left(1)==userhash.Mid(5,1) && username.Right(3).Left(1)==userhash.Mid(7,1) ) return _T("old united"); */ //check for special nickaddon int find=username.ReverseFind(_T('[')); if(find >= 0) { CString addon=username.Mid(find+1); // int endpos=addon.GetLength()-1; if(addon.GetLength()>2) { //check for snake //12/2006 /* no more needed, better detection inside Xtreme for(int i=0; i=_T('0') && addon.GetAt(i)<=_T('9')) ) { i=endpos+1; } } if(i==endpos) return _T("Snake"); */ //Chek for Hex (e.g. X-Treme) if(IsTypicalHex(addon.Left(addon.GetLength()-1))) return _T("Hex-Code-Addon"); } //zz_fly :: start if(find == username.GetLength()-6){ bool bFoundRandomPadding = false; _TINT ch; for(int i=1;i<5;i++){ ch = username.GetAt(find+i); if( _istpunct(ch) || /*_istspace(ch) ||*/ _istcntrl(ch)){ bFoundRandomPadding = true; break; } } if(bFoundRandomPadding && !modversion.IsEmpty() && (username.Find(_T("http://emule-project.net ["))==0) && (find==25)) return _T("TLH Community"); //username like "http://emule-project.net [random]" if(bFoundRandomPadding && modversion.IsEmpty() && (find==username.Find(_T('[')))) return _T("GhostMod"); //username has a random padding [random], it should be a mod function, but there is no modstring if(bFoundRandomPadding && (username.Find(_T("Silver Surfer User"))==0) && (modversion.Find(_T("Silver"))==-1)) return _T("Fake Silver Surfer"); //**Riso64Bit** :: fake silver surfer } //zz_fly :: end } } //thx cyrex if(modversion.GetLength() == 10 && username.GetLength()>4 && StrStr(username.Right(4),_T("/]")) && StrStr(username,_T("[SE]"))) return _T("Mystery ModString"); //Add by SDC team. #if defined(SPECIAL_DLP_VERSION) //Some Community UserHash check static const wchar_t SDC_RefUserHash_1[] = L"66B002DADE0E6DBEDF4FCCAA380E6FD4"; //From multi user (TW&CN) [DargonD] static const wchar_t SDC_RefUserHash_2[] = L"AAEE84C0C30E247CBB99B459255D6F99"; //From NAS_01G multi user [DargonD] static const wchar_t SDC_RefUserHash_3[] = L"5E02F74DBA0E8A19DBF6733F0AE66F4A"; //Community UserHash [FzH/DargonD] static const wchar_t SDC_RefUserHash_4[] = L"B6491292AE0E07AC8C6045CAC2DD6F9F"; //Community UserHash [FzH/DargonD] static const wchar_t SDC_RefUserHash_5[] = L"596B305E050EA842CE38DF3811216F3F"; //Community UserHash [FzH/DargonD] static const wchar_t SDC_RefUserHash_6[] = L"B1798B2F620E0B676452C6E2EF706F13"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_7[] = L"C1533316C00E3E0D0218843A05E46FAC"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_8[] = L"FE10F3C0610E0A925B85204CE8456F42"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_9[] = L"C9E61DEEF30E0360E2741C9CF1396F94"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_10[] = L"559ACC89D80E90C50A7A0CD3224F6F57"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_11[] = L"6AE1D2DF4B0E8707B6F6BC29E8746F0F"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_12[] = L"8A537F20B80EF9AF02E59E6C087C6F6B"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_13[] = L"3F44A7996F0E17D1F4B319EB58B26F64"; //Invalid UserHash [DargonD] static const wchar_t SDC_RefUserHash_14[] = L"D0D897BD360EEFF329903E04990B6F86"; //Xunlei static const wchar_t SDC_RefUserHash_15[] = L"36725093E00E9350F7680C871E946FD1"; //Tencent Offline Download Server UserHash [DargonD] static const wchar_t SDC_RefUserHash_16[] = L"769D36987E0E313A1501967D0F146F7A"; //UserHash of Xunlei Offline Download Server and Moblie System Apps [pandaleo] // static const auto SDC_RefUserHash_1(L"66B002DADE0E6DBEDF4FCCAA380E6FD4"); //From multi user (TW&CN) [DargonD] // static const auto SDC_RefUserHash_2(L"AAEE84C0C30E247CBB99B459255D6F99"); //From NAS_01G multi user [DargonD] // static const auto SDC_RefUserHash_3(L"5E02F74DBA0E8A19DBF6733F0AE66F4A"); //Community UserHash [FzH/DargonD] // static const auto SDC_RefUserHash_4(L"B6491292AE0E07AC8C6045CAC2DD6F9F"); //Community UserHash [FzH/DargonD] // static const auto SDC_RefUserHash_5(L"596B305E050EA842CE38DF3811216F3F"); //Community UserHash [FzH/DargonD] // static const auto SDC_RefUserHash_6(L"B1798B2F620E0B676452C6E2EF706F13"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_7(L"C1533316C00E3E0D0218843A05E46FAC"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_8(L"FE10F3C0610E0A925B85204CE8456F42"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_9(L"C9E61DEEF30E0360E2741C9CF1396F94"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_10(L"559ACC89D80E90C50A7A0CD3224F6F57"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_11(L"6AE1D2DF4B0E8707B6F6BC29E8746F0F"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_12(L"8A537F20B80EF9AF02E59E6C087C6F6B"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_13(L"3F44A7996F0E17D1F4B319EB58B26F64"); //Invalid UserHash [DargonD] // static const auto SDC_RefUserHash_14(L"D0D897BD360EEFF329903E04990B6F86"); //Xunlei // static const auto SDC_RefUserHash_15(L"36725093E00E9350F7680C871E946FD1"); //Tencent Offline Download Server UserHash [DargonD] // static const auto SDC_RefUserHash_16(L"769D36987E0E313A1501967D0F146F7A"); //UserHash of Xunlei Offline Download Server and Moblie System Apps [pandaleo] if (_wcsicmp(userhash, SDC_RefUserHash_1) == 0 || _wcsicmp(userhash, SDC_RefUserHash_2) == 0 || _wcsicmp(userhash, SDC_RefUserHash_3) == 0 || _wcsicmp(userhash, SDC_RefUserHash_4) == 0 || _wcsicmp(userhash, SDC_RefUserHash_5) == 0 || _wcsicmp(userhash, SDC_RefUserHash_6) == 0 || _wcsicmp(userhash, SDC_RefUserHash_7) == 0 || _wcsicmp(userhash, SDC_RefUserHash_8) == 0 || _wcsicmp(userhash, SDC_RefUserHash_9) == 0 || _wcsicmp(userhash, SDC_RefUserHash_10) == 0 || _wcsicmp(userhash, SDC_RefUserHash_11) == 0 || _wcsicmp(userhash, SDC_RefUserHash_12) == 0 || _wcsicmp(userhash, SDC_RefUserHash_13) == 0 || (!wcsstr(modversion, L"xl build") && _wcsicmp(userhash, SDC_RefUserHash_14) == 0) || //The SDC_RefUserHash_14 with modstring "xl build" will be checked in DLPCheckModstring_Hard function. (!wcsstr(username, L"[CHN][VeryCD]QQ") && _wcsicmp(userhash, SDC_RefUserHash_15) == 0) || //The SDC_RefUserHash_15 with NickName "[CHN][VeryCD]QQ" will be checked in DLPCheckUsername_Hard function. (!wcsstr(username, L"[CHN]shaohan") && _wcsicmp(userhash, SDC_RefUserHash_16) == 0)) //The SDC_RefUserHash_16 with NickName "[CHN]shaohan" will be checked in DLPCheckUsername_Hard function. return L"[SDC]Community UserHash"; #endif if(modversion.IsEmpty()) return NULL; #define NUMBERSOFSTRING 9 static const CString testModString[] = {_T("Xtreme"), _T("ScarAngel"), _T("Mephisto"), _T("MorphXT"), _T("EastShare"), _T("StulleMule"), /*_T("Magic Angel"),*/ _T("DreaMule"), _T("X-Mod"), _T("RaJiL")}; static const float testMinVer[] = {4.4f, 2.5f, 1.5f, 10.0f, 13.0f, 6.0f, /*3.0f,*/ 3.0f, 0.0f, 2.2f}; for(int i=0; i= testMinVer[i]))) return _T("ModString Thief"); } else if(tag1) return _T("ModString Thief"); } //doubled «...» in the username, like "username «Xtreme #.#» «abcd»" int posr1 = username.Find(_T('»')); int posr2 = username.ReverseFind(_T('»')); if((posr1 > 5) && (posr2 - posr1 > 5) && ((username.GetAt(posr1 - 5) == _T('«')) || (username.GetAt(posr2 - 5) == _T('«')))) return _T("Bad Username Paddings"); //zz_fly :: end //SDC Main #if defined(SPECIAL_DLP_VERSION) #if (defined(ALL_VERYCD_MOD) || defined(VERYCD_TAG)) if (wcsstr(modversion, L"VeryCD 090304") && !wcsstr(username, L"[CHN]shaohan")) //This version has been checked before DLPCheckModstring_Soft function. return L"[SDC]All-VeryCD-Mod"; #elif defined(VERYCD_DEFAULT_NICKNAMES) if (wcsstr(modversion, L"VeryCD") && //They will be checked in DLPCheckModstring_Hard function. !(wcsstr(modversion, L" 08") && (wcsstr(modversion, L"0126") || wcsstr(modversion, L"0730") || wcsstr(modversion, L"0509") || wcsstr(modversion, L"0606") || wcsstr(modversion, L"0624") || wcsstr(modversion, L"0630"))) && //Default NickName in a VeryCD-EasyMule-Mod version (wcsstr(username, L"easyMule.com") || //VeryCD-Mod and old VeryCD-EasyMule-Mod versions ((wcsstr(username, L"[CHN]") || wcsstr(username, L"[VeryCD]")) && (wcsstr(username, L"yourname") || //New VeryCD-EasyMule-Mod versions //2009-07 Updated (GB2312) wcsstr(username, L"我爱电驴") || wcsstr(username, L"爱分享") || wcsstr(username, L"分享快乐") || wcsstr(username, L"上传Happy") || wcsstr(username, L"爱电驴爱生活") || wcsstr(username, L"dianlv") || wcsstr(username, L"自由电驴") || //2009-07 Updated (Big5, GB2312 to Big5 codepage garbled) wcsstr(username, L"扂乾萇聶") || wcsstr(username, L"乾煦砅") || wcsstr(username, L"煦砅辦氈") || wcsstr(username, L"奻換Happy") || wcsstr(username, L"乾萇聶乾汜魂") || wcsstr(username, L"赻蚕萇聶") || //2009-08 Updated (GB2312) wcsstr(username, L"感谢驴友") || wcsstr(username, L"感谢分享") || wcsstr(username, L"大家一起来加速") || wcsstr(username, L"分享越多 下载越快") || wcsstr(username, L"挂机王") || wcsstr(username, L"通宵上传") || wcsstr(username, L"分享互联网") || //2009-08 Updated (Big5, GB2312 to Big5 codepage garbled) wcsstr(username, L"覜郅聶衭") || wcsstr(username, L"覜郅煦砅") || wcsstr(username, L"湮模珨懂樓厒") || wcsstr(username, L"煦砅埣嗣 狟婥埣辦") || wcsstr(username, L"境儂卼") || wcsstr(username, L"籵秖奻換") || wcsstr(username, L"煦砅誑薊厙") || //2013-01 Updated wcsstr(username, L"[easyMule]"))))) return L"[SDC]VeryCD-Default-NickNames"; #endif #endif return NULL; } LPCTSTR __declspec(dllexport) DLPCheckMessageSpam(LPCTSTR messagetext) { if(messagetext==NULL) return NULL; if( _tcsstr(messagetext, _T("ZamBoR")) || _tcsstr(messagetext, _T("DI-Emule")) || _tcsstr(messagetext, _T("Join the L33cher")) || _tcsstr(messagetext, _T("eMule FX")) || _tcsstr(messagetext, _T("---> ed2k://|file|Ketamine")) || _tcsstr(messagetext, _T("robot from RIAA, you can't fight")) || _tcsstr(messagetext, _T("agent from PeerFactor, she advises you to stop")) || _tcsstr(messagetext, _T("bot from MPAA, you can't do anything against her")) || _tcsstr(messagetext, _T("[Sangue-Suga]")) || //3 /2007 _tcsstr(messagetext, _T("[te@m projekt")) || //5 /2007 _tcsstr(messagetext, _T("eMule PRO Ultra")) || //8/2007 //include ultra 1 2 3 _tcsstr(messagetext, _T("HyperMule")) || //8/2007 _tcsstr(messagetext, _T("FXeMule")) || _tcsstr(messagetext, _T("angelmule.com")) || //**Riso64Bit** _tcsstr(messagetext, _T("RocketMule")) //**Riso64Bit** ) return (_T("Spam-Message")); if(CString(messagetext).Trim().IsEmpty()) return (_T("Spam-Message")); return NULL; } LPCTSTR __declspec(dllexport) DLPCheckHelloTag(UINT tagnumber) { LPCTSTR strSnafuTag=NULL; switch(tagnumber) { case CT_UNKNOWNx12: case CT_UNKNOWNx13: case CT_UNKNOWNx14: case CT_UNKNOWNx16: case CT_UNKNOWNx17: case CT_UNKNOWNxE6: strSnafuTag=apszSnafuTag[0];break;//buffer=_T("DodgeBoards");break; case CT_UNKNOWNx15: strSnafuTag=apszSnafuTag[1];break;//buffer=_T("DodgeBoards & DarkMule |eVorte|X|");break; case CT_UNKNOWNx22: strSnafuTag=apszSnafuTag[2];break;//buffer=_T("DarkMule v6 |eVorte|X|");break; case CT_UNKNOWNx5D: case CT_UNKNOWNx6B: case CT_UNKNOWNx6C: strSnafuTag=apszSnafuTag[17];break; case CT_UNKNOWNx74: case CT_UNKNOWNx87: strSnafuTag=apszSnafuTag[17];break; case CT_UNKNOWNxF0: case CT_UNKNOWNxF4: strSnafuTag=apszSnafuTag[17];break; //case CT_UNKNOWNx69: strSnafuTag=apszSnafuTag[3];break;//buffer=_T("eMuleReactor");break; case CT_UNKNOWNx79: strSnafuTag=apszSnafuTag[4];break;//buffer=_T("Bionic");break; case CT_UNKNOWNx83: strSnafuTag=apszSnafuTag[15];break;//buffer=_T("Fusspi");break; case CT_UNKNOWNx76: case CT_UNKNOWNxCD: strSnafuTag=apszSnafuTag[16];break;//buffer=_T("www.donkey2002.to");break; case CT_UNKNOWNx88: strSnafuTag=apszSnafuTag[5];//[LSD7c] break; case CT_UNKNOWNx8c: strSnafuTag=apszSnafuTag[5];break;//buffer=_T("[LSD7c]");break; case CT_UNKNOWNx8d: strSnafuTag=apszSnafuTag[6];break;//buffer=_T("[0x8d] unknown Leecher - (client version:60)");break; case CT_UNKNOWNx99: strSnafuTag=apszSnafuTag[7];break;//buffer=_T("[RAMMSTEIN]");break; //STRIKE BACK case CT_UNKNOWNx97: case CT_UNKNOWNx98: case CT_UNKNOWNx9C: case CT_UNKNOWNxDA: strSnafuTag=apszSnafuTag[3];break;//buffer=_T("eMuleReactor");break; case CT_UNKNOWNxC8: //Xman x4 case CT_UNKNOWNxCE: //Xman 20.08.05 case CT_UNKNOWNxCF: //Xman 20.08.05 case CT_UNKNOWNx94: //Xman 20.08.05 case CT_UNKNOWNxc4: strSnafuTag=apszSnafuTag[8];break;//buffer=_T("[MD5 Community]");break; //USED BY NEW BIONIC => 0x12 Sender case CT_UNKNOWNxEC: strSnafuTag=apszSnafuTag[18];break; //Xman x4 Speedmule //case CT_FRIENDSHARING: //STRIKE BACK //break; case CT_DARK: //STRIKE BACK case CT_UNKNOWNx7A: case CT_UNKNOWNxCA: strSnafuTag=apszSnafuTag[9];break;//buffer=_T("new DarkMule"); case CT_UNKNOWNx4D: strSnafuTag=apszSnafuTag[19];break;// pimp my mule misuse an official tag in hello case CT_UNKNOWNxD2: strSnafuTag=apszSnafuTag[20];break;//SquallATF //case CT_UNKNOWNx85: // strSnafuTag=apszSnafuTag[21];break;//zz_fly } return strSnafuTag; } LPCTSTR __declspec(dllexport) DLPCheckInfoTag(UINT tagnumber) { LPCTSTR strSnafuTag=NULL; switch(tagnumber) { case ET_MOD_UNKNOWNx12: case ET_MOD_UNKNOWNx13: case ET_MOD_UNKNOWNx14: case ET_MOD_UNKNOWNx17: strSnafuTag=apszSnafuTag[0];break;//("[DodgeBoards]") case ET_MOD_UNKNOWNx2F: strSnafuTag=apszSnafuTag[10];break;//buffer=_T("[OMEGA v.07 Heiko]");break; case ET_MOD_UNKNOWNx36: case ET_MOD_UNKNOWNx5B: case ET_MOD_UNKNOWNxA6: strSnafuTag=apszSnafuTag[11];break;//buffer=_T("eMule v0.26 Leecher");break; case ET_MOD_UNKNOWNx60: strSnafuTag=apszSnafuTag[12];break;//buffer=_T("[Hunter]");break; //STRIKE BACK case ET_MOD_UNKNOWNx76: strSnafuTag=apszSnafuTag[0];break;//buffer=_T("[DodgeBoards]");break; case ET_MOD_UNKNOWNx50: case ET_MOD_UNKNOWNxB1: case ET_MOD_UNKNOWNxB4: case ET_MOD_UNKNOWNxC8: case ET_MOD_UNKNOWNxC9: strSnafuTag=apszSnafuTag[13];break;//buffer=_T("[Bionic 0.20 Beta]");break; case ET_MOD_UNKNOWNxDA: strSnafuTag=apszSnafuTag[14];break;//buffer=_T("[Rumata (rus)(Plus v1f)]");break; } return strSnafuTag; }