Node.js写的sslproxy捕获ssl明文数据


Node.js写的sslproxy捕获ssl明文数据:

  1. var net = require('net');  
  2.   
  3. var sslproxyhost="192.168.7.19";//被代理的服务的IP   
  4. var sslproxyport=5004;//被代理的端口   
  5. var ssllistenport=5004;//代理端口   
  6.   
  7. var tls = require('tls');  
  8. var fs = require('fs');  
  9.   
  10. var options = {  
  11.   key: fs.readFileSync('ryans-key.pem'),  
  12.   cert: fs.readFileSync('ryans-cert.pem'),  
  13. };  
  14.   
  15. var sslserver = tls.createServer(options, function(cleartextStream) {  
  16.     console.log('client connected',  
  17.               cleartextStream.authorized ? 'authorized' : 'unauthorized');  
  18.     console.log('client disconnected');  
  19.     //cleartextStream.setEncoding('ascii');   
  20.     cleartextStream.on('data'function(data) {  
  21.         console.log('client send:');  
  22.         console.log(data);    
  23.         console.log('' + data);  
  24.     });  
  25.     cleartextStream.on('end'function() {  
  26.         console.log('client disconnected');  
  27.       //server.close();   
  28.     });  
  29.     
  30.     var c_cleartextStream = tls.connect(sslproxyport,sslproxyhost, {}, function() {  
  31.       console.log('server connected',  
  32.                   c_cleartextStream.authorized ? 'authorized' : 'unauthorized');  
  33.     });  
  34.   
  35.     //c_cleartextStream.setEncoding('ascii');   
  36.     c_cleartextStream.on('data'function(data) {  
  37.         console.log('server recv:');  
  38.         console.log(data);  
  39.         buf = new Buffer(data.length);  
  40.         for (var i = 0; i < data.length ; i++) {  
  41.          // buf[i] = data.charCodeAt(i);   
  42.           buf[i]=data[i]&0x7f;  
  43.         }  
  44.         console.log("server recv2(cut even):");  
  45.         console.log(buf);  
  46.         console.log('' + buf);  
  47.     });  
  48.   
  49.     c_cleartextStream.on('end'function() {  
  50.         console.log('server disconnected');  
  51.         //sslserver.close();   
  52.     });  
  53.   
  54.     cleartextStream.pipe(c_cleartextStream);  
  55.     c_cleartextStream.pipe(cleartextStream);  
  56. //   
  57. });  
  58.   
  59. sslserver.listen(ssllistenport, function() {  
  60.   console.log('server bound');  
  61. });  

相关内容