想用nmap扫描ip段输出一个干净的IP:PORT格式的文件。于是写了个简单脚本。importxml.dom.minidomimportsysimportgetoptstatstr 想用nmap 扫描ip段输出一个干净的 IP:PORT格式的文件。于是写了个简单脚
想用nmap 扫描ip段输出一个干净的 IP:PORT格式的文件。于是写了个简单脚本。
import xml.dom.minidomimport sysimport getoptstatstr=""statstrlist=["open"]infile=""outfile=""infileflag=0outfileflag=0statstrflag=0isstatflag=0helpflag=0#chu li can shuoptions,args = getopt.getopt(sys.argv[1:],"hni:o:s:",["help","in=","out=","stat"])for name,value in options: if name in ("-h","--help"): print """ xxoo.py -h,--help print this help -i,--in read the nmap xml outfile -o,--out out the result (default: xmlname+_done.txt) -s,--stat splited by dot (example:open.filtered.close default:open) -n no status info """ helpflag=1 if name in ("-i","--in"): infile=value infileflag=1 if name in ("-o","--out"): outfile=value outfileflag=1 if name in ("-s","--stat"): statstrlist=value.split(".") statflag=1 if name=="-n": isstatflag=1#chu li mo ren can canshu if outfileflag==0: outfile=infile+"_done.txt"if statstrflag==0: statstrlist=["open"]if helpflag==1: exit()#chu li domfile=open(outfile,"w+")dom=xml.dom.minidom.parse(infile)root=dom.documentElementhostlist=root.getElementsByTagName("host")for hostnode in hostlist: for hostchild in hostnode.childNodes: if hostchild.nodeName=="address": ip=hostchild.getAttribute("addr") if hostchild.nodeName=="ports": for hostchildchild in hostchild.childNodes: if hostchildchild.nodeName=="port": for stat in statstrlist: if hostchildchild.childNodes[0].getAttribute("state")==stat: if isstatflag==0: print ip+":"+hostchildchild.getAttribute("portid")+"(("+stat+"))" file.write(ip+":"+hostchildchild.getAttribute("portid")+"(("+stat+"))"+"\n") if isstatflag==1: print ip+":"+hostchildchild.getAttribute("portid") file.write(ip+":"+hostchildchild.getAttribute("portid")+"\n") #if hostchildchild.childNodes[0].getAttribute("state")=="open": #print ip+":"+hostchildchild.getAttribute("portid")+"((open))" # file.write(ip+":"+hostchildchild.getAttribute("portid")+"((open))"+"\n") #elif hostchildchild.childNodes[0].getAttribute("state")=="filtered": # print ip+":"+hostchildchild.getAttribute("portid")+"((filtered))" # file.write(ip+":"+hostchildchild.getAttribute("portid")+"((filtered))"+"\n") file.close()用法:
先用nmap –oX 参数输出xml格式文件。然后tool –i name.xml –s open.filtered
nmap 输出格式过滤小工具,,
nmap 输出格式过滤小工具