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 不同对象比较大小示例探讨
Aug 21 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
在Python中定义一个常量的方法
Nov 10 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
python构造函数init实例方法解析
Jan 19 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
python计算导数并绘图的实例
Feb 29 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
Python3压缩和解压缩实现代码
Mar 01 Python
只用40行Python代码就能写出pdf转word小工具
May 31 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文件
2007/01/04 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
理解javascript正则表达式
2016/03/08 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
Node.js的特点详解
2017/02/03 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
Python生成MD5值的两种方法实例分析
2019/04/26 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
Java程序员面试90题
2013/10/19 面试题
写给老师的表扬信
2014/01/21 职场文书
演讲稿开场白台词
2014/08/25 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
远程教育学习心得体会
2016/01/23 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Python 中面向接口编程
2022/05/20 Python