python使用nmap端口扫描

#coding=UTF-8
#!/usr/bin/env python
import nmap
import optparse
def nmapScan(tgtHost,tgtPort):
    '''
	#创建nmap扫描器,初始化PortScanner模块
    #class PortScanner()
    # __init__(self, nmap_search_path=('nmap', '/usr/bin/nmap', '/usr/local/bin/nmap', '/sw/bin/nmap', '/opt/local/bin/nmap'))
    #初始化时先检测系统中是否存在Nmap版本,根据nmap_search_path中字符串进行搜索,无返回值。
    '''
    nmScan = nmap.PortScanner() #创建一个PortScanner()类对象

    '''
    #扫描指定主机
    #scan(self, hosts='127.0.0.1', ports=None, arguments='-sV', sudo=False)
    #hosts 主机
    #ports 端口
    #arguments 扫描参数
    #sudo 
    #返回值为目标扫描结果列表
    '''
    nmScan.scan(tgtHost,tgtPort)  #调用PortScanner类的scan()函数,将目标和端口作为参数输入并进行nmap扫描
    
    #输出扫描结果中的状态信息
    state=nmScan[tgtHost]['tcp'][int(tgtPort)]['state']
    print ("[*] " + tgtHost + " tcp/"+tgtPort +" "+state)

def main():
    parser = optparse.OptionParser('usage %prog ' + '-H <target host> -p <target port>')
    parser.add_option('-H', dest='tgtHost', type='string', help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='string', help='specify target port[s] separated by comma')

    (options, args) = parser.parse_args()

    tgtHost = options.tgtHost



######这段代码支持以逗号分割及以-分割的端口范围

    tgtPorts = []
    tgtPorts_cache = str(options.tgtPort).split(',')
    i = int(len(tgtPorts_cache))
    for m in range( 0,i ):
        tgtPorts_split = str(tgtPorts_cache[m]).split('-')
        if(len(tgtPorts_split) < 2):
            tgtPorts.extend(tgtPorts_split)
            #print(tgtPorts)
        else:
            for n in range(int(tgtPorts_split[0]),int(tgtPorts_split[1])+1):
                tgtPorts.append(str(n))
                #print(tgtPorts)

######以下列表是你需要扫描的端口列表

    #tgtPorts = str(options.tgtPort).split(',')    
    if (tgtHost == None) | (tgtPorts[0] == None):
        print (parser.usage)
        exit(0)
    for tgtPort in tgtPorts:
        nmapScan(tgtHost, tgtPort)


if __name__ == '__main__':
    main()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值