pub fn parse_nmap_xml(xml_content: &str) -> Result<NmapRun, Box<dyn Error>>
Expand description
Parses Nmap XML output into a structured format
ยงExamples
use nmap::parse_nmap_xml;
let xml = r#"<?xml version="1.0" encoding="UTF-8"?>
<nmaprun scanner="nmap" args="nmap -sS -p 80 example.com" version="7.92" xmloutputversion="1.05">
<host>
<status state="up" reason="syn-ack" reason_ttl="0"/>
<address addr="192.168.1.1" addrtype="ipv4"/>
<ports>
<port protocol="tcp" portid="80">
<state state="open" reason="syn-ack" reason_ttl="64"/>
<service name="http" method="table" conf="3"/>
</port>
</ports>
</host>
</nmaprun>"#;
let result = parse_nmap_xml(xml);
assert!(result.is_ok());
let nmap_run = result.unwrap();
assert_eq!(nmap_run.scanner, "nmap");
assert_eq!(nmap_run.version, "7.92");
assert_eq!(nmap_run.hosts.len(), 1);
let host = &nmap_run.hosts[0];
assert_eq!(host.addresses[0].addr, "192.168.1.1");
assert_eq!(host.addresses[0].addrtype, nmap::AddressType::IPv4);