应用:扫描目标主机开放的tcp端口
执行:命令行输入:python xxx.py -H 主机ip
执行程序后会扫描主机0-1023端口是否开放
例如运行 python xxx.py -H www.baidu.com
就会扫描百度的0-1023端口
代码:
import optparse
import socket
from socket import *
def connScan(tgtHost , tgtPort) :
#发送请求和判断接收
try :
connSkt = socket(AF_INET , SOCK_STREAM)
connSkt.connect((tgtHost,tgtPort))
connSkt.send('python')
results = connSkt.recv(100)
print '%d/tcp open'% tgtPort
print str(results)
connSkt.close()
except :
print '%d/tcp closed'% tgtPort
def portScan(tgtHost , tgtPorts) :
#传入主机和端口数据,调用connScan扫描端口
try :
tgtIP = gethostbyname(tgtHost)
except :
print 'Cannot resolve "%s" : Unkonwn 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%prog ' +\'-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] separated by comma')
(options,args)=parser.parse_args()
tgtHost = options.tgtHost
#tgtPorts = str(options.tgtPort).split(',')
#以上为命令行控制 输入格式 python XXX.py -H 主机ip #-p 端口数 已注释掉 改为0-1023端口扫描
tgtPorts = []
for index in range(0,1023) :
tgtPorts.append(str(index))
if (tgtHost == None) | (tgtPorts[0] == None) :
print 'You must specfy a target host and port[s] .'
exit(0)
portScan(tgtHost , tgtPorts)
if __name__ == '__main__' :
main()