Made connections happen in a function instead of globally.
This commit is contained in:
parent
727643aa79
commit
e685e63c70
362
index.js
362
index.js
|
@ -7,184 +7,226 @@ const bsplit = require("buffer-split");
|
||||||
// Load the settings
|
// Load the settings
|
||||||
var settings = require("./settings.json");
|
var settings = require("./settings.json");
|
||||||
|
|
||||||
// Encryption varibles
|
function connect()
|
||||||
var encryption;
|
|
||||||
var rsa_key;
|
|
||||||
|
|
||||||
// Create a client
|
|
||||||
var client = new net.Socket();
|
|
||||||
|
|
||||||
function string_decrypt(key, string)
|
|
||||||
{
|
{
|
||||||
// Convert the string to a buffer
|
// Make an accessible global object
|
||||||
var buff = new Buffer.from(string);
|
var g = new Object();
|
||||||
|
|
||||||
// Create some new data
|
// Encryption varibles
|
||||||
var decrypted = new Buffer.alloc(buff.length);
|
g.encryption;
|
||||||
|
g.rsa_key;
|
||||||
|
|
||||||
// Iterate over the string
|
// Set new
|
||||||
for(var i=0;i<string.length;i++)
|
g.sock_new = 2;
|
||||||
|
|
||||||
|
// Set a temporary encryption varible
|
||||||
|
g.raw_encryption_data = "";
|
||||||
|
g.raw_encryption_data_upto = 0;
|
||||||
|
g.raw_encryption_data_size = 0;
|
||||||
|
|
||||||
|
// Create a client
|
||||||
|
var client = new net.Socket();
|
||||||
|
|
||||||
|
function string_decrypt(key, string)
|
||||||
{
|
{
|
||||||
// Convert the string item to a number
|
// Convert the string to a buffer
|
||||||
var d = buff[i]-key.str[key.at.rx];
|
var buff = new Buffer.from(string);
|
||||||
while(d < 0) d += 256;
|
|
||||||
decrypted[i] = d;
|
|
||||||
|
|
||||||
// Add 1 to the key counter
|
// Create some new data
|
||||||
key.at.rx += 1;
|
var decrypted = new Buffer.alloc(buff.length);
|
||||||
|
|
||||||
// Is the key counter out of range
|
// Iterate over the string
|
||||||
if(key.at.rx >= key.str.length)
|
for(var i=0;i<string.length;i++)
|
||||||
{
|
{
|
||||||
// Set to zero
|
// Convert the string item to a number
|
||||||
key.at.rx = 0;
|
var d = buff[i]-key.str[key.at.rx];
|
||||||
|
while(d < 0) d += 256;
|
||||||
|
decrypted[i] = d;
|
||||||
|
|
||||||
|
// Add 1 to the key counter
|
||||||
|
key.at.rx += 1;
|
||||||
|
|
||||||
|
// Is the key counter out of range
|
||||||
|
if(key.at.rx >= key.str.length)
|
||||||
|
{
|
||||||
|
// Set to zero
|
||||||
|
key.at.rx = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the encrypted data
|
||||||
|
return decrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the encrypted data
|
function string_encrypt(key, string)
|
||||||
return decrypted;
|
|
||||||
}
|
|
||||||
|
|
||||||
function string_encrypt(key, string)
|
|
||||||
{
|
|
||||||
// Convert the string to a buffer
|
|
||||||
var buff = new Buffer.from(string);
|
|
||||||
|
|
||||||
// Create some new data
|
|
||||||
var encrypted = new Buffer.alloc(buff.length);
|
|
||||||
|
|
||||||
// Iterate over the string
|
|
||||||
for(var i=0;i<string.length;i++)
|
|
||||||
{
|
{
|
||||||
// Convert the string item to a number
|
// Convert the string to a buffer
|
||||||
var e = buff[i]+key.str[key.at.tx];
|
var buff = new Buffer.from(string);
|
||||||
while(e > 255) e -= 256;
|
|
||||||
encrypted[i] = e;
|
|
||||||
|
|
||||||
// Add 1 to the key counter
|
// Create some new data
|
||||||
key.at.tx += 1;
|
var encrypted = new Buffer.alloc(buff.length);
|
||||||
|
|
||||||
// Is the key counter out of range
|
// Iterate over the string
|
||||||
if(key.at.tx >= key.str.length)
|
for(var i=0;i<string.length;i++)
|
||||||
{
|
{
|
||||||
// Set to zero
|
// Convert the string item to a number
|
||||||
key.at.tx = 0;
|
var e = buff[i]+key.str[key.at.tx];
|
||||||
|
while(e > 255) e -= 256;
|
||||||
|
encrypted[i] = e;
|
||||||
|
|
||||||
|
// Add 1 to the key counter
|
||||||
|
key.at.tx += 1;
|
||||||
|
|
||||||
|
// Is the key counter out of range
|
||||||
|
if(key.at.tx >= key.str.length)
|
||||||
|
{
|
||||||
|
// Set to zero
|
||||||
|
key.at.tx = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the encrypted data
|
||||||
|
return encrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the encrypted data
|
function make_encryption_key(string)
|
||||||
return encrypted;
|
|
||||||
}
|
|
||||||
|
|
||||||
function make_encryption_key(string)
|
|
||||||
{
|
|
||||||
// Make a new key
|
|
||||||
var key = new Object();
|
|
||||||
|
|
||||||
// Set the varibles
|
|
||||||
key.str = string;
|
|
||||||
key.at = new Object();
|
|
||||||
key.at.rx = 0;
|
|
||||||
key.at.tx = 0;
|
|
||||||
|
|
||||||
// Return the key
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
function socket_write(socket, encryption, data)
|
|
||||||
{
|
|
||||||
// Send the data encrypted with JSON
|
|
||||||
socket.write(string_encrypt(encryption, JSON.stringify(data)+"\n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
function socket_ondata(socket, callback)
|
|
||||||
{
|
|
||||||
// Wait for a response
|
|
||||||
socket.on('data', function(data)
|
|
||||||
{
|
{
|
||||||
// Decode the data
|
// Make a new key
|
||||||
data = JSON.parse(data);
|
var key = new Object();
|
||||||
|
|
||||||
// Call the callback
|
// Set the varibles
|
||||||
callback(data);
|
key.str = string;
|
||||||
|
key.at = new Object();
|
||||||
|
key.at.rx = 0;
|
||||||
|
key.at.tx = 0;
|
||||||
|
|
||||||
|
// Return the key
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
function socket_write(socket, encryption, data)
|
||||||
|
{
|
||||||
|
// Send the data encrypted with JSON
|
||||||
|
socket.write(string_encrypt(encryption, JSON.stringify(data)+"\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function socket_ondata(socket, callback)
|
||||||
|
{
|
||||||
|
// Wait for a response
|
||||||
|
socket.on('data', function(data)
|
||||||
|
{
|
||||||
|
// Decode the data
|
||||||
|
data = JSON.parse(data);
|
||||||
|
|
||||||
|
// Call the callback
|
||||||
|
callback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Connect to the server
|
||||||
|
client.connect(22068, '127.0.0.1', function()
|
||||||
|
{
|
||||||
|
// Create an rsa key
|
||||||
|
g.rsa_key = new node_rsa({b:settings.rsa_size});
|
||||||
|
|
||||||
|
// Send the public key to the server
|
||||||
|
client.write(g.rsa_key.exportKey("public")+"\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Wait for data
|
||||||
|
client.on('data', function(data)
|
||||||
|
{
|
||||||
|
console.log("RAW: ", {
|
||||||
|
input: data,
|
||||||
|
sock_new:g.sock_new,
|
||||||
|
raw_encryption_data_upto: g.raw_encryption_data_upto,
|
||||||
|
bsplit_length: bsplit(data, Buffer.from("\n")).length
|
||||||
|
});
|
||||||
|
|
||||||
|
if(g.sock_new != 0)
|
||||||
|
{
|
||||||
|
// Split the data by newlines
|
||||||
|
data = bsplit(data, Buffer.from("\n"));
|
||||||
|
|
||||||
|
// Iterate over the values
|
||||||
|
for(var i=0;i<data.length;i++)
|
||||||
|
{
|
||||||
|
// Done signal
|
||||||
|
if(data[i]=="done")
|
||||||
|
{
|
||||||
|
/*// Set sock new to 0
|
||||||
|
sock_new = 0;
|
||||||
|
|
||||||
|
// Set the key
|
||||||
|
encryption = make_encryption_key(rsa_key.decrypt(raw_encryption_data));
|
||||||
|
|
||||||
|
console.log("Done.");
|
||||||
|
|
||||||
|
socket_write(client, encryption, {message: "hello, world!", number: 53});*/
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is the client recieving the key size
|
||||||
|
if(g.sock_new == 2)
|
||||||
|
{
|
||||||
|
console.log("Recieved key.");
|
||||||
|
|
||||||
|
// Set the size of the key
|
||||||
|
g.raw_encryption_data_size = parseInt(data[i]);
|
||||||
|
|
||||||
|
// Set sock new to 1
|
||||||
|
g.sock_new = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is the client recieving the key
|
||||||
|
else if(g.sock_new == 1)
|
||||||
|
{
|
||||||
|
console.log(data[i]);
|
||||||
|
|
||||||
|
// Decode the data
|
||||||
|
g.raw_encryption_data += data[i];
|
||||||
|
g.raw_encryption_data_upto += data[i].length;
|
||||||
|
console.log(data[i].length);
|
||||||
|
|
||||||
|
// Is this the end of the stream
|
||||||
|
if(g.raw_encryption_data_upto == g.raw_encryption_data_size)
|
||||||
|
{
|
||||||
|
// Set sock new to 0
|
||||||
|
g.sock_new = 0;
|
||||||
|
|
||||||
|
// Set the key
|
||||||
|
g.encryption = make_encryption_key(g.rsa_key.decrypt(g.raw_encryption_data));
|
||||||
|
|
||||||
|
console.log("Done.");
|
||||||
|
|
||||||
|
socket_write(client, g.encryption, {message: "hello, world!", number: 53});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Decrypt the data
|
||||||
|
data = string_decrypt(g.encryption, data);
|
||||||
|
|
||||||
|
// Split the data by newlines
|
||||||
|
data = bsplit(data, Buffer.from("\n"));
|
||||||
|
|
||||||
|
// Iterate over them
|
||||||
|
for(var i=0;i<data.length-1;i++)
|
||||||
|
{
|
||||||
|
console.log(JSON.parse(data[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on('close', function(data)
|
||||||
|
{
|
||||||
|
// Close the window
|
||||||
|
//window.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Return the global varibles
|
||||||
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the server
|
|
||||||
client.connect(22068, '127.0.0.1', function()
|
|
||||||
{
|
|
||||||
// Create an rsa key
|
|
||||||
rsa_key = new node_rsa({b:settings.rsa_size});
|
|
||||||
|
|
||||||
// Send the public key to the server
|
|
||||||
client.write(rsa_key.exportKey("public"));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Set new
|
|
||||||
var sock_new = 2;
|
|
||||||
|
|
||||||
// Set a temporary encryption varible
|
|
||||||
var raw_encryption_data = "";
|
|
||||||
var raw_encryption_data_upto = 0;
|
|
||||||
var raw_encryption_data_size = 0;
|
|
||||||
|
|
||||||
// Wait for data
|
|
||||||
client.on('data', function(data)
|
|
||||||
{
|
|
||||||
if(sock_new == 2)
|
|
||||||
{
|
|
||||||
console.log("Recieved key.");
|
|
||||||
|
|
||||||
// Set the size of the key
|
|
||||||
raw_encryption_data_size = parseInt(data);
|
|
||||||
|
|
||||||
// Set sock new to 1
|
|
||||||
sock_new = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is the socket recieving the key
|
|
||||||
else if(sock_new == 1)
|
|
||||||
{
|
|
||||||
console.log(data);
|
|
||||||
|
|
||||||
// Decode the data
|
|
||||||
raw_encryption_data += data;
|
|
||||||
raw_encryption_data_upto += data.length;
|
|
||||||
console.log(data.length);
|
|
||||||
|
|
||||||
// Is this the end of the stream
|
|
||||||
if(raw_encryption_data_upto == raw_encryption_data_size)
|
|
||||||
{
|
|
||||||
// Set sock new to 0
|
|
||||||
sock_new = 0;
|
|
||||||
|
|
||||||
// Set the key
|
|
||||||
encryption = make_encryption_key(rsa_key.decrypt(raw_encryption_data));
|
|
||||||
|
|
||||||
console.log("Done.");
|
|
||||||
|
|
||||||
socket_write(client, encryption, {message: "hello, world!", number: 53});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Decrypt the data
|
|
||||||
data = string_decrypt(encryption, data);
|
|
||||||
|
|
||||||
// Split the data by newlines
|
|
||||||
data = bsplit(data, Buffer.from("\n"));
|
|
||||||
|
|
||||||
// Iterate over them
|
|
||||||
for(var i=0;i<data.length-1;i++)
|
|
||||||
{
|
|
||||||
console.log(JSON.parse(data[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('close', function(data)
|
|
||||||
{
|
|
||||||
// Close the window
|
|
||||||
//window.close();
|
|
||||||
});
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
"rsa_size": 512
|
"rsa_size": 2048
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue