nodejs写的sslproxy捕获ssl明文数据
var net = require('net');var sslproxyhost="192.168.7.19";//被代理的服务的IPvar sslproxyport=5004;//被代理的端口var ssllistenport=5004;//代理端口var tls = require('tls');var fs = require('fs');var options = { key: fs.readFileSync('ryans-key.pem'), cert: fs.readFileSync('ryans-cert.pem'),};var sslserver = tls.createServer(options, function(cleartextStream) {console.log('client connected', cleartextStream.authorized ? 'authorized' : 'unauthorized');console.log('client disconnected');//cleartextStream.setEncoding('ascii');cleartextStream.on('data', function(data) {console.log('client send:');console.log(data);console.log('' + data);});cleartextStream.on('end', function() {console.log('client disconnected'); //server.close();}); var c_cleartextStream = tls.connect(sslproxyport,sslproxyhost, {}, function() { console.log('server connected', c_cleartextStream.authorized ? 'authorized' : 'unauthorized');});//c_cleartextStream.setEncoding('ascii');c_cleartextStream.on('data', function(data) {console.log('server recv:');console.log(data);buf = new Buffer(data.length);for (var i = 0; i < data.length ; i++) { // buf[i] = data.charCodeAt(i); buf[i]=data[i]&0x7f;}console.log("server recv2(cut even):");console.log(buf);console.log('' + buf);});c_cleartextStream.on('end', function() {console.log('server disconnected');//sslserver.close();});cleartextStream.pipe(c_cleartextStream);c_cleartextStream.pipe(cleartextStream);//});sslserver.listen(ssllistenport, function() { console.log('server bound');});