博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 python-nmap 进行端口扫描
阅读量:5990 次
发布时间:2019-06-20

本文共 3227 字,大约阅读时间需要 10 分钟。

  1. 利用 python-nmap模块进行端口扫描,简单的实现方式

  2. 实现了三种输入方式

    1)单个端口扫描,例如 python scanport.py -H host -P port
    2)多个端口扫描,例如 python scanport.py -H host -P port1,port2,.....
    3)连续端口扫描,例如 python scanport.py -H host -P start_port-end_port

clipboard.png

#coding:utf-8import nmapimport optparseimport sysclass INFO:    HEADER = '\033[95m'    OKBLUE = '\033[94m'    OKGREEN = '\033[92m'    WARNING = '\033[93m'    ARNING = '\033[93m'    FAIL = '\033[91m'    ENDC = '\033[0m'    BOLD = '\033[1m'    UNDERLINE = '\033[4m'def scanport(host, port):    nm =nmap.PortScanner()    try:        result = nm.scan(host,port)        state = result['scan'][host]['tcp'][int(port)]['state']# 多层字典嵌套取值        if state =='open':            print INFO.OKBLUE+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC        else:            print INFO.WARNING+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC    except Exception,e:        raise eif __name__ == '__main__':    parser = optparse.OptionParser("usage %prog -H 
-p
or -p
-
") parser.add_option('-H', dest='Host', type='string', help='specify target host') parser.add_option('-P', dest='Port', type='string', help='specify target port[s] separated by "-"'or ",") (options, args) = parser.parse_args() if options.Host ==None or options.Port==None: print parser.usage sys.exit() host = options.Host ports = options.Port print host,ports #如果是连续的端口 if '-' in ports: ports_list = ports.split('-') for p in range(int(ports_list[0]),int(ports_list[1])+1): scanport(host, str(p)) #其他的情况 else: ports_list = ports.split(',') for p in ports_list: scanport(host, p)

上面的代码有点复杂,改良之后的代码如下:

优化结构

import nmap,argparse, sysclass INFO:    HEADER = '\033[95m'    OKBLUE = '\033[94m'    OKGREEN = '\033[92m'    WARNING = '\033[93m'    ARNING = '\033[93m'    FAIL = '\033[91m'    ENDC = '\033[0m'    BOLD = '\033[1m'    UNDERLINE = '\033[4m'    def scan_port(host, port):    nm = nmap.PortScanner()    try:        result= nm.scan(host,port)        print result        state = result['scan'][host]['tcp'][int(port)]['state']        if state == 'open':            print INFO.OKBLUE+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDC        else:            print INFO.WARNING + '[*] ' + host + ' tcp/' + port + " " + state + INFO.ENDC    except Exception,e:        raise edef get_args():    parger = argparse.ArgumentParser(description='port scan script')    parger.add_argument('-H', '--host', help='specify target host')    parger.add_argument('-P', '--port', help='specify target port')    args = parger.parse_args()    print args    if args.host == None:        parger.error('host is required')        sys.exit()    if args.port == None:        parger.error('host is required')        sys.exit()    else:        return args        def main():    args = get_args()    if '-' in args.port:        ports_list = args.port.split('-')        for p in range(int(ports_list[0]),int(ports_list[1])+1):            scan_port(args.host, str(p))    else:        ports_list = args.port.split(',')        for p in ports_list:            scan_port(args.host, p)      if __name__ == '__main__':    main()

转载地址:http://rvnlx.baihongyu.com/

你可能感兴趣的文章
一次 Java 内存泄漏排查过程,涨姿势
查看>>
WordPress网站漏洞利用及漏洞修复解决方案
查看>>
Redux入门
查看>>
alv被display后随数据的变化随时刷新
查看>>
TUN-sosi.sql
查看>>
通过WebUI查看Structured Streaming作业统计信息
查看>>
假如一瞬间让所有人拥有世界上所有的知识 | 20181116奇葩说犀利言句摘录
查看>>
Spring Cloud服务调用整合
查看>>
经纬中国张颖建议创业者:把每周50%时间花在融资上
查看>>
SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的
查看>>
potree 3D点云初探遇到的各种坑
查看>>
TIOBE 2 月排行榜:时隔 3 年,Groovy 重进 TOP 20
查看>>
jfinal拦截器Interceptor解析
查看>>
WPF Interaction框架简介(一)——Behavior
查看>>
Apache Wicket 8.4.0 发布,Java Web 开发框架
查看>>
Phoenix=HBase+SQL 让HBase插上了翅膀
查看>>
数据结构(四):平衡二叉树(AVL树)
查看>>
一文了解自然语言处理神经史(下)
查看>>
sql定时备份
查看>>
技术干货|深入理解flannel
查看>>