python端口扫描系统实现方法


Posted in Python onNovember 19, 2014

本文实例讲述了python端口扫描系统实现方法。分享给大家供大家参考。具体实现方法如下:

该程序的主要功能如下:

1. 从自有API接口获取所有的外网IP段;
2. 用Nmap 遍历扫描所有的IP段,-oX 生成XML的扫描报告;
3. 用xml.etree.ElementTree模块方法读取XML文件,将ip,开放端口,对应服务等写入Mysql数据库。
功能很简单,没有满足老大高大上的需求,所以这个小项目就这么英勇的挂掉了!~~~完全都还没考虑程序异常终止,扫描服务器异常歇菜的情况。
贴上代码:

#coding:utf-8 

import sys,os,time,subprocess 

import MySQLdb 

import re,urllib2 

import ConfigParser 

from IPy import IP 

import xml.etree.ElementTree as ET 

  

nowtime = time.strftime('%Y-%m-%d',time.localtime(time.time())) 

configpath=r'c:portscanconfig.ini'

#传入api接口主路径,遍历获取所有的ip列表,用IPy模块格式成127.0.0.1/24的格式 

def getiplist(ipinf): 

serverarea=['tj101','tj103','dh','dx'] 

iplist=[] 

for area in serverarea: 

ipapi=urllib2.urlopen(ipinf+area).read() 

for ip in ipapi.split('n'): 

#判断如果ip列表不为空,转换成ip/网关格式,再格式化成ip/24的格式 

if ip: 

ip=ip.replace('_','/') 

ip=(IP(ip)) 

iplist.append(str(ip)) 

ipscan(iplist,nmapathx) 

  

#传递ip地址文件和nmap路径 

def ipscan(iplist,nmapath): 

#古老的去重,对ip文件中的ip地址进行去重 

newiplist=[] 

scaniplist=[] 

for ip in iplist: 

if ip not in newiplist: 

newiplist.append(ip) 

#遍历所有ip段,批量扫描,生成xml格式报告 

for ip in newiplist: 

filename=nowtime+ip.split('/')[0]+'.xml'

filepath=r"c:portscanscanres\"

nmapcmd=nmapath+' -PT '+ip.strip('rn')+' -oX '+filepath+filename 

os.system(nmapcmd) 

scaniplist.append(ip) 

writeinmysql(scaniplist) 

  

#入库模块是某大婶发写好的给我 我只是简单修改了哈,主要是xml.etree.ElementTree模块。 

def writeinmysql(scaniplist): 

filepath=r"c:portscanscanres"

for ip in scaniplist: 

xmlfile=filepath+'\'+ip+'.xml' 

#缩进哈 发文章的时候临时改的,懒得缩进了 

root=ET.parse(xmlfile).getroot() 

allhost=root.findall('host') 

conn=MySQLdb.connect(host='10.5.10.57',user='nxadmin',passwd='nxadmin.com',port=3306,db='scandb',charset='utf8')

cur= conn.cursor() 

for host in allhost: 

address = host.find('address') 

#首先判断端口是不是open的,如果是再进行入库 

for port in host.find('ports').findall('port'): 

if port.find('state').attrib['state']=="open": 

ip=address.attrib['addr'] 

portval=port.attrib['portid'] 

state=port.find('state').attrib['state'] 

sql = "INSERT INTO portscan (ip,port,state) VALUES(%s,%s,%s)"

params=[ip,portval,state] 

cur.execute(sql,params) 

conn.commit() 

cur.close() 

conn.close() 

if __name__=="__main__": 

#读取配置文件中要扫描的IP apiurl和nmap安装文件路径 

config=ConfigParser.ConfigParser() 

config.readfp(open(configpath,'rb')) 

nmapathx=config.get('nmap','nmapath') 

ipinf=config.get('ip','ipinf') 

getiplist(ipinf)

配置文件c:portscanconfig.ini中主要是api接口主url,nmap安装路径。

感兴趣的朋友可以进一步完善该实例的功能。希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
使用python绘制常用的图表
Aug 27 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
Python双链表原理与实现方法详解
Feb 22 Python
详解Python yaml模块
Sep 23 Python
Flask搭建一个API服务器的步骤
May 28 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 #Python
python中urllib模块用法实例详解
Nov 19 #Python
python统计一个文本中重复行数的方法
Nov 19 #Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 #Python
python判断字符串是否纯数字的方法
Nov 19 #Python
python使用any判断一个对象是否为空的方法
Nov 19 #Python
python编写暴力破解FTP密码小工具
Nov 19 #Python
You might like
PHP 可阅读随机字符串代码
2010/05/26 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
web 页面分页打印的实现
2009/06/22 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python 处理文件的几种方式
2019/08/23 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python实现上下文管理器的方法
2020/08/07 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
办公室主任岗位职责
2013/11/08 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
部门活动策划方案
2014/08/16 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery