Tunnel TCP connections over Secure WebSocket
JavaScript
Switch branches/tags
Nothing to show
Clone or download

readme.md

#TCP over WebSocket

This tool allows you to tunnel TCP connections over WebSocket protocol using SSL. It consists of a server agent and a client console. If the server agent is running on a remote machine you can use it as a middle-man to route connections securely to any network host even through firewalls and proxies.

##Example use cases:

  • You are on a restricted network that only allows traffic on ports 80 and 443
  • You wish to connect securely to a service from a public access point, and cannot use SSH

Due to WebSocket connections starting out as normal HTTPS, this can be used to tunnel connections through certain restrictive firewalls that do not even allow SSH or OpenVPN over port 443.

##Usage

On a server, run server.js specifying optional port and address to bind to (defaults to 0.0.0.0:443):

node server.js 74.125.227.148:443

On a client, run connect.js specifying remote host and optional port (defaults to 443):

node connect.js 74.125.227.148

You will be prompted for username/password which the server will verify against users.txt and then you are presented with a command shell where you can create and destroy tunnels.

> tunnel 3306 8.12.44.238:3306

This will listen on port 3306 on the client (localhost) and forward connections to remote host 8.12.44.238 via the WebSocket server. Destination port, if omitted, will default to source port.

The server uses SSL key files present in keys/ and users listed in users.txt (in which passwords are md5 hashed).