in reply to Telnet handshaking

The telnet port probably isn't opening properly because you aren't completing the telnet negotiation sequence. I don't know whether you are familiar with this but it involves sending small cryptic binary messages to the server to negotiate with the client what options they both support. I wrote a C program to do this a while back - it just NAKed all the options the server sent it.

I discovered that some servers won't start up at all unless you perform the negotiation (Linux telnetd is one) whereas others are quite happy for you to charge in there ignoring the negotiation.

You could write the code for this, but as you've noted it is a bit of a pain. However you've got several other options.

TIMTOWDI of course!