设为首页 加入收藏

TOP

Python编写类似nmap的扫描工具(六)
2017-10-10 21:05:51 】 浏览:2476
Tags:Python 编写 类似 nmap 扫描工具
ing and not args.scan:
        print '[-]必须通过-p/-s选项开启一种扫描'
        print '\n'
        parser.print_help()
        exit(1)
    elif not args.target:
        print '[-]必须通过--target选项指定扫描的对象'
        print '\n'
        parser.print_help()
        exit(1)
    if args.ping:
        if not args.ARP and not args.ICMP and not args.TCP and not args.UDP:
            args.ICMP = True  #若没有指定任何ping扫描方式,则默认选择ICMP扫描
            print '[+]没有指定任何ping扫描方式,默认选择ICMP扫描'
    if args.scan:
        if not args.SYN and not args.ACK and not args.FIN and not args.UPORT:
            args.SYN = True  #若没有指定任何端口扫描方式,则默认选择SYN扫描
            print '[+]没有指定任何端口扫描方式,默认选择SYN扫描'
        if not args.port:
            args.port = '1-1024'    #若没有指定任何扫描端口,则默认扫描1-1024
            print '[+]没有指定任何扫描端口,默认扫描1-1024'


    return args


def parse_target(args):
    '''
    @说明:用于解析如'192.168.1.1,192.168.1.x,...或192.168.1.1-254'格式的IP为单独的IP,用于解析如'21,80,...或21-80'格式的端口为单独的端口
    @param: args,一个namespace对象
    @return: (ip_list,port_list)
    '''
    pattern1 = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$'
    pattern2 = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}$'
    pattern3 = r'\d{1,5}$'
    pattern4 = r'\d{1,5}-\d{1,5}$'
    ip_list,port_list = None,None
    if args.target:
        if re.search(pattern1,args.target):
            ip_list = args.target.split(',')
        elif re.match(pattern2,args.target):
            _split = args.target.split('-')
            first_ip = _split[0]
            ip_split = first_ip.split('.')
            ipdot4 = range(int(ip_split[3]), int(_split[1]) + 1)
            ip_list = [ip_split[0] + '.' + ip_split[1] + '.' + ip_split[2] + '.' + str(p) for p in ipdot4]
        else:
            print '[-]target格式输入有误,请查看帮助!'
            exit(1)
    if args.port:
        if re.match(pattern4,args.port):
            _split = args.port.split('-')
            port_list = range(int(_split[0]),int(_split[1])+1)
        elif re.search(pattern3,args.port):
            port_list = args.port.split(',')
        else:
            print '[-]port格式输入有误,请查看帮助!'
            exit(1)
    return ip_list,port_list



def main():
    '''
    @说明:扫描的主程序,首先根据条件创建Ping扫描或端口扫描对象,然后调用相关的扫描方法进行扫描。
    '''
    args = parse_opt()
    if args.ping: #是否启动Ping扫描
    &n

首页 上一页 3 4 5 6 7 8 9 下一页 尾页 6/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python3 基本数据类型 下一篇Python3基本语法简述

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目