Function parse_nmap_xml

Source
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);