Nmap结果文件XML文件解析
对nmap扫描结果xml格式的文件进行解析,无需直接xml解析或读取,可直接使用模块:
1.nmapparser
安装:pip install nmapparser
Demo:
#!/usr/bin/env python
# Copyright (C) 2007 Guilherme Polo <ggpolo@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
"""
A demo script showing how to use nmapparser.
""" import sys
import re
from nmapparser import NmapParser def usage():
"""Show demo usage."""
print "Usage: %s xmlfile1.xml xmlfile2.xml ..." % __file__ def getaddress(str):
reg=u"addr': '(.*?)'}"
lister=re.compile(reg)
mylist=re.findall(lister,str)
#print mylist
return mylist[0] def main(args):
parser = NmapParser()
for xmlf in sys.argv[1:]:
print "%s\nParsing %s" % ('*' * 75, xmlf)
parser.parse(xmlf) if not parser.parsed:
continue print "Options:", parser.options
print "Finish time:", parser.runstats.finished.time h_stats = parser.runstats.hosts
print "Hosts -> total %s, up: %s, down: %s" % (
h_stats.total, h_stats.up, h_stats.down) for host in parser.host:
print "Host options:", host.options if 'extraports' in host.options:
print "Host extraports:", host.ports.extraports print "Hostname:", host.hostnames
print "HostIp:", getaddress(str(host.address)) if 'ports' not in host.options or \
'ports' not in host.ports.options:
continue if 'script' in host.ports.ports[0].options:
print host.ports.ports[0].script[0].output
print print "Host ports info:"
for p in host.ports.ports:
print "%20s%7s%9s%6s" % (getaddress(str(host.address)),p.portid, p.state, p.protocol) if __name__ == "__main__":
if len(sys.argv) < 2:
sys.exit(usage())
main(sys.argv)
解析:
demo.py *.xml
结果输出:
2.python-libnmap
安装:
pip install python-libnmap //copyright AnYun.ORG
Demo:
#!/usr/bin/env python import argparse
from libnmap.process import NmapProcess
from libnmap.parser import NmapParser, NmapParserException def parse_args():
''' Create the arguments '''
parser = argparse.ArgumentParser()
parser.add_argument("-x", "--nmapxml", help="Nmap XML file to parse")
parser.add_argument("-l", "--hostlist", help="Host list file")
return parser.parse_args() def report_parser(report):
''' Parse the Nmap XML report '''
for host in report.hosts:
ip = host.address if host.is_up():
hostname = 'N/A'
# Get the first hostname (sometimes there can be multi)
if len(host.hostnames) != 0:
hostname = host.hostnames[0] print '[*] {0} - {1}'.format(ip, hostname) # Get the port and service
# objects in host.services are NmapService objects
for s in host.services: # Check if port is open
if s.open():
serv = s.service
port = s.port
ban = s.banner # Perform some action on the data
print_data(ip, port, serv, ban) def print_data(ip, port, serv, ban):
''' Do something with the nmap data '''
if ban != '':
ban = ' -- {0}'.format(ban)
print ip,port,serv,ban #print ' {0}: {1}{2}'.format(port, serv, ban)
#print ' {0}: {1}{2}'.format(port, serv, ban) def main():
args = parse_args()
report = NmapParser.parse_fromfile(args.nmapxml)
report_parser(report) main()
解析:
nmap-parser-dome.py -x *.xml
结果输出:
以上能基本解析了XML文件内容,若有其他需求,可参照修改偷懒
Nmap结果文件XML文件解析的更多相关文章
- Adobe AIR对本地文件(XML文件)的操作
引用:http://addiwang.blog.163.com/blog/static/118130772011221114230288/ Air的文件操做主要涉及两个类,FIle和FileStrea ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析
首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- python 常用包之xml文件处理
1,处理xml的包 from xml.etree import ElementTree as ET 2,如何写出xml文件 xml文件和html中的元素很像,有父级子集之说, root = ET.El ...
- xml文件读取到数据库
xml文件读取到数据库 第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步 xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...
- python读写xml文件
python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...
- Spring-Batch将CSV文件转为XML文件
1 介绍 用Spring Batch实现一个简单的需求,将csv文件转换成xml文件. csv文件如下:record.csv username, user_id, transaction_date, ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
随机推荐
- css3属性兼容性
来自:http://www.cnblogs.com/woleicom/p/4111030.html css3属性兼容性 /*圆角class,需要设置圆角的元素加上class名称*/ .roundedC ...
- python 基本数据类型常用方法总结
[引言] python中基本数据类型的有很多常用方法,熟悉这些方法有助于不仅提升了编码效率,而且能写出高质量代码,本文做总结 int .bit_length:返回二进制长度 str 切片索引超出不会报 ...
- 用户授权的Sql脚本
正文 要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权: 获得准许连接 SQL Server 服务器的权利: 获得访问特定数据库中数据的权利(select, update, ...
- TableStore:单行操作
说明: 首先需要添加TableStore的依赖 <dependency> <groupId>com.aliyun.openservices</groupId> &l ...
- 安全测试8_Web安全实战3(命令注入)
1.命令注入的概念:命令指的是操作系统的命令,注入表示通过WEB程序在服务器上拼接系统命令. 2.命令注入实战: 首先我们先打开DVWA,将安全级别调至为low级别,忘记了的可以参考之前的章节进行设置 ...
- Java 时间类
1.System 类 2.Date 类 3.SimpleDateFormate 类 4.Calendar 类 1.System 类 得到当前的时间值.System 类不能被实例化,需要通过它的静态方法 ...
- 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践
20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 检查点1: 安装alibaba 插件,解决代码中的规范问题 首先把搭档加入到自己的项目中 ...
- webDAV
wiki webDAV client - java https://github.com/lookfirst/sardine https://www.cnblogs.com/xgjblog/p/383 ...
- ubuntu 14.04 安装 Apache Thrift 0.10
1.到官网下载源码压缩文件 https://thrift.apache.org/download 2.安装依赖软件,可以参考 https://thrift.apache.org/docs/instal ...
- srbac配置
Yii框架中安装srbac扩展方法 以前自己安装过一次srbac,遇到很多问题,虽然都解决了,可是一时偷懒,没做记录. 再次安装时,还是遇到了点麻烦,所以这一还是记下来,以备不时之需. 首先,下载sr ...