返回顶部
首页 > 资讯 > 后端开发 > Python >运维python进行(一) nmap扫描
  • 519
分享到

运维python进行(一) nmap扫描

运维pythonnmap 2023-01-31 02:01:48 519人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

介绍python-nmap是基于系统nmap命令的一个端口扫描工具,使用简单方便。最近为了加强服务器安全性和监管,需要每天把公司服务器开放端口扫描记录,一旦出现增加减少能发现。之前使用shell写过一个https://GitHub.com/

介绍

python-nmap是基于系统nmap命令的一个端口扫描工具,使用简单方便。

最近为了加强服务器安全性和监管,需要每天把公司服务器开放端口扫描记录,一旦出现增加减少能发现。

之前使用shell写过一个https://GitHub.com/bashhu/monitor-shell/blob/master/Python-script/scan_port.sh


最近打算完善一下我们的运维平台,重新编写了脚本,方便平台的调用

Https://github.com/bashhu/monitor-shell/blob/master/python-script/scan_port.py

                                 
In [17]: import nmap
把nmap模块的端口扫描方法进行实例化
In [18]: s=nmap.PortScanner()
使用scan('192.168.0.0/16',port='0-65536','sV')方法,里面分别是网段,端口范围,nmap的参数
In [19]: result = s.scan('192.168.199.211', '20-443','')
这里result是执行的输出
In [20]: print result
{'nmap': {'scanstats': {'uphosts': '1', 'timestr': 'Sat Dec 17 16:24:11 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '0.11'}, 'scaninfo': {'tcp': {'services': '20-443', 'method': 'syn'}}, 'command_line': 'nmap -oX - -p 20-443 192.168.199.211'}, 'scan': {'192.168.199.211': {'status': {'state': 'up', 'reason': 'localhost-response'}, 'hostnames': [{'type': 'PTR', 'name': 'salt'}], 'vendor': {}, 'addresses': {'ipv4': '192.168.199.211'}, 'tcp': {80: {'product': '', 'state': 'open', 'version': '', 'name': 'http', 'conf': '3', 'extrainfo': '', 'reason': 'syn-ack', 'cpe': ''}, 443: {'product': '', 'state': 'open', 'version': '', 'name': 'https', 'conf': '3', 'extrainfo': '', 'reason': 'syn-ack', 'cpe': ''}, 22: {'product': '', 'state': 'open', 'version': '', 'name': 'ssh', 'conf': '3', 'extrainfo': '', 'reason': 'syn-ack', 'cpe': ''}}}}}
初始化的实例如下方法
In [21]: s.
            s.all_hosts             s.csv                   s.listscan              s.scaninfo              
            s.analyse_nmap_xml_scan s.get_nmap_last_output  s.nmap_version          s.scanstats             
            s.command_line          s.has_host              s.scan 
            
扫描的所有主机
In [21]: s.all_hosts()
Out[21]: ['192.168.199.211']  
主机下的信息列表   
In [23]: s['192.168.199.211'].keys()
Out[23]: ['status', 'hostnames', 'vendor', 'addresses', 'tcp']  
主机下的tcp端口列表   
In [26]: s['192.168.199.211']['tcp'].keys()
Out[26]: [80, 443, 22]
查看22端口的详细信息
In [30]: s['192.168.199.211']['tcp'][22]
Out[30]: 
{'conf': '3',
 'cpe': '',
 'extrainfo': '',
 'name': 'ssh',
 'product': '',
 'reason': 'syn-ack',
 'state': 'open',
 'version': ''}

通过上面大家可以看到 s=nmap.PortScanner()实例化以后,会把信息存储到“s”里面,“s”可以像从JSON里面取数据一样超级方便。


下面是脚本原理,欢迎大家拍砖,提更好意见:

  1. 依赖python-nmap模块扫扫面网段或者指定ip端口

  2. 对比Redis内昨日此ip的端口集合,获取相互差集记录到文本

  3. 删除昨日的端口扫面记录,把今日信息ip为KEY 端口为集合记录到redis



#!/bin/bash
'''
	author: baishaohua
	date: 20161215
'''
host='192.168.1.224'
port='6379'
import nmap
import redis
import time
ctime = time.strftime('%Y_%m_%d')
r = redis.StrictRedis(host,port=port,db=12)

def get_info(ip):
        '''获取集合,并把集合元素转换为整数'''
	a=[]
	for i in r.smembers(ip):
		a.append(int(i))
	return a
	
def set_info(ip, port_list):
	r.delete(ip)#删除昨日的端口记录,下面遍历写入今日的端口
	try:
		for port in port_list:
			r.sadd(ip, port)
	except:
		print "set redis err"
		
def r_log(msg):
	f_path = "/tmp/report_%s.txt" % ctime
	f = open(f_path, 'a+')
	f.write(msg)
	f.close()

def scan_port(my_ip,port_range):
	'''
	tow parameter: ip,port. will return a port list 
	'''
	s = nmap.PortScanner()
	result = s.scan(my_ip,port_range,'')
	return s[my_ip]['tcp'].keys()

def scan_ips(ip_range,port_range):
        '''
        tow parameter: ip,port. will return a port list 
        '''
        s = nmap.PortScanner()
        result = s.scan(ip_range,port_range,'')
	report_key = "report_%s" % ctime
	a  = {}
	b  = {}
	for i in s.all_hosts():
		a[i] = set(get_info(i))
		b[i] = set(s[i]['tcp'].keys())
		if r.exists(i):
			less_port = a[i].difference(b[i])
			add_port = b[i].difference(a[i])
			if len(add_port)>0 and len(less_port)>0:
				msg = "%s port %s new open \t   %s have close\n" % (i, add_port, less_port)
				print msg
				r_log(msg)
			elif len(add_port)>0:
				msg = "%s port %s new open \n" % (i, add_port)
				print msg
				r_log(msg)
			elif len(less_port)>0:
				msg = "%s port %s close \n" % (i, less_port)
				print msg
				r_log(msg)
			else:
				print "%s port no change: %s , %s" % (i, a[i], b[i])
			set_info(i, s[i]['tcp'].keys())
		else:
			msg = "new host: %s port %s  open\n" % (i, s[i]['tcp'].keys())
			print msg
			r_log(msg)
			set_info(i,s[i]['tcp'].keys())

def __main__():
    scan_ips('192.168.1.211/28','20-8080')


--结束END--

本文标题: 运维python进行(一) nmap扫描

本文链接: https://lsjlt.com/news/187034.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 运维python进行(一) nmap扫描
    介绍python-nmap是基于系统nmap命令的一个端口扫描工具,使用简单方便。最近为了加强服务器安全性和监管,需要每天把公司服务器开放端口扫描记录,一旦出现增加减少能发现。之前使用shell写过一个https://github.com/...
    99+
    2023-01-31
    运维 python nmap
  • Python编写nmap扫描工具
    NMAP是一款开源的网络探测和安全审核的工具,他能够快速的扫描出某个服务器对外暴露的端口信息。是在安全测试领域很常见的一个工具。 今天我们用python的模拟实现一个简单版本的端口扫描工具,主要使用到socket模...
    99+
    2022-06-02
    Python nmap扫描工具 Python nmap
  • python使用nmap端口扫描
    第一版:只支持以逗号分隔的端口,不支持端口范围   Firstly:      sudo apt-get install nmapSecondly:pip install python-nmapThirdly:copy the code b...
    99+
    2023-01-31
    端口扫描 python nmap
  • 如何用Python编写nmap扫描工具
    这篇文章主要介绍“如何用Python编写nmap扫描工具”,在日常操作中,相信很多人在如何用Python编写nmap扫描工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python编写nmap扫描工具...
    99+
    2023-06-20
  • 调用python-nmap实现扫描局域网
    使用环境:Raspberry 3b+ +netifaces+python-nmap+nmap 调用netifaces自动获取ip地址: def get_gateways(): return netifaces.gateways(...
    99+
    2023-01-30
    局域网 python nmap
  • Python 自动化运维 nmap
      1.对端口扫描,查看端口状态  2.实例import sys import nmap scan_row = []     input_data = raw_input("PLEASE INPUT: ") scan_row = inpu...
    99+
    2023-01-31
    Python nmap
  • 巧用python和libnmapd,提取Nmap扫描结果
    每当我进行内网渗透面对大量主机和服务时,我总是习惯使用自动化的方式从 nmap 扫描结果中提取信息。这样有利于自动化检测不同类型的服务,例如对 web 服务进行路径爆破,测试 SSL/TLS 服务使用的密钥...
    99+
    2022-06-04
    巧用 python Nmap
  • 利用Python脚本写端口扫描器socket,python-nmap
    目录Socket模块编写扫描给定主机是否开放了指定的端口python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放前言: 一个用python写的简单的端口扫描...
    99+
    2024-04-02
  • linux漏洞扫描怎么进行
    Linux漏洞扫描可以通过以下几个步骤进行:1. 收集系统信息:首先需要收集目标系统的基本信息,包括操作系统版本、内核版本、已安装的...
    99+
    2023-08-11
    linux
  • 二维码扫描器:Bash 命令行版
    二维码扫描器是一种常见的工具,用于快速扫描二维码并解码其中的信息。现在,我们可以在 Bash 命令行中使用二维码扫描器来扫描和解码二维码。在本文中,我们将介绍如何使用 Bash 命令行版的二维码扫描器。 安装和配置 Bash 命令行版的二...
    99+
    2023-08-27
    二维码 bash npm
  • 怎么使用Python-nmap网络扫描和嗅探工具包
    这篇文章将为大家详细讲解有关怎么使用Python-nmap网络扫描和嗅探工具包,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。nmap概念NMap,也称为网络映射器,最初是Linux下的网络扫...
    99+
    2023-06-02
  • 通过python对本局域网进行ARP扫描
    #!/usr/local/bin/python3 """ 对本局域网进行ARP扫描 ARP (Address Resolution Protocol,ARP); 以太网MAC地址识别(如下): 主机在整个局域网广播ARP请求消息,该ARP...
    99+
    2023-01-31
    局域网 python ARP
  • 运维python进行(三) 用pytho
      zabbix是一款非常主流监控软件,以简单易用为人称道。zabbix拥有完善的api方便大家通过第三方调用,所以今天介绍一下如何利用python完成对zabbix api调用。   zabbix api主要通过http协议进行通讯,这里...
    99+
    2023-01-31
    运维 python pytho
  • 使用awvs进行web安全扫描
    1、安装 docker pull secfa/docker-awvsdocker run -it -d -name awvs -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs...
    99+
    2023-08-30
    web安全 安全
  • MySQL 使用索引扫描进行排序
    目录安装sakila索引扫描排序表结构可以使用索引扫描来做排序的情况补足前导列order by 中只包含一种排序无法使用索引扫描的情况查询条件中包含不同排序方向查询条件中引用不在索引中的列无法组合最左前缀时第一列是查...
    99+
    2022-05-27
    MySQL 索引扫描 MySQL 索引排序
  • Python项目实战:使用多线程进行TCP端口扫描
    前言今天为大家一个利用Python扫描开放主机的TCP端口,首先你要查看其中的开放的端口,创建一个TCP全连接扫描器,一般使用socket来创建连接器的,测试当前主机和端口是否开放,直接使用socket连接导入第三方库...
    99+
    2023-06-02
  • Windows11上Epson扫描仪无法运行怎么修复
    本篇内容介绍了“Windows11上Epson扫描仪无法运行怎么修复”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-04-29
    windows11
  • 怎么进行mysql索引覆盖扫描优化
    本篇文章为大家展示了怎么进行mysql索引覆盖扫描优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。覆盖扫描即直接在索引中扫描出结果返回给客户端,不需要根据索引再去...
    99+
    2024-04-02
  • Python调用PC摄像头实现扫描二维码
    目录简介源代码源代码说明效果如下所示简介 使用PC摄像机扫描二维码可以有很多应用场景,例如: 支付宝、微信支付等移动支付方式需要使用二维码进行支付,PC摄像机可以扫描这些支付二维码,...
    99+
    2023-05-19
    Python调用摄像头扫描二维码 Python调用摄像头 Python 扫描二维码
  • 利用lynis如何进行linux漏洞扫描详解
    前言 lynis 是一款运行在 Unix/linux 平台上的基于主机的、开源的安全审计软件。Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁。这个工具覆盖可疑文件监测、漏洞、恶意程序扫描、配置...
    99+
    2022-06-04
    linux lynis linux漏洞扫描 linux 漏洞扫描工具
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作