利用nmap进行特定端口扫描

1.使用Python的nmap进行特定的端口扫描,包括各种常用的数据库端口,web端口,一些自定义的端口,使用nmap之前需要确定本机已经安装了nmap包
2.其中ret()函数是获取ip列表
3.最后print出来的是一个json的结果,方便使用zabbix进行监控
4.因为ip较多,需要进行多线程获取结果,时间比较久,建议先把结果写到本地,然后再用zabbix进行自动发现并监控
5.Python语法不够精通,欢迎批评指导

#!/usr/bin/python
#-*-coding:utf-8-*-
import json
import sys
import nmap
import multiprocessing
import commands
import urllib2
import time
reload(sys)
sys.setdefaultencoding(‘utf8‘)

def ret():
    url=commands.getoutput(‘/bin/bash /cron/md5_ops_exist_InZabbix_monitor.sh‘)
    #ip列表
    url_data=urllib2.urlopen(url,timeout=50)
    ipList = json.loads(url_data.readline())
    url_data.close()
    allip=ipList["data"]["all"]
#    opsip = [i.strip(‘u‘) for i in allip]
    return allip

def checkPythonVersionGt():
    #python version great then 2.4?
    pythonVersion = sys.version_info
    if pythonVersion[0] == 2 and pythonVersion[1] > 5:
        return True
    else:
        return False

if checkPythonVersionGt():
    import subprocess
    import json
else:
    try:
        import simplejson
    except ImportError:
        os.system(‘yum -y install python-simplejson ‘)

def resoutput(ipList):
    #output result
    if checkPythonVersionGt():
        printt= (json.dumps(ipList,indent=4,separators=(‘,‘,‘:‘)))
    else:
        try:
            import simplejson

            printt= (simplejson.dumps(ipList,indent=4,separators=(‘,‘,‘:‘)))
        except ImportError:
            printt=  (str(ipList))
    return printt

def scan_defaults_ports(ip,default_ports):
    nm=nmap.PortScanner()
    sd={}
    productname={}
    nm.scan(ip,default_ports)
    alll={}
    po=[]
    for host in nm.all_hosts():
        if nm[host].has_key(‘tcp‘):
            for port in nm[host][‘tcp‘].keys():
                name  = nm[host][‘tcp‘][port][‘name‘]
                state = nm[host][‘tcp‘][port][‘state‘]
                if  state == ‘open‘:
                    po.append(port)
    if len(po)>0:
        po=‘,‘.join(str(s) for s in po)
        sd[host]=po
        return sd
    else:
        return

def default_ports():
    p1="21 22 677 873 80 8080"
    p2=" ".join(map(str,[k for k in range(3306,3321)]))
    p3=" ".join(map(str,[k for k in range(3690,3692)]))
    p4=" ".join(map(str,[k for k in range(6379,6400)]))
    p5=" ".join(map(str,[k for k in range(11200,11201)]))
    p6=" ".join(map(str,[k for k in range(27000,27101)]))
    p7=" ".join(map(str,[k for k in range(20000,20101)]))
    p8=" ".join(map(str,[k for k in range(22000,22101)]))
    default_ports=reduce(lambda x,y: x+‘ ‘+y,[p1,p2,p3,p4,p5,p6,p7,p8]).replace(" ",",")
    return default_ports

