Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.90 KB | None | 0 0
  1. #import easy to use xml parser called minidom:
  2. import datetime, re
  3. from xml.dom.minidom import parse, parseString
  4.  
  5. # start output file
  6. output = open('output.csv', 'a')
  7.  
  8. #get current time and put in output file
  9. now = datetime.datetime.now()
  10. print ""
  11. output.write('IP Address,Host Name,All Ports Filtered,Open Ports,')
  12. output.write('State (O/C),Service,Version,Device Type,Running,OS Details\n')
  13.  
  14. #setup variables
  15. print "Write the name of the XML file you wish to parse"
  16. dom = parse(raw_input() + ".xml")
  17. nmapvars = {}
  18. hostname = ''
  19. os = ''
  20. difficulty = ''
  21. args = ''
  22. date = ''
  23. port = []
  24. name = []
  25. protocol = []
  26. product = []
  27. product = []
  28. version = []
  29. extrainfo = []
  30. portstate = []
  31. goodXML = []
  32.  
  33. scaninfo = dom.getElementsByTagName('nmaprun')[0]
  34. date = scaninfo.getAttribute("startstr")
  35. args = scaninfo.getAttribute('args')
  36.  
  37. #define translateXml
  38. def translateXml(node):
  39.  
  40.     if node.nodeName == 'hostname':
  41.  
  42.         hostname = node.getAttribute('name')
  43.         output.write(node.getAttribute('name'))
  44.         output.write(',')
  45.  
  46.     elif node.nodeName == 'address':
  47.  
  48.         if 'ip' in node.getAttribute('addrtype'):
  49.  
  50.             output.write('\n')
  51.             #output.write(',')
  52.             ipaddr = node.getAttribute('addr')
  53.             output.write(node.getAttribute('addr'))
  54.             output.write(',')
  55.  
  56.     elif node.nodeName == "port":
  57.  
  58.         #protocol.append(node.getAttribute("protocol"))
  59.         #output.write(node.getAttribute("protocol"))
  60.         #output.write(',')
  61.  
  62.         output.write('\n')
  63.         output.write(',')
  64.         output.write(',')
  65.         output.write(',')
  66.         port.append(node.getAttribute("portid"))
  67.         #output.write(addr)
  68.         output.write(node.getAttribute("portid"))
  69.         output.write(',')
  70.  
  71.     elif node.nodeName == "state":
  72.  
  73.         portstate.append(node.getAttribute('state'))
  74.         output.write(node.getAttribute('state'))
  75.         output.write(',')
  76.  
  77.     elif node.nodeName == "service":
  78.  
  79.         name.append(node.getAttribute("name"))
  80.         output.write(node.getAttribute('name'))
  81.         output.write(',')
  82.         product.append(node.getAttribute("product"))
  83.         output.write(node.getAttribute('product'))
  84.         output.write(',')
  85.         version.append(node.getAttribute("version"))
  86.         output.write(node.getAttribute('version'))
  87.         output.write(',')
  88.         extrainfo.append(node.getAttribute("extrainfo"))
  89.         output.write(node.getAttribute('extrainfo'))
  90.         output.write(',')
  91.  
  92.     elif node.nodeName == 'osmatch':
  93.  
  94.         os = node.getAttribute('name')
  95.         output.write(node.getAttribute('name'))
  96.         output.write(',')
  97.  
  98.     elif node.nodeName == 'tcpsequence':
  99.  
  100.         difficulty = node.getAttribute('difficulty')
  101.  
  102. #break down xml to get details
  103. for node in dom.getElementsByTagName('host'):
  104.  
  105.     #second level within host tag
  106.     for subnode in node.childNodes: #go through each subnode of
  107.  
  108.         if subnode.attributes is not None: #if the subnode has attributes parse them
  109.  
  110.             translateXml(subnode) #send the attribute to translateXml
  111.             if len(subnode.childNodes) > 0: #if there are childnodes then dig deeper
  112.  
  113.                 #third level
  114.                 for subsubnode in subnode.childNodes: #loop through childnodes
  115.  
  116.                     if subsubnode.attributes is not None: #if the susubnode has attributes parse them
  117.  
  118.                         translateXml(subsubnode) #send the attribute to translateXml
  119.  
  120.                         if len(subsubnode.childNodes) > 0:
  121.  
  122.                             #fourth level
  123.                             for subsubsubnode in subsubnode.childNodes:
  124.  
  125.                                 if subsubsubnode.attributes is not None:
  126.  
  127.                                     translateXml(subsubsubnode) #translate the xml
  128.  
  129. print hostname
  130. print "Parsing finished. Bye!"
  131. dom.unlink()
  132. output.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement