Node.js写的sslproxy捕获ssl明文数据:
- var net = require("net");
-
- var sslproxyhost="192.168.7.19";//被代理的服务的IP
- var 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");
- });