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实现将汉字转换成汉语拼音的库
May 05 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
单利模式及python实现方式详解
Mar 20 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
什么是Python中的匿名函数
Jun 02 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
想学画画?python满足你!
Dec 24 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php 发送带附件邮件示例
2014/01/23 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
python检测远程服务器tcp端口的方法
2015/03/14 Python
python数据结构之链表的实例讲解
2017/07/25 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python 星号(*)的多种用途
2020/09/21 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
个人担保书范文
2014/05/20 职场文书
应届生求职信
2014/05/31 职场文书
会计工作总结范文2014
2014/12/23 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
2016入党心得体会范文
2016/01/06 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书