This README is non-essential to operation as to everything is rather simple and self explanatory, but if it doesn't work, this will offer some clue (maybe). __1__ rtelnetd and rtelnet These opens a reverse-connection to a host's STDIN/STDOUT of an arbitrary program (normally /bin/bash), it's rather crude but if you just need to do a couple of things it works rather well. But if you want to do something more complicated (like anything requiring stderr (getpass()'d password prompts)), use rdatapiped/rdatapipe. __1.1__ rtelnetd Usage: ./rtelnetd [] argv[] name explanation 0 retelnetd Program name. 1 host Host to attempt periodic connections to connect to rtelnet client 2 port Port to attempt to connect to on HOST 3 command When a connection is established, which program do you want to run (/bin/bash works well) 4. password-file The location to a (one-line) plain-text file which contains a password to restrict access. rtelnetd is a simple program-to-socket datapipe. password-file can be empty (or not exist), and it a password will not be prompted for. __1.2__ rtelnet Usage: ./rtelnet argv[] name explanation 0 rtelnet Program name. 1 port Port that rtelnetd is trying to connect to the current host on (which should be the same as the parameter HOST on rtelnetd). rtelnet is a simple script similar to (and could probably be replaced with) netcat (nc). __2__ rdatapiped and rdatapipe These setup some rather complex webs of connections to make a port on one host to be connected (via a datapipe) to a firewalled host, its rather interesting. __2.1__ rdatapiped Usage: ./rdatapiped argv[] name explanation 0 rdatapiped Program name 1 host Host which will run rdatapipe rdatapiped connects to HOST on port 4500 (this makes up the control connection, which is used to send commands) and creates datapipes when required. __2.2__ rdatapipe Usage: ./rdatapipe [ [] ] argv[] name explanation 0 rdatapipe Program name. 1 local-port Port on the local machine to listen for connections on. 2 remote-port Port on the remote (firewalled) host to connect to 3 remote-host Host behind firewall to connect to (default: localhost) Description of operation of rdatapipe: A "Reverse" datapipe, useful for accessing firewalled hosts. rdatapiped does no listening, it handles outgoing connections, rdatapipe handles listening connections, it listens on CONTROLPORT for connection from rdatapiped, then, once it has a connection, it (stops listening, ) it waits for a connection on LISTENPORT, when it gets on, it begins listening on a random port and tells the rdatapiped host what port its listening on and what port it would like to connect with, a datapipe is established between those two, then a datapipe is established between the connection socket and the socket attached to the other datapipe. It's all very simple, you see. __3__ Frequently Asked Questions. __3.1__ Q. Why does rtelnet's connection freeze when I run telnet/ftp/lynx/login/screen/etc.? A. Those are (attempting to do)|doing things to the terminal for various reasons and they do it to the terminal that rtelnetd was run from and not the real session terminal (since there isn't one). __3.2__ Q. Why is this written in TCL? A. Because I know TCL's implementation of sockets more than C's. Get over it. Or write a better one.