javascript - instalar - node js console commands
Node.js: reenvía todo el tráfico del puerto A al puerto B (3)
Estoy intentando reenviar todo el tráfico del puerto 6999 al puerto 7000 (sé que podría usar iptables, pero la idea es usar Node.js para hacer una inspección de paquetes).
Aquí está el código que tengo sofar:
var net=require(''net'');
var compress=require(''./node-compress/compress'');
var ip=''172.16.1.224'';
var ipPort=6999;
var opPort=7000;
var output=net.createServer(function(connOut){
var input=net.createServer(function(connIn){
connIn.pipe(connOut);
});
input.listen(ipPort,ip);
});
output.listen(opPort,ip);
Simplemente no parece funcionar. Cuando hago un tcpdump en el puerto 7000, no aparece nada. ¿Alguien tiene alguna sugerencia?
Muchas gracias de antemano,
¿Has mirado el módulo Node.js de Hoxy ?
http://www.youtube.com/watch?v=2YLfBTrVgZU
Breve descripción de README del desarrollador:
Hoxy es un proxy de piratería web para node.js, destinado a los desarrolladores web. Usando hoxy, puedes actuar como un "hombre en el medio" y alterar las solicitudes y respuestas HTTP a medida que fluyen a través de un conjunto de reglas condicionales. Como proceso en ejecución, hoxy se comporta como un servidor proxy independiente. Hoxy se inspiró como una forma de complementar a los depuradores como Firebug, que te permite manipular el tiempo de ejecución del cliente pero no la conversación HTTP subyacente.
Esto debería funcionar bastante bien, a menos que esté buscando una inspección de paquetes a paquetes de los datos a un nivel inferior.
Aquí está mi ir en ello:
Admite dar el "desde" y "hasta" desde la línea de comandos y admite máquinas remotas.
var net = require(''net'');
// parse "80" and "localhost:80" or even "42mEANINg-life.com:80"
var addrRegex = /^(([a-zA-Z/-/.0-9]+):)?(/d+)$/;
var addr = {
from: addrRegex.exec(process.argv[2]),
to: addrRegex.exec(process.argv[3])
};
if (!addr.from || !addr.to) {
console.log(''Usage: <from> <to>'');
return;
}
net.createServer(function(from) {
var to = net.createConnection({
host: addr.to[2],
port: addr.to[3]
});
from.pipe(to);
to.pipe(from);
}).listen(addr.from[3], addr.from[2]);
(guardar como proxy.js)
Para reenviar desde localhost: 9001 => localhost: 80
$ node proxy.js 9001 80
O localhost: 9001 => otro host: 80
$ node proxy.js 9001 otherhost:80
(Esto se basó en la respuesta de Andrey, gracias!)
necesita tener createConnection en un lado. Aquí está el script que uso para reenviar tráfico
var net = require(''net'');
var sourceport = 1234;
var destport = 1235;
net.createServer(function(s)
{
var buff = "";
var connected = false;
var cli = net.createConnection(destport);
s.on(''data'', function(d) {
if (connected)
{
cli.write(d);
} else {
buff += d.toString();
}
});
cli.on(''connect'', function() {
connected = true;
cli.write(buff);
});
cli.pipe(s);
}).listen(sourceport);