this repo has no description
1import mc from "minecraft-protocol";
2
3const PROXY_PORT = 25565;
4const TARGET_HOST = "one.strongcraft.org";
5const TARGET_PORT = 25565;
6const MINECRAFT_VERSION = "1.20.4";
7
8const SPOOFED_USERNAME = "BobTheBomber917";
9const SPOOFED_UUID = "4b5db0b0-3165-3ef2-956f-2ee9f25479aa";
10
11const server = mc.createServer({
12 "online-mode": false,
13 port: PROXY_PORT,
14 keepAlive: false,
15 version: MINECRAFT_VERSION,
16});
17
18console.log(`Minecraft proxy listening on port ${PROXY_PORT}`);
19console.log(`Forwarding to ${TARGET_HOST}:${TARGET_PORT}`);
20
21mc.ping({
22 host: TARGET_HOST,
23 port: TARGET_PORT,
24 version: MINECRAFT_VERSION,
25})
26 .then((res) => {
27 return res as mc.NewPingResult;
28 })
29 .then((res) => {
30 console.log("description:", res.description);
31 console.log("players:", res.players);
32 console.log("version:", res.version);
33 console.log("latency:", res.latency);
34 })
35 .catch((err) => {
36 console.error("Ping failed:", err);
37 });
38
39server.on("login", (client) => {
40 console.log("\n=== NEW CLIENT CONNECTION ===");
41 console.log(`Original Player: ${client.username}`);
42 console.log(`Original UUID: ${client.uuid}`);
43 console.log(`IP: ${client.socket.remoteAddress}`);
44 console.log(`Spoofing as: ${SPOOFED_USERNAME} (${SPOOFED_UUID})`);
45
46 console.log("\n=== CONNECTED USERS ===");
47 console.log("=======================\n");
48
49 const target = mc.createClient({
50 host: TARGET_HOST,
51 port: TARGET_PORT,
52 username: SPOOFED_USERNAME,
53 keepAlive: false,
54 version: MINECRAFT_VERSION,
55 auth: "offline",
56 });
57
58 target.on("connect", () => {
59 console.log(`Connected to target server for ${client.username}`);
60 });
61
62 target.on("error", (err) => {
63 console.error(`Target error for ${client.username}:`, err.message);
64 client.end("Connection to server failed");
65 });
66
67 client.on("packet", (data, meta) => {
68 if (
69 meta.name.includes("auth") ||
70 meta.name.includes("login") ||
71 meta.name.includes("encryption") ||
72 meta.name.includes("session")
73 ) {
74 console.log("\n--- AUTH PACKET (Client -> Server) ---");
75 console.log(`Packet: ${meta.name}`);
76 console.log(`State: ${meta.state}`);
77 console.log("Data:", JSON.stringify(data, null, 2));
78 console.log("--------------------------------------");
79 }
80
81 if (target.state === mc.states.PLAY && meta.state === mc.states.PLAY) {
82 target.write(meta.name, data);
83 }
84 });
85
86 target.on("packet", (data, meta) => {
87 if (
88 meta.name.includes("auth") ||
89 meta.name.includes("login") ||
90 meta.name.includes("encryption") ||
91 meta.name.includes("session") ||
92 meta.name.includes("compress")
93 ) {
94 console.log("\n--- AUTH PACKET (Server -> Client) ---");
95 console.log(`Packet: ${meta.name}`);
96 console.log(`State: ${meta.state}`);
97 console.log("Data:", JSON.stringify(data, null, 2));
98 console.log("--------------------------------------");
99 }
100
101 if (client.state === mc.states.PLAY && meta.state === mc.states.PLAY) {
102 client.write(meta.name, data);
103 }
104 });
105
106 client.on("end", () => {
107 console.log(`Client ${client.username} disconnected`);
108 target.end();
109 });
110
111 target.on("end", () => {
112 console.log(`Target server disconnected for ${client.username}`);
113 client.end("Server connection closed");
114 });
115});
116
117server.on("error", (err) => {
118 console.error("Server error:", err);
119});
120
121server.on("listening", () => {
122 console.log("Server ready for connections");
123});