java namp 输出xml_nmap扫描结果xml文件处理工具

该工具用于处理大量目标资产的Nmap XML输出,尤其适用于多网段扫描。通过解析XML文件,提取存活IP和开放端口,将结果保存到res.txt。代码示例展示了如何读取XML并提取信息,支持不同结构的Nmap输出。
摘要由CSDN通过智能技术生成

当目标资产很多时,py-nmap不能满足多网段同时扫描的需求了,对于扫描结果的提取也很痛苦于是便产生了这个工具了~

工具还是有些瑕疵的,但是对于我自己的需求是满足了的。大家使用上有啥问题的话欢迎留言或者简信我_.

贴代码:

# coding: utf-8

try:

import xml.etree.cElementTree as ET

except ImportError:

import xml.etree.ElementTree as ET

reload(__import__('sys')).setdefaultencoding('utf-8')

'''

get-nmap-ip-port.py

nmap -Pn -n -vv -F -oX d:\\xxx.xml 10.129.246.1/24

nmap -n -vv --open -oX d:\\vm.xml 192.168.106.1/24

--open这个参数很重要

'''

# Method 1

bd = open(r'd:\rs1.xml', 'r').read() #nmap的扫描结果文件

root = ET.fromstring(bd)

# Method 2

# tree = ET.parse('xxx.xml')

# root = tree.getroot()

ip_list = []

res = open('res.txt', 'w')

for host in root.findall('host'):

if len(host) > 3:

print '\n', str(len(host)), # 打印host标签中子元素个数

if host[0].get('state') == "up": # 判断IP是否存活

ip = host[1].get('addr') # 提取IP地址

print ip,

ip_list.append(ip) #验证存活IP个数

ip_ = '\n'+ip+'\t'

res.writelines(ip_)

# 提取端口

if len(host) == 6:

for port in host[4][1:]: #若确认端口开放,但没有提取出端口请修改host[4][此处+1试试:],加一后为host[4][2:],下面的几处方法一样

print port.get('portid'),

port_ = str(port.get('portid')) + ','

res.write(port_)

elif len(host) == 5:

for port in host[3][2:]:

# print port.tag,

print port.get('portid'),

port_ = str(port.get('portid'))+','

res.write(port_)

elif len(host) == 4:

for port in host[3][1:]:

print port.get('portid'),

port_ = str(port.get('portid')) + ','

res.write(port_)

elif len(host) < 4:

print host[0].get('state')

res.close()

print '\n Alive IP Total:{} '.format(len(ip_list))

df9abd267d73

运行结果截图

df9abd267d73

结果文件

使用scrapy shell功能时报错,可尝试使用下面命令

scrapy shell -s USER_AGENT='custom user agent' visit_url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值