Skip to content

Commit ccf13ce

Browse files
authored
Merge pull request #95 from priyambajpai22/master
bugfix-Unable to parse xml output #90
2 parents 0e3d166 + 9e25fb8 commit ccf13ce

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

nmap3/nmap3.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
from nmap3.exceptions import NmapNotInstalledError, NmapXMLParserError, NmapExecutionError
3535

3636
import xml
37+
import re
3738

3839
__author__ = 'Wangolo Joel (inquiry@nmapper.com)'
3940
__version__ = '1.5.5'
@@ -122,10 +123,14 @@ def scan_command(self, target, arg, args=None, timeout=None):
122123
if (args):
123124
scancommand += " {0}".format(args)
124125

126+
125127
scan_shlex = shlex.split(scancommand)
126128
output = self.run_command(scan_shlex, timeout=timeout)
129+
file_name=re.search(r'(\-oX|-oN-|oG)\s+[a-zA-Z-_0-9]{1,100}\.[a-zA-Z]+',scancommand)
130+
if file_name:
131+
file_name=scancommand[file_name.start():file_name.end()].split(" ")[0]
132+
return self.get_success_xml_et(file_name)
127133
xml_root = self.get_xml_et(output)
128-
129134
return xml_root
130135

131136
def scan_top_ports(self, target, default=10, args=None, timeout=None):
@@ -279,6 +284,16 @@ def get_xml_et(self, command_output):
279284
except ParseError:
280285
raise NmapXMLParserError()
281286

287+
288+
def get_success_xml_et(self,file_name):
289+
root = ET.Element("root")
290+
success = ET.SubElement(root, "success")
291+
success.text = "Nmap scan completed successfully."
292+
file_path = ET.SubElement(root, "file_path")
293+
file_path.text = "{}".format(file_name)
294+
ET.ElementTree(root)
295+
return root
296+
282297
class NmapScanTechniques(Nmap):
283298
"""
284299
Extends Nmap to include nmap commands

0 commit comments

Comments
 (0)