python 打造nmap格式化输出

python 打造nmap格式化输出

nmap xml输出csv

啰里啰嗦的就不多说了,直接上代码吧!

#coding:utf-8
import csv
from xml.etree import ElementTree as et
# version Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
def Get_ip(f_xml): #清洗xml数据
    file_xml=f_xml  #XML文件名
    sum=[]          #返回结果列表变量
    data=open(file_xml).read()
    root=et.fromstring(data)
    t1= root.findall("host") 

    for t2 in t1:
        #s2=[]  # s2[0] save hosts ip address, s2[1] save hosts status
		s2={"ip":"null","port":"null","state":"null","service":"null"} #存放主机IP地址和状态
		
		for t3 in t2:
			if(t3.tag=="ports"):
				post=[]
				state=[]
				service=[]
				for t4 in t3:
					if(t4.tag=="port"):
						for t5 in t4:
							if(t5.tag=="state"):
								if(t5.attrib["state"]=="open"):
									port=t4.attrib["portid"]
									post.append(port)
									if(t5.tag=="state"):
										state.append(t5.attrib["state"])
				
				s2["port"]=map(int,post)
				s2["state"]=','.join(state)
				s2["service"]=','.join(service)
			elif(t3.tag=="address"):
				if(t3.attrib["addrtype"]=="ipv4"):
                    #s2.append(t3.attrib["addr"])
					s2["ip"]=t3.attrib["addr"] #存放主机IP地址
					#sum.append(s2[::-1])    # Get hosts IP address,s2[::-1]:Reverse s2
					sum.append(s2)  #将字典s2存入列表sum变量中
                                    
    return sum

def Write_csv(f_csv,datas): #写入csv文件中
    file_csv=f_csv     #csv文件名
    datas=datas        #需要写入文件的数据
    headers=["ip","port","state","service"]

    f=open(file_csv,"wb")
    writer = csv.DictWriter(f,fieldnames=headers)
    writer.writerows(datas)
    f.close()

if __name__ == '__main__':
    file_xml="nmap.xml" #需要清洗的xml文件
    file_csv="test.csv"  #需要保存到的csv文件

    s1=Get_ip(file_xml)
    Write_csv(file_csv,s1)

输出效果
csv输出效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值