思路:
通过python的:optprase库来对用户的输入参数进行解析匹配,之后再根据用户的参数、socket的使用方法进行一个简易的端口扫描探测:
代码:
#encoding:utf-8
import socket
import optparse
from socket import *
def connScan(tgtHost,tgtPort):
try:
connSkt=socket(AF_INET,SOCK_STREAM)
connSkt.connect((tgtHost,tgtPort))
connSkt.send('ViolentPython\r\n')
result=connSkt.recv(1024)
print '[+]%d/tcp open'%tgtPort
print '[+]'+str(result)
connSkt.close()
except:
print '[-]%d/tcp closed'%tgtPort
def portScan(tgtHost,tgtPorts):
try:
tgtIP=gethostname(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(2)
for tgtPort in tgtPorts:
print 'Scanning port'+tgtPort
connScan(tgtHost,tgtPort)
def main():
parser=optparse.OptionParser("usage %prog -H <target host> -p <target port>")
parser.add_option('-H',dest='tgtHost',type='string',help='specify target host')
parser.add_option('-p',dest='tgtPort',type='string',help='specify target ports[s] separated by comma')
(options,args)=parser.parse_args()
tgtHost=options.tgtHost
tgtPorts=str(options.tgtPort).split(',')
if((tgtHost==None)|(tgtPorts[0]==None)):
print '[-]You must specify a target host and port[s].'
exit(0)
portScan(tgtHost,tgtPorts)
if __name__ == '__main__':
main()