#!/usr/bin/python
import optparse
from socket import *
from threading import *
screenLock = Semaphore(value=1)
def connScan(host,port):
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,port))
screenLock.acquire()
print '[+] '+str(port)+' open'
except:
screenLock.acquire()
print '[-] '+str(port)+' close'
finally:
screenLock.release()
s.close()
def portScan(host,ports):
try:
ip = gethostbyname(host)
except:
print "[-] Cannot resolve '%s': Unknown host "%host
return
try:
host = gethostbyaddr(ip)[0]
print '[+] results for host '+host
except:
print '[+] results for ip '+ip
setdefaulttimeout(1)
for port in ports:
t = Thread(target=connScan,args=(ip,int(port)))
t.start()
def main():
parser = optparse.OptionParser('usage %prog -H <target host> -p <target port>')
parser.add_option('-H',dest='host',type='string',help='specify target host')
parser.add_option('-p',dest='ports',type='string',help='specify target port[s] by comma')
(options,args) = parser.parse_args()
host = options.host
ports = str(options.ports)
if (host == None) | (ports == None):
print parser.usage
exit(0)
ports = ports.split(",")
portScan(host,ports)
if __name__ == "__main__":
main()