
import subprocess
import xml.etree.ElementTree as ET
import csv
from datetime import datetime

target = "127.0.0.1"

print("NetShield CSV Scanner Started")

result = subprocess.run(
    ["nmap", "-F", "-oX", "-", target],
    capture_output=True,
    text=True,
    timeout=60
)

if result.returncode != 0:
    print("Nmap scan failed:", result.stderr)
    raise SystemExit(1)

root = ET.fromstring(result.stdout)
filename = "netshield_report.csv"

with open(filename, "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["Target", "Port", "Protocol", "State", "Service"])

    for host in root.findall("host"):
        for port in host.findall(".//port"):
            state = port.find("state")
            service = port.find("service")

            writer.writerow([
                target,
                port.get("portid"),
                port.get("protocol"),
                state.get("state") if state is not None else "unknown",
                service.get("name") if service is not None else "unknown"
            ])

print("CSV report saved:", filename)
print("Scan completed:", datetime.now())
