zoukankan      html  css  js  c++  java
  • 渗透利器-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))

      

  • 相关阅读:
    MSDN for 2010的那些麻烦事
    CPtrList操作--插入,删除特定元素,删除全部
    如何绕过ORA00701错误和降低bootstrap对象的高水位
    ORA00600:[1112]内部错误&ROW CACHE ENQUEUE LOCK一例
    CRS5008: Invalid attribute value
    ORA00600[kjpsod1]&ORA44203错误一例
    runInstaller ignoreInternalDriverError
    RMAN CURSOR_SHARING=EXACT脚本
    SQL调优:带函数的谓词导致CBO Cardinality计算误差
    11g Real Application Testing:Database Replay使用方法
  • 原文地址:https://www.cnblogs.com/xz25/p/12914660.html
Copyright © 2011-2022 走看看