this repo has no description
at main 3.3 kB view raw
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});