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 相关文章推荐
python控制台显示时钟的示例
Feb 24 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
Python with语句用法原理详解
Jul 03 Python
python如何使用腾讯云发送短信
Sep 17 Python
python绘制分布折线图的示例
Sep 24 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生成RSS文件类实例
2014/12/05 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
详解Python文本操作相关模块
2017/06/22 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
个人投资计划书
2014/05/01 职场文书
销售类求职信
2014/06/13 职场文书
参赛口号
2014/06/16 职场文书
金融保险专业求职信
2014/09/03 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
python - timeit 时间模块
2021/04/06 Python
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL