python 主机端口扫描器

import optparse
import socket
from socket import *
from threading import *
screenLock =Semaphore(value=1)
def connScan(tgtHost,tgtPort):
try:
connSkt = socket(AF_INET,SOCK_STREAM)
connSkt.connect((tgtHost,tgtPort))
connSkt.send('ViolentPython\r\n'.encode('ascii'))
result = connSkt.recv(100)
screenLock.acquire() #执行一个加锁操作
print('[+] %d/tcp open'%tgtPort)
print('[+] ' + str(result))
connSkt.close()
except:
screenLock.acquire() #执行一个加锁操作
print('[-] %d/tcp closed'%tgtPort)
finally:
#执行释放锁的操作,同时将socket的连接在其后关闭
screenLock.release()
connSkt.close()

def portScan(tgtHost,tgtPorts):
try:
tgtIP = gethostbyname(tgtHost)
except:
print("[-] Cannot resolve '%s' : Unknown host"%tgtHost)
return

try:  
    tgtName = gethostbyaddr(tgtIP)              
    print('\n[+] Scan Results for: ' + tgtName[0])
except:  
    print('\n[+] Scan Results for: ' + tgtIP)  

setdefaulttimeout(1)  

for tgtPort in tgtPorts:  
    print('Scanning port' + tgtPort)  
    connScan(tgtHost,int(tgtPort))  

def main():
parser = optparse.OptionParser("[*] Usage : ./portscanner.py -H -p ")
parser.add_option('-H',dest='tgtHost',type='string',help='specify target host')
parser.add_option('-p',dest='tgtPort',type='string',help='specify target port[s]')
(options,args) = parser.parse_args()
tgtHost = options.tgtHost
tgtPorts = str(options.tgtPort).split(',')
if (tgtHost == None) | (tgtPorts[0] == None):
print(parser.usage)
exit(0)
portScan(tgtHost,tgtPorts)

if name == 'main':
main()

你可能感兴趣的:(python 主机端口扫描器)