this repo has no description
1import mc from 'minecraft-protocol';
2
3const PROXY_PORT = 25565;
4const TARGET_HOST = 'localhost';
5const TARGET_PORT = 25566;
6
7const SPOOFED_USERNAME = 'admin';
8const SPOOFED_UUID = '36881d51-7477-3eb6-91a1-dfc11065590d';
9
10const server = mc.createServer({
11 'online-mode': false,
12 port: PROXY_PORT,
13 keepAlive: false,
14 version: '1.20.4'
15});
16
17console.log(`Minecraft proxy listening on port ${PROXY_PORT}`);
18console.log(`Forwarding to ${TARGET_HOST}:${TARGET_PORT}`);
19
20server.on('login', (client) => {
21 console.log('\n=== NEW CLIENT CONNECTION ===');
22 console.log(`Original Player: ${client.username}`);
23 console.log(`Original UUID: ${client.uuid}`);
24 console.log(`IP: ${client.socket.remoteAddress}`);
25 console.log(`Spoofing as: ${SPOOFED_USERNAME} (${SPOOFED_UUID})`);
26
27 const target = mc.createClient({
28 host: TARGET_HOST,
29 port: TARGET_PORT,
30 username: SPOOFED_USERNAME,
31 keepAlive: false,
32 version: '1.20.4',
33 auth: 'offline'
34 });
35
36 target.on('connect', () => {
37 console.log(`Connected to target server for ${client.username}`);
38 });
39
40 target.on('error', (err) => {
41 console.error(`Target error for ${client.username}:`, err.message);
42 client.end('Connection to server failed');
43 });
44
45 client.on('packet', (data, meta) => {
46 if (meta.name.includes('auth') ||
47 meta.name.includes('login') ||
48 meta.name.includes('encryption') ||
49 meta.name.includes('session')) {
50 console.log('\n--- AUTH PACKET (Client -> Server) ---');
51 console.log(`Packet: ${meta.name}`);
52 console.log(`State: ${meta.state}`);
53 console.log('Data:', JSON.stringify(data, null, 2));
54 console.log('--------------------------------------');
55 }
56
57 if (target.state === mc.states.PLAY && meta.state === mc.states.PLAY) {
58 target.write(meta.name, data);
59 }
60 });
61
62 target.on('packet', (data, meta) => {
63 if (meta.name.includes('auth') ||
64 meta.name.includes('login') ||
65 meta.name.includes('encryption') ||
66 meta.name.includes('session') ||
67 meta.name.includes('compress')) {
68 console.log('\n--- AUTH PACKET (Server -> Client) ---');
69 console.log(`Packet: ${meta.name}`);
70 console.log(`State: ${meta.state}`);
71 console.log('Data:', JSON.stringify(data, null, 2));
72 console.log('--------------------------------------');
73 }
74
75 if (client.state === mc.states.PLAY && meta.state === mc.states.PLAY) {
76 client.write(meta.name, data);
77 }
78 });
79
80 client.on('end', () => {
81 console.log(`Client ${client.username} disconnected`);
82 target.end();
83 });
84
85 target.on('end', () => {
86 console.log(`Target server disconnected for ${client.username}`);
87 client.end('Server connection closed');
88 });
89});
90
91server.on('error', (err) => {
92 console.error('Server error:', err);
93});
94
95server.on('listening', () => {
96 console.log('Server ready for connections');
97});