首页 > 编程语言 >基于python语言命令行模式的nmap扫描- python-nmap

基于python语言命令行模式的nmap扫描- python-nmap

时间:2024-04-21 22:56:07浏览次数:47  
标签:blue python Fore nmap 命令行 print color

使用 python 命令行模式进行 nmap 扫描,简化流程

  1. 首先安装 python 环境
    https://www.python.org/downloads/
  2. 安装 nmap,python-nmap 需要借助 nmap 运行
    https://nmap.org/download
  3. 写 python-nmap 脚本
    https://github.com/home-assistant-libs/python-nmap
    代码:
点击查看代码
    # /usr/bin/env python3
    
    # _\*_ coding:utf-8 _\*_
    
    # auther: saucerman
    
    # project: https://github.com/saucer-man/penetration-script
    
    """
    基于 python-nmap 的端口扫描器
    pip install python-nmap
    """
    
    import sys
    import time
    from colorama import init, Fore, Back, Style
    import getopt
    
    # 颜色定义
    
    init(autoreset=True)
    
    class Colored(object):
    def red(self, s):
    return Fore.RED + s + Fore.RESET
    
        def blue(self, s):
            return Fore.BLUE + s + Fore.RESET
    
        def yellow(self, s):
            return Fore.YELLOW + s + Fore.RESET
    
    color = Colored()
    
    try:
    import nmap
    except:
    print("FATAL: Module nmap missing (python-nmap)")
    sys.exit(1)
    
    # 使用说明
    
    def usage():
    print(color.blue('Usage: port scanner'))
    print(color.blue('\t-h/--host:\tpoint the target to scan'))
    print(color.blue('\t-p/--port:\tpoint the port to scan(not nessesary)'))
    print(color.blue('Examples:'))
    print(color.blue('\tpython port_scanner.py -h 10.10.10.1'))
    print(color.blue('\tpython port_scanner.py -h 10.10.10.1 -p 80,443,8080'))
    print(color.blue('\tpython port_scanner.py -h 10.10.10.1 -p 1-1024'))
    print(color.blue('\nSEE THE MAN PAGE (https://github.com/saucer-man/saucer-frame) FOR MORE OPTIONS AND EXAMPLES'))
    sys.exit(0)
    
    # 扫描
    
    def scanner(host, ports):
    nm = nmap.PortScanner()
    try:
    print('Scanner report for %s\n' % host)
    if len(ports) == 0:
    result = nm.scan(host)
    else:
    result = nm.scan(host, ports)
    if result['nmap']['scanstats']['uphosts'] == '0':
    print(color.red('Host seems down'))
    else:
    print('Host is up')
    print("{:<7}\t{:<7}\t{:<7}\t{:<7}".format('PORT', 'STATE', 'SERVICE', 'VERSION'))
    for k, v in result['scan'][host]['tcp'].items():
    if v['state'] == 'open':
    print(color.yellow("{:<7}\t{:<7}\t{:<7}\t{:<7}".format(str(k), v['state'], v['name'],
    v['product'] + v['version'])))
    else:
    print(color.yellow("{:<7}\t{:<7}".format(str(k), v['state'])))
    except Exception as e:
    print(color.red("unhandled Option"))
    usage()
    
    def main():
    start = time.time()
    
        # 解析命令行
        if not len(sys.argv[1:]):
            usage()
        try:
            opts, args = getopt.getopt(sys.argv[1:], "h:p:",
                                       ["host=", "port="])
        except:
            print(color.red("unhandled Option"))
            usage()
    
        ports = ''
        for o, a in opts:
            if o == "-h" or o == "--host":
                host = a
            elif o == "-p" or o == "--port":
                ports = a
    
        print("Starting port scanner...")
        scanner(host, ports)
    
        end = time.time()
        print('\n\nScanner down with %0.6f seconds.' % (end - start))
    
    if "**main**" == **name**:
    main()
  1. 运行结果

标签:blue,python,Fore,nmap,命令行,print,color
From: https://www.cnblogs.com/graceangel/p/18149685

相关文章

  • windows命令行命令
    windows命令行命令一般在cmd或bat脚本中使用常见命令dir:显示当前目录中的文件和子目录列表。cd:更改当前目录。mkdir:创建一个新目录。del:删除文件。copy:复制文件。move:移动文件或更改文件名。ren:重命名文件。type:显示文本文件的内容。ping:测试与另一......
  • ubuntu 管理 python 版本
    2024-04-21   https://www.cnblogs.com/NJ-Leon/项目开发过程中,需要在python2和python3版本之间进行切换,我们使用virtualenvwrapper进行管理。一、解决python2.7安装过程中依赖问题WSL2+Ubuntu22.04LTS,默认已经安装python3.81.安装 aptitudesudo......
  • python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Python自动化办公,问题如下:python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集。二、实现过程这里【隔壁......
  • Python字节转换为字符串 - 如何将字符串转换为字节,以及反向转换
    你可以在Python中使用字节来表示二进制形式的数据。在本文中,你将学习如何将字节转换为字符串,以及反之亦然。在我们看转换之前,让我们谈谈Python中的字节是如何工作的。如果你已经理解了这一点,或者只是对转换感兴趣,你可以跳到下一节。(本文视频讲解:java567.com)Python中的字节是如......
  • python从大小上裁切视频,批量对指定文件夹中的视频进行裁剪
    代码 importsubprocessimportosdefget_all_mp4_files(directory):"""获取指定文件夹下所有的MP4文件"""mp4_files=[]#遍历指定目录及其子目录中的文件forroot,dirs,filesinos.walk(directory):forfileinfiles:#......
  • 命令行调试logrotate
    logrotate配置文件一般存放在/etc/logrotate.d。场景1:不存在/var/lib/logrotate/status文件说明没有真正执行过logrotate。/var/lib/logrotate/status会记录上一次logrotate时间,记录的时间可能没有真正执行过。场景2:logrotate-d配置文件logrotate-v配置文件:执行logrotate......
  • 82.8K Star 功能强大的语言处理的PYTHON库
    简介LangChain是一个框架,用于开发由大型语言模型(LLMs)提供支持的应用程序。langchain库是功能强大的语言处理工具,可以用于文本处理、语言分析等多种任务。本文将介绍该库的安装、特性、基本功能、高级功能、实际应用场景,并进行总结。特性多语言支持:支持多种语言的处理和分......
  • Python库、包、模块
    一、什么是库、包、模块无论是库、包、模块,其核心都在于封装了一系列的功能。1、库library,这个概念并非Python里的概念,是从C语言过来的。库这个概念其实就是一堆代码一起完成一个或多个任务。非常类似函数,但是是以文件组织在一起。2、模块module,这个概念就是Python里的概念,一个......
  • Python 潮流周刊#47:当你的老师希望你去做开源
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。以下是周刊全文(限免,点击链接阅读)限时免费,点击阅读以下是本期摘要(正文全文见......
  • python从时间上裁切视频(定义一个开始截取的时间,最后截取时间是总时长+1秒)
    代码:importsubprocessfromdatetimeimporttimedeltadefparse_time(time_str):"""将时间字符串解析为秒"""#如果输入是浮点数,直接返回这个数值ifisinstance(time_str,float):returntime_str#将时间字符串分割为小时、分钟和秒hour......