NmapScan
Python-Tool zur Verarbeitung von Nmap-XML-Scans
Über das Projekt
NmapScan ist ein Python-basiertes Toolset zur automatisierten Verarbeitung von Nmap-Netzwerkscans. Es parst XML-Scan-Ergebnisse und exportiert die gewonnenen Daten in verschiedene Formate für die Netzwerk-Inventarisierung und Dokumentation.
Funktionen
- XML-Parsing: Extrahiert MAC-Adressen, IPv4-Adressen und Hostnamen aus Nmap-XML-Exporten
- CSV-Export: Konvertiert Scan-Ergebnisse in gut lesbare CSV-Dateien
- Excel-Integration: Aktualisiert vorhandene Excel-Inventardatenbanken mit neuen MAC-Adressen
- Merge-Funktion: Kombiniert CSV-Scandaten mit bestehenden Excel-Tabellen
- Fehlende Geräte: Identifiziert und protokolliert nicht im Inventar erfasste IPs
Technologie-Stack
- Python 3.x: Kernsprache für alle Skripte
- xml.etree.ElementTree: Native XML-Parsing-Bibliothek
- csv: Standardbibliothek für CSV-Exporte
- pandas: Datenmanipulation und Excel-Integration
- openpyxl: Lesen und Schreiben von Excel-Dateien
Code-Beispiel
XML-Parsing und CSV-Export aus Nmap-Scan-Ergebnissen:
import xml.etree.ElementTree as ET
import csv
def parse_xml_to_csv(xml_file, csv_file):
# XML-Datei öffnen und parsen
tree = ET.parse(xml_file)
root = tree.getroot()
# CSV Datei öffnen und schreiben
with open(csv_file, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['MAC Address', 'IPv4', 'Hostname'])
# Durch jeden Host im XML gehen
for host in root.findall('host'):
mac = ipv4 = hostname = None
for addr in host.findall('address'):
if addr.get('addrtype') == 'mac':
mac = addr.get('addr')
elif addr.get('addrtype') == 'ipv4':
ipv4 = addr.get('addr')
for name in host.find('hostnames').findall('hostname'):
if '.int.bynature.com' in name.get('name'):
hostname = name.get('name')
# Zeile schreiben wenn alle Daten vorhanden
if mac and ipv4 and hostname:
writer.writerow([mac, ipv4, hostname])
Anwendungsfall
Das Tool wurde für die regelmäßige Netzwerk-Inventarisierung in einer mittelständischen Unternehmensumgebung entwickelt. Der Workflow:
- Nmap-Scan ausführen:
nmap -sn 192.168.188.0/24 -oX nmapscan.xml - XML mit main.py in CSV konvertieren
- CSV-Daten mit add_mac.py in Excel-Inventar einpflegen
- Nicht erfasste Geräte werden in "Tabelle 10" protokolliert
Ergebnis
Das Tool verarbeitet erfolgreich Netzwerkscans mit 64+ aktiven Hosts und aktualisiert die Inventardokumentation automatisch. Durch die Filterung nach Firmendomain (.int.bynature.com) werden nur relevante interne Geräte erfasst.