if __name__==‘__main__‘:
    pool = multiprocessing.Pool(processes = 3)
    result=[]
    default_ports=default_ports()
    opsip=ret()
    for x in opsip:
        try:
            x=x.encode(‘utf-8‘)
            result.append(pool.apply_async(scan_defaults_ports, (x,default_ports)))
        except Exception as e:
            print e
            pass
    pool.close()
    pool.join()
    ip=[]
    for res in result:
        ip.append(res.get())
    ip=filter(None,ip)
    iplist=[]
    outip={}
    for i in ip:
        k=i.keys()
        v=i.values()
        k=‘,‘.join(str(s) for s in k)
        v=‘,‘.join(str(s) for s in v)
        iplist.append({‘{#NEWSACNPORT}‘:v,‘{#NEWSCANHOSTIP}‘:k})
    outip={‘data‘:iplist}
    outip= resoutput({‘data‘:iplist})
    print outip

原文地址:http://blog.51cto.com/9393764/2177121

时间: 2024-11-09 06:16:37

利用nmap进行特定端口扫描的相关文章

『安全工具』Nmap 强悍的端口扫描工具

作为时下流行的端口扫描工具,Nmap有因其扫描的隐密性有“端口扫描之王”之称 上图是黑客帝国(The Matrix)中崔妮蒂用Nmap等工具入侵发电站的能源管理系统 0x 01 Nmap介绍 Nmap是一款用于网络发现和安全审计的安全工具,常用于端口扫描. 用法: nmap [扫描类型] [参数] 目标IP 1. 扫描类型 -sT TCP 连接扫描,会在目标主机中记录大量的链接请求和错误信息 -sS SYN扫描,只完成三次握手前两次,很少有系统记入日志,默认使用,需要root(admin)权限

python实现利用nmap和爱站扫描开放80端口的IP并进行反向域名解析

#!/usr/bin/python # -*- coding: utf-8 -*- from libnmap.process import NmapProcess from libnmap.parser import NmapParser import requests x=90 while x < 255: print "\033[1;31mstart 118.192.%s.0/24\033[0m" %(str(x)) #调用nmap扫描段内开放80端口的IP mission

Python-通过调用Nmap来进行端口扫描

首先要安装python-nmap库,还要安装配置好nmap 实验机器IP:192.168.220.139 端口开放情况 代码 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import nmap def NmapScan(ip,port): Nmapscan = nmap.PortScanner(nmap_search_path=('nmap',r'C:\Program Files (x86)\Nmap\nmap.exe')) N

Python 第三方模块pythonnmap来实现高效的端口扫描

Python_Clamad 实现高效的端口扫描器pythonnmap Python的第三方模块pythonnmap来实现高效的端口扫描 python-nmap模块的安装方法如下: yum -y install nmap #安装nmap工具 pip install python-nmap #模块源码安装 ## https://pypi.python.org/pypi/python-nmap tar -zxvf python-nmap-0.1.4.tar.gz cd python-nmap-0.1.

Python 脚本学习笔记(五)集中式病毒扫描,端口扫描以及分段数据库操作

Clam AntiVirus是一个免费而且开放源码的防毒软件,软件与病毒库的更新由开源社区免费发布,目前ClamdAV主要为Linux.Uinux系统提供病毒扫描查杀pyClamad是一个python的第三方模块,可让python直接使用ClamAV病毒扫描守护进程clamd来实现一个高效的病毒检测功能. 一.实现集中式的病毒扫描 1.安装clamavp clamd 服务的相关程序包 yum install clamav clamd clamav-update -y chkconfig clam

nmap端口扫描工具使用

(一)Port scan简介 port Scan的方法介绍 port Scan就是一种通过检测对方服务器的开放端口,侦测对方服务器服务的方法.一般可分为主动式和被动式两种. 主动式就是通过向对方服务器的特定端口发送数据包,根据应答来判断,以nmap 为代表. 被动式,不主动发出数据包,而是在网络上长时侦听,分析网上的transaction,来分析,严格的来被动式不应该被称作是端口扫描.以nwatch为代表 (二)优缺点比较  (1)主动式的优点 主动式只要在对方没有把通信阻断的情况下,可以在较短

端口扫描之王——nmap

端口扫描是网络安全工作者的必备的利器,通过对端口的扫描,了解网站中出现的漏洞以及端口的开放情况,对网站安全方面有着不可或缺的贡献,目前在市面上主要的端口扫描工具是X_Scan.SuperScan.nmap,其中在这里主推的是nmap,因为nmap具有以下的这一些优点: 1.多种多样的参数,丰富的脚本库,满足用户的个人定制需求,其中脚本库还提供了很多强大的功能任你选择 2.强大的可移植性,基本上能在所有的主流系统上运行,而且代码是开源的 3.详细的文档说明,和强大的社区团队进行支持,方面新人上手

端口扫描———nmap

nmap教程之nmap命令使用示例(nmap使用方法) 浏览:8268 | 更新:2014-03-29 17:23 Nmap是一款网络扫描和主机检测的非常有用的工具.Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统 Nmap是一款非常强大的实用工具,可用于:检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆

端口扫描工具nmap

nmap 使用介绍 nmap是目前为止最广为使用的国外端口扫描工具之一.我们可以从[url]http://www.insecure.org/[/url]进行下载,可以很容易的安装到Windows和unix操作系统中,包括mac os x(通过configure.make .make install等命令)也可以直接从http://www.insecure.org/下载windows二进制(包括所需要的winpcap)也可以从http://www.nmapwin.org/获得nmap的图形wind