Security Basics mailing list archives

Re: Secure Port Testing


From: Tyler Reguly <htregz () gmail com>
Date: Fri, 22 Oct 2004 15:15:28 -0400

Hey Hey,

This is sample code I made, originally.. to demonstrate simple SMTP
honeypot, then later I hacked it up into an echo server... I've added
a prompt for port number, unfortunately it doesn't do multiple
ports... but it'll send you a banner and echo back any text you pass
to it... 'quit' will close the connection..  It may serve your
purpose...

Being that it's python you can use it on either Win or *nix, you
simply need python installed... It comes with most *nix distros and
can be easily obtained for Win32.

Peace,
HT

------CODE------

# Demonstrates various methods of importing modules.
from socket import *
import string
import time
import shlex
# create a socket of the basic type.
s = socket(AF_INET, SOCK_STREAM)
# Query the user for their IP Address and set that and the port
# Edit either of this variables to make them static and remove the prompt
# Example:
# HOST = "192.168.1.1"
# PORT = "23"
HOST = raw_input("Enter IP Address to bind socket to: ")
PORT = raw_input("Enter Port to Listen on: ")
s.bind((HOST, PORT)) # Bind the socket to an IP Address and Port
while 1:
    s.listen(5) # Have the socket listen for a connection
    (incomingsocket, address) = s.accept() # Accept an incoming connection
    straddress = str(address) # Convert incoming address to a string
    testlist = string.split(straddress, ",") # Split the tuple into lists
    gethost = string.split(testlist[0], "'") # Split the host portion
of the list
    getaddr = string.split(testlist[1], ")") # Split the port portion
of the list
    host = gethost[1] # Remove just the address from the list
    incomingport = int(getaddr[0]) # Remove just the port from the list
    data = ""
    # Print connection information to stdout 
    logdata = "Connection attempt on port " + str(PORT) + " from " +
str(host) + ":" + str(incomingport) + " @ " + time.strftime("%H:%M:%S
- %d %b %Y")
    print logdata
    #Send a Banner  
    incomingsocket.send("Welcome to HT's Simple Echo Server - RFC 862\r\n")
    # Listen for incoming data
    while 1 :
        while 1:
            lastchar = incomingsocket.recv(1024)
            if lastchar == "\n": break
            elif lastchar == "\r\n": break
            else: data = data + lastchar
        incomingsocket.send(data)
        incomingsocket.send("\r\n")
        if data == "quit\r\n" : break
        if data == "quit\n" : break
        data = ""
    # Close the socket
    incomingsocket.close
s.close

------END CODE------




On Fri, 22 Oct 2004 14:49:36 -0400, Mailing Lists <itmaillist () gmail com> wrote:
Hello List,

I am responsible for testing connectivity between customers and vendor
sites and often need to verify and test firewall settings for extranet
connections before the data link is available.  In the past I would
just set up a test box on a test LAN on the external interface of the
Firewall and pick a service and run it on  whatever port I need to
test. I am looking for something more secure and configurable that
wont put an actual service out in the open.  Hopefully a tool that
will allow me to open ports on a windows / or *nix box without
actually having a particular service running there.  Maybe a banner,
or just something that will allow me to determine if the connection
was successful.  Preferably I would like the ability to open multiple
ports at a time and be able to make quick to changes.  My methodology
is that if I get a positive connection I know the firewall is allowing
me through and routing properly.

Any recommendations for tools or different perspectives on how to test
this will be greatly appreciated!

Thanks.



Current thread: