—— 《Python绝技》笔记系列
扫描器功能:输入主机和端口,获取端口的状态和banner信息。
核心技术:使用python 的socket模块,建立TCP全连接扫描。
实现思路:
1.输入一个IP和逗号分隔的端口列表,并予以扫描。
2.对列表中的每个端口,连接目标IP和目标端口。
3.确定端口运行的服务,通过发送垃圾数据并读取具体应用返回的banner。
代码实现:
选项分析器,使用python optparse模块,用来解析命令行参数。
import optparse #调用optparse.OptionParser,生成一个参数解析器类的实例:parser parser=optparse.OptionParser('usage%prog '+'-H <target host> -p <target port>') #add_option()方法,用来添加参数 parser.add_option('-H',dest='tgthost',type='string',help='specify target host') parser.add_option('-p',dest='tgtport',type='int',help='specify target port') (options,args)=parser.parse_args() tgthost=options.tgthost tgtport=options.tgtport if (tgthost == None) | (tgtport == None): print parser.usage exit(0)
TCP端口扫描由两个函数来实现,connScan和portScan。
connScan函数接收两个参数:tgthost和tgtport,它会去尝试建立与目标主机和端口的连接。