How to Talk to TCP Ports

It’s easy to forget how to telnet to a port and talk to a daemon.

HTTPS

HTTPS 1.1 – Without authentication

# openssl s_client -quiet -host maxx.shmoo.com -port 443
depth=0 C = US, ST = Maryland, L = Beltsville, O = The Shmoo Group, CN = maxx.shmoo.com, emailAddress = gdead@shmoo.com
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = Maryland, L = Beltsville, O = The Shmoo Group, CN = maxx.shmoo.com, emailAddress = gdead@shmoo.com
verify error:num=10:certificate has expired
notAfter=Oct 22 17:37:18 2017 GMT
verify return:1
depth=0 C = US, ST = Maryland, L = Beltsville, O = The Shmoo Group, CN = maxx.shmoo.com, emailAddress = gdead@shmoo.com
notAfter=Oct 22 17:37:18 2017 GMT
verify return:1
GET / HTTP/1.1
Host: adam.shand.net

HTTP/1.1 200 OK
Date: Thu, 16 Jan 2020 21:20:01 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Sat, 17 Dec 2016 00:13:59 GMT
ETag: "d-543cf902bd308"
Accept-Ranges: bytes
Content-Length: 13
Content-Type: text/html

Where's Wik?
^D

HTTP

Note that the 404 response for the authenticated example is because I deliberated specified a URL that doesn’t exist.

HTTP 1.1 – Without authentication

# telnet maxx.shmoo.com 80 
Trying 205.134.188.171...
Connected to maxx.shmoo.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: adam.shand.net

HTTP/1.1 200 OK
Date: Wed, 18 Mar 2009 22:02:05 GMT
Server: Apache/2.2.9 (Debian) DAV/2 PHP/5.2.6-1+lenny2 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
Last-Modified: Sun, 20 Jul 2008 08:06:39 GMT
ETag: "2a810d8-131a-45270120561c0"
Accept-Ranges: bytes
Content-Length: 4890
Content-Type: text/html; charset=UTF-8

HTTP 1.1 – With failed authentication

misfire(shand)$ telnet maxx.shmoo.com 80 
Trying 67.207.134.156...
Connected to maxx.shmoo.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: maxx.shmoo.com
Authorization: Basic YWRhbTpzZWNyZXQK=

HTTP/1.1 401 Authorization Required
Date: Wed, 18 Mar 2009 22:03:52 GMT
Server: Apache/2.2.8 (Debian) PHP/5.2.5-3 with Suhosin-Patch
WWW-Authenticate: Basic realm="maxx.shmoo.com"
Content-Length: 516
Content-Type: text/html; charset=iso-8859-1

HTTP 1.1 – With successful authentication

# telnet maxx.shmoo.com 80 
Trying 192.168.17.179...
Connected to maxx.shmoo.com.
Escape character is '^]'.
GET /nothere HTTP/1.1 
Host: maxx.shmoo.com
Authorization: Basic YWRhbTpzZWNyZXQK=

HTTP/1.1 404 Not Found
Date: Wed, 18 Mar 2009 22:07:53 GMT
Server: Apache/1.3.34 (Debian) mod_perl/1.29 DAV/1.0.3 PHP/5.2.0-8+etch11
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

IMAP

Need to remember details of how to list, retrieve and delete messages.

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK dovecot ready.
AA CAPABILITY
* CAPABILITY IMAP4rev1 SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN LISTEXT LIST-SUBSCRIBED STARTTLS AUTH=PLAIN
AA OK Capability completed.
AD LOGIN adam secret
AD OK Logged in.
a4 LIST "" *
* LIST (\HasChildren) "." INBOX
* LIST (\HasNoChildren) "." "Foo"
* LIST (\HasChildren) "." "Bar"
a5 SELECT Foo
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 194 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1047965829] UIDs valid
* OK [UIDNEXT 272] Predicted next UID
a5 OK [READ-WRITE] Select completed.
AE logout
* BYE Logging out
AE OK Logout completed.
Connection closed by foreign host.

NNTP

# telnet localhost 119
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200 news NNTPCache server V3.0.1 [see www.nntpcache.org]  (c) 1996-2002 Julian Assange <proff@iq.org> May 27 2004 ready (posting ok, 72154 groups available).
215
24hoursupport.helpdesk 730507 600741 y
...<snip>...
gmane.comp.java.dna.devel 15 1 m
.
listgroup gmane.comp.java.dna.devel         
211 Article list follows
1
...<snip>...
15
.
GROUP gmane.comp.java.dna.devel
211 15 1 15 gmane.comp.java.dna.devel
article 12
220 12 <c76j3b$neq$1@sea.gmane.org> article
Path: main.gmane.org!not-for-mail
From: Mauro Talevi <mauro.talevi-hQ+s5KbX5YmGglJvpFV4uA@public.gmane.org>
Newsgroups: gmane.comp.java.dna.devel
Subject: Re: Release 1.1
Date: Tue, 04 May 2004 00:09:13 +0100
Lines: 10
...<snip>...
.
quit
205
Connection closed by foreign host.

POP3

# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK dovecot ready.
user adam
+OK
pass secret
+OK Logged in.
list
+OK scan listing follows
1 2667
2 2763
...<snip> ...
1120 2490
1121 122715
1122 2750
.
retr 1120
+OK 2490 octets
Return-Path: <support@...>
X-Original-To: adam@...
Delivered-To: adam@...
Received: from flexo.sydneywireless.com (flexo.sydneywireless.com [202.93.176.34])
        by ronin.spack.org (Postfix) with ESMTP id E257C2C103
        for <adam@...>; Sun, 13 Jun 2004 16:54:12 -0700 (PDT)
Received: (qmail 1173 invoked by uid 0); 13 Jun 2004 23:54:04 -0000
Date: 13 Jun 2004 23:54:04 -0000
Message-ID: <20040613235404.1172.qmail@flexo.sydneywireless.com>
To: adam@...
Subject: Your new certificate for ssl.spack.org
From: support@...

-----BEGIN CERTIFICATE-----
MIIFRDCCAyygAwIBAgIDAJG5MA0GCSqGSIb3DQEBBAUAMHkxEDAOBgNVBAoTB1Jv
...<snip> ...
5o4Wey39C/U=
-----END CERTIFICATE-----
.
dele 1120
+OK Marked to be deleted.
quit
+OK Logging out, messages deleted.
Connection closed by foreign host.

SMTP

SMTP without authentication

# telnet localhost 25 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ronin.spack.org ESMTP We own your foo.
ehlo ronin.spack.org
250-ronin.spack.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-XVERP
250 8BITMIME
MAIL FROM: adam@domain.com
250 Ok
RCPT TO: adam@otherdomain.com
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: there must be a blank line between the end of the headers and the start of the message body

this is the message body, type a period on a line by itself to end the message body.
.
250 Ok: queued as 9AA8D2C125
quit
221 Bye
Connection closed by foreign host.

SMTP with STARTLS and SMTPAUTH

ronin(adam)$ swaks -tls -a
To: adam@shand...
Username: adam
Password: <snip>
=== Trying ronin.spack.org:25...
Connected to ronin.spack.org.
<-  220 ronin.spack.org ESMTP "Sarge is once again proof that communities can do great things even communities of irritable, cantankerous, grudge-holding, flaming Free Software nuts. ;)" -- Steve Langasek
 -> EHLO ronin
<-  250-ronin.spack.org
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250 8BITMIME
 -> STARTTLS
<-  220 Ready to start TLS
=== TLS started w/ cipher DHE-RSA-AES256-SHA
 ~> EHLO ronin
<~  250-ronin.spack.org
<~  250-PIPELINING
<~  250-SIZE 10240000
<~  250-VRFY
<~  250-ETRN
<~  250-AUTH LOGIN PLAIN
<~  250-AUTH=LOGIN PLAIN
<~  250 8BITMIME
 ~> AUTH PLAIN GAF<snip>cH1=
<~  235 Authentication successful
 ~> MAIL FROM:<adam@ronin>
<~  250 Ok
 ~> RCPT TO:<adam@shand...>
<~  250 Ok
 ~> DATA
<~  354 End data with <CR><LF>.<CR><LF>
 ~> Date: Mon, 28 Aug 2006 12:09:46 -0700
 ~> To: adam@shand...
 ~> From: adam@ronin
 ~> Subject: test Mon, 28 Aug 2006 12:09:46 -0700
 ~> X-Mailer: swaks v20040404.1 jetmore.org/john/code/#swaks
 ~> 
 ~> This is a test mailing
 ~> 
 ~> .
<~  250 Ok: queued as D42102ACA3
 ~> QUIT
<~  221 Bye

Comments are closed.