New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

minecraft-protocol

Package Overview
Dependencies
Maintainers
6
Versions
176
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

minecraft-protocol - npm Package Compare versions

Comparing version 0.13.3 to 0.13.4

1

browser.js
module.exports = {
Client: require('./dist/client'),
protocol: require('./dist/protocol')
};

19

dist/client.js
"use strict";
var net = require("net"),
EventEmitter = require("events").EventEmitter,
var EventEmitter = require("events").EventEmitter,
util = require("util"),
protocol = require("./protocol"),
dns = require("dns"),
createPacketBuffer = protocol.createPacketBuffer,

@@ -155,17 +153,2 @@ compressPacketBuffer = protocol.compressPacketBuffer,

Client.prototype.connect = function (port, host) {
var self = this;
if (port == 25565 && net.isIP(host) === 0) {
dns.resolveSrv("_minecraft._tcp." + host, function (err, addresses) {
if (addresses && addresses.length > 0) {
self.setSocket(net.connect(addresses[0].port, addresses[0].name));
} else {
self.setSocket(net.connect(port, host));
}
});
} else {
self.setSocket(net.connect(port, host));
}
};
Client.prototype.end = function (reason) {

@@ -172,0 +155,0 @@ this._endReason = reason;

@@ -11,2 +11,4 @@ "use strict";

Client = require("./client"),
dns = require("dns"),
net = require("net"),
Server = require("./server"),

@@ -44,2 +46,5 @@ Yggdrasil = require("./yggdrasil.js"),

var onlineMode = options["online-mode"] == null ? true : options["online-mode"];
// a function receiving the default status object and the client
// and returning a modified response object.
var beforePing = options.beforePing || null;

@@ -117,2 +122,6 @@ var serverKey = ursa.generatePrivateKey(1024);

if (beforePing) {
response = beforePing(response, client) || response;
}
client.once([states.STATUS, 1], function (packet) {

@@ -152,2 +161,5 @@ client.write(1, { time: packet.time });

function onHandshake(packet) {
client.serverHost = packet.serverHost;
client.serverPort = packet.serverPort;
client.protocolVersion = packet.protocolVersion;
if (packet.nextState == 1) {

@@ -161,8 +173,13 @@ client.state = states.STATUS;

function onEncryptionKeyResponse(packet) {
var verifyToken = serverKey.decrypt(packet.verifyToken, undefined, undefined, ursa.RSA_PKCS1_PADDING);
if (!bufferEqual(client.verifyToken, verifyToken)) {
try {
var verifyToken = serverKey.decrypt(packet.verifyToken, undefined, undefined, ursa.RSA_PKCS1_PADDING);
if (!bufferEqual(client.verifyToken, verifyToken)) {
client.end("DidNotEncryptVerifyTokenProperly");
return;
}
var sharedSecret = serverKey.decrypt(packet.sharedSecret, undefined, undefined, ursa.RSA_PKCS1_PADDING);
} catch (e) {
client.end("DidNotEncryptVerifyTokenProperly");
return;
}
var sharedSecret = serverKey.decrypt(packet.sharedSecret, undefined, undefined, ursa.RSA_PKCS1_PADDING);
client.cipher = crypto.createCipheriv("aes-128-cfb8", sharedSecret, sharedSecret);

@@ -221,2 +238,17 @@ client.decipher = crypto.createDecipheriv("aes-128-cfb8", sharedSecret, sharedSecret);

Client.prototype.connect = function (port, host) {
var self = this;
if (port == 25565 && net.isIP(host) === 0) {
dns.resolveSrv("_minecraft._tcp." + host, function (err, addresses) {
if (addresses && addresses.length > 0) {
self.setSocket(net.connect(addresses[0].port, addresses[0].name));
} else {
self.setSocket(net.connect(port, host));
}
});
} else {
self.setSocket(net.connect(port, host));
}
};
function createClient(options) {

@@ -223,0 +255,0 @@ assert.ok(options, "options is required");

@@ -552,9 +552,6 @@ "use strict";

function readPosition(buffer, offset) {
var longVal = readLong(buffer, offset).value; // I wish I could do destructuring...
var x = longVal[0] >> 6;
if (x > 33554432) x -= 67108864;
var y = (longVal[0] & 63) << 6 | longVal[1] >> 26 & 63;
if (y > 2048) y -= 4096;
var z = longVal[1] & 67108863;
if (z > 33554432) z -= 67108864;
var longVal = readLong(buffer, offset).value;
var x = signExtend26(longVal[0] >> 6);
var y = signExtend12((longVal[0] & 63) << 6 | longVal[1] >> 26 & 63);
var z = signExtend26(longVal[1] & 67108863);
return {

@@ -565,2 +562,10 @@ value: { x: x, y: y, z: z },

}
function signExtend26(value) {
if (value > 33554432) value -= 67108864;
return value;
}
function signExtend12(value) {
if (value > 2048) value -= 4096;
return value;
}

@@ -1040,3 +1045,3 @@ function readSlot(buffer, offset) {

}
if (buffer.length > cursor) console.log("DID NOT PARSE THE WHOLE THING!");
if (buffer.length > cursor) debug("Too much data to read for packetId: " + packetId + " (0x" + packetId.toString(16) + ")");
debug(results);

@@ -1043,0 +1048,0 @@ return {

var readline = require('readline');
var color = require("ansi-color").set;
var mc = require('../');
var mc = require('../../');
var states = mc.protocol.states;

@@ -5,0 +5,0 @@ var util = require('util');

@@ -1,2 +0,2 @@

var mc = require('../')
var mc = require('../../')
, states = mc.protocol.states

@@ -19,2 +19,2 @@

}
});
});

@@ -1,2 +0,2 @@

var mc = require('../');
var mc = require('../../');

@@ -3,0 +3,0 @@ var states = mc.protocol.states;

@@ -1,2 +0,2 @@

var mc = require('../');
var mc = require('../../');

@@ -3,0 +3,0 @@ var options = {

@@ -1,2 +0,2 @@

var mc = require('../');
var mc = require('../../');
var states = mc.protocol.states;

@@ -3,0 +3,0 @@

{
"name": "minecraft-protocol",
"version": "0.13.3",
"version": "0.13.4",
"description": "Parse and serialize minecraft packets, plus authentication and encryption.",

@@ -46,3 +46,3 @@ "main": "index.js",

"superagent": "~0.10.0",
"ursa-purejs": "0.0.1"
"ursa-purejs": "0.0.3"
},

@@ -49,0 +49,0 @@ "optionalDependencies": {

@@ -384,2 +384,10 @@ # minecraft protocol [![NPM version](https://badge.fury.io/js/minecraft-protocol.svg)](http://badge.fury.io/js/minecraft-protocol)

### 0.13.4
* Added hook to modify server ping (thanks [Brian Schlenker](https://github.com/bschlenk))
* Exposed the Client class to the browser, after removing node-specific details
* Fixed the examples
* Silenced the "DID NOT PARSE THE WHOLE THING" debug message, and made it print more useful info
* Updated ursa-purejs dependency, which in turned fixed windows version of node-minecraft-protocol.
### 0.13.3

@@ -386,0 +394,0 @@

@@ -1,6 +0,4 @@

var net = require('net')
, EventEmitter = require('events').EventEmitter
var EventEmitter = require('events').EventEmitter
, util = require('util')
, protocol = require('./protocol')
, dns = require('dns')
, createPacketBuffer = protocol.createPacketBuffer

@@ -155,17 +153,2 @@ , compressPacketBuffer = protocol.compressPacketBuffer

Client.prototype.connect = function(port, host) {
var self = this;
if (port == 25565 && net.isIP(host) === 0) {
dns.resolveSrv("_minecraft._tcp." + host, function(err, addresses) {
if (addresses && addresses.length > 0) {
self.setSocket(net.connect(addresses[0].port, addresses[0].name));
} else {
self.setSocket(net.connect(port, host));
}
});
} else {
self.setSocket(net.connect(port, host));
}
};
Client.prototype.end = function(reason) {

@@ -172,0 +155,0 @@ this._endReason = reason;

@@ -9,2 +9,4 @@ var EventEmitter = require('events').EventEmitter

, Client = require('./client')
, dns = require('dns')
, net = require('net')
, Server = require('./server')

@@ -48,2 +50,5 @@ , Yggdrasil = require('./yggdrasil.js')

var onlineMode = options['online-mode'] == null ? true : options['online-mode'];
// a function receiving the default status object and the client
// and returning a modified response object.
var beforePing = options.beforePing || null;

@@ -122,2 +127,6 @@ var serverKey = ursa.generatePrivateKey(1024);

if (beforePing) {
response = beforePing(response, client) || response;
}
client.once([states.STATUS, 0x01], function(packet) {

@@ -157,2 +166,5 @@ client.write(0x01, { time: packet.time });

function onHandshake(packet) {
client.serverHost = packet.serverHost;
client.serverPort = packet.serverPort;
client.protocolVersion = packet.protocolVersion;
if (packet.nextState == 1) {

@@ -166,8 +178,13 @@ client.state = states.STATUS;

function onEncryptionKeyResponse(packet) {
var verifyToken = serverKey.decrypt(packet.verifyToken, undefined, undefined, ursa.RSA_PKCS1_PADDING);
if (!bufferEqual(client.verifyToken, verifyToken)) {
try {
var verifyToken = serverKey.decrypt(packet.verifyToken, undefined, undefined, ursa.RSA_PKCS1_PADDING);
if (!bufferEqual(client.verifyToken, verifyToken)) {
client.end('DidNotEncryptVerifyTokenProperly');
return;
}
var sharedSecret = serverKey.decrypt(packet.sharedSecret, undefined, undefined, ursa.RSA_PKCS1_PADDING);
} catch (e) {
client.end('DidNotEncryptVerifyTokenProperly');
return;
}
var sharedSecret = serverKey.decrypt(packet.sharedSecret, undefined, undefined, ursa.RSA_PKCS1_PADDING);
client.cipher = crypto.createCipheriv('aes-128-cfb8', sharedSecret, sharedSecret);

@@ -226,2 +243,17 @@ client.decipher = crypto.createDecipheriv('aes-128-cfb8', sharedSecret, sharedSecret);

Client.prototype.connect = function(port, host) {
var self = this;
if (port == 25565 && net.isIP(host) === 0) {
dns.resolveSrv("_minecraft._tcp." + host, function(err, addresses) {
if (addresses && addresses.length > 0) {
self.setSocket(net.connect(addresses[0].port, addresses[0].name));
} else {
self.setSocket(net.connect(port, host));
}
});
} else {
self.setSocket(net.connect(port, host));
}
};
function createClient(options) {

@@ -228,0 +260,0 @@ assert.ok(options, "options is required");

@@ -1098,9 +1098,6 @@ var assert = require('assert');

function readPosition(buffer, offset) {
var longVal = readLong(buffer, offset).value; // I wish I could do destructuring...
var x = longVal[0] >> 6;
if(x>33554432) x-=67108864;
var y = ((longVal[0] & 0x3F) << 6) | ((longVal[1] >> 26) & 0x3f);
if(y>2048) y-=4096;
var z = longVal[1] & 0x3FFFFFF;
if(z>33554432) z-=67108864;
var longVal = readLong(buffer, offset).value;
var x = signExtend26(longVal[0] >> 6);
var y = signExtend12(((longVal[0] & 0x3f) << 6) | ((longVal[1] >> 26) & 0x3f));
var z = signExtend26(longVal[1] & 0x3FFFFFF);
return {

@@ -1111,2 +1108,10 @@ value: { x: x, y: y, z: z },

}
function signExtend26(value) {
if (value > 0x2000000) value -= 0x4000000;
return value;
}
function signExtend12(value) {
if (value > 0x800) value -= 0x1000;
return value;
}

@@ -1592,3 +1597,3 @@ function readSlot(buffer, offset) {

if (buffer.length > cursor)
console.log("DID NOT PARSE THE WHOLE THING!");
debug("Too much data to read for packetId: " + packetId + " (0x" + packetId.toString(16) + ")");
debug(results);

@@ -1595,0 +1600,0 @@ return {

@@ -252,3 +252,6 @@ var mc = require('../')

if (err) return done(err);
//console.log(MC_SERVER_JAR);
if (!fs.existsSync(MC_SERVER_JAR)) {
return done(new Error("The file "+MC_SERVER_JAR+" doesn't exist."));
}
mcServer = spawn('java', [ '-Dlog4j.configurationFile=server/server_debug.xml', '-jar', MC_SERVER_JAR, 'nogui'], {

@@ -255,0 +258,0 @@ stdio: 'pipe',

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc