渗透利器-kali工具 (第四章7) 第三方库python-nmap学习

本文内容:

  • Python-nmap简介
  • Python-nmap安装
  • Python-nmap使用
  • Python下使用nmap模块进行扫描

1,Python-nmap:

  Python-nmap是Python的一个模块库,使用这个模块可以让Python很方面的操作nmap来工作。

  可以帮助管理员完成自动化扫描任务和生成报告的工具,支持nmap脚本输出。

  Python-nmap模块有两个常用类:

    1.PortScanner()类,实现一个nmap工具的端口扫描功能封装。

    2.PortScannerHostDict()类,实现存储于访问主机的扫描结果。

2.Python-nmap的安装:

  1.Windows安装Python-nmap模块:

    1.pip install python-nmap  //-i https://pypi.tuna.tsinghua.edu.cn/simple

    2.官网下载:https://pypi.org/project/python-nmap/ 

  2.Linux安装Python-nmap模块:
    1.wget http://xael.org/pages/python-nmap-0.6.1.tar.gz

    2.tar -zxvf ptyhon-nmap-0.6.1

    3.cd python-nmap-0.6.1

    4.python setup.py install

    或者同样使用pip安装。

3.Python-nmap的使用:

  1.PortScanner()类:可用于实现对指定主机进行端口扫描。

    1.scan(host、post、args)方法:以指定方式扫描指定主机或网段的指定端口。

      参数:

        host:要扫描的主机或网段,可以是一个单独。

        ip:127.0.0.1-10:可以小范围网段,也可以是大范围网段。

        port:可选参数,要扫描的端口,多个端口用逗号隔开,如20,21

        args:可选参数,要扫描的方式。

        scan[ip地址、端口、指令]

      使用实例:

        import nmap
        nm = nmap.PortScanner()
        nm.scan('192.168.10.10-100', '22,21','-sV')

    2.command_line()方法:返回扫描方法映射到具体的nmap命令行。

      使用实例:

          import nmap
          nm = nmap.PortScanner()
          nm.scan('192.168.10.10-100', '22,21','-sV’) 
          a=nm.command_line()
          print(a)
       运行结果:
          nmap -oX - -p 20,21 -sV 192.168.125.134

    3.scaninfo()方法:返回nmap扫描信息,格式为字典类型:

      使用实例:

            import nmap
            nm = nmap.PortScanner()
            nm.scan('192.168.10.10-100', '22,21','-sV’)
            a=nm.scaninfo()
            print(a)
         运行结果:
            {'tcp': {'services': '20-21', 'method': 'syn'}}

    4.all_host()方法:返回nmap扫描的主机清单,格式为列表类型:  

      使用实例:
        import nmap
             nm = nmap.PortScanner()
             nm.scan('192.168.10.10-12', '22,21','-sV’)
             a = nm.all_hosts()
             print(a)
         运行结果:
             ['192.168.10.10','192.168.10.11','192.168.10.12']

    5.查看扫描主机详细信息:nm['127.0.0.1']     

        使用实例: 
                import nmap
                nm=nmap.PortScanner()
                nm.scan('192.168.125.134','445')
                a=nm['192.168.125.134']    #返回主机的详细信息
                print(a)
             运行结果:
                {'status': {'state': 'up', 'reason': 'arp-response'}, 
                'hostnames': [{'type': 'PTR', 'name': 'bogon'}], 
                'vendor': {'00:0C:29:F6:2B:F0': 'VMware'}, 
                'addresses': {'mac': '00:0C:29:F6:2B:F0', 'ipv4': '192.168.125.134'}, 
                'tcp': {445: {'product': 'Microsoft Windows 7 - 10 microsoft-ds', 'state': 'open', 'version': '', 'name': 'microsoft-ds', 'conf': '10', 'extrainfo': 'workgroup: WORKGROUP', 'reason': 'syn-ack', 'cpe': 'cpe:/o:microsoft:windows'}}}

    6.查看主机扫描的端口包含的协议[Tcp/Udp]:namp['127.0.0.1'].all_protocols() 返回列表型数据

      使用实例:

                import nmap
                nm=nmap.PortScanner()
                nm.scan('192.168.125.134','445')
                a=nm['192.168.125.134'].all_protocols()    #返回主机扫描的端口包含的协议
                print(a)
            运行结果:
                ['tcp']

    7.查看改端口是否提供了TCP协议:nmap['127.0.0.1'].has_tcp[445],返回布尔类型的数据。

      使用实例:

                import nmap
                nm=nmap.PortScanner()
                nm.scan('192.168.125.134','445')
                a=nm['192.168.125.134'].has_tcp(445)        #判断该端口是否提供TCP协议
                print(a)
            运行结果:
                True

    8.查看该协议下端口的状态:nmap['127.0.0.1'].['tcp'][445][state]

      使用实例:

                import nmap
                nm=nmap.PortScanner()
                nm.scan('192.168.125.134','445')
                a=nm['192.168.125.134']['tcp'][445]['state']
                print(a)
            运行结果:    
                open

3,Python下使用nmap模块进行扫描:

  代码实现:

    import nmap
    tghost = '192.168.1.7'
    tgports = (445,3389,443)
    nmscan = nmap.PortScanner()
    for tgport in tgports:
        nmscan.scan(tghost,str(tgport))
        state = nmscan[tghost]['tcp'][int(tgport)]['state']
        print('[%s]state:%s'%(tgport,state))

  

原文地址:https://www.cnblogs.com/xz25/p/12914660.html