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之玩转字符串(3)
Sep 14 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
Python中Threading用法详解
Dec 27 Python
Python之文字转图片方法
May 10 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
django 简单实现登录验证给你
Nov 06 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
python小白学习包管理器pip安装
Jun 09 Python
python集合能干吗
Jul 19 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
详解Python常用的魔法方法
Jun 03 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缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
JS原型链怎么理解
2016/06/27 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python操作ie登陆土豆网的方法
2015/05/09 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Python中@property的理解和使用示例
2019/06/11 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
python如何操作mysql
2020/08/17 Python
python/golang 删除链表中的元素
2020/09/14 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
大学军训感言800字
2014/02/27 职场文书
普通话演讲稿
2014/09/03 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL