scans2any v1.0: Projektdatenbanken, intelligentere Filter und massiver Geschwindigkeitszuwachs

Seit der ersten Veröffentlichung von scans2any haben wir intensiv daran gearbeitet, das Tool schneller, intelligenter und flexibler zu machen. Version 1.0 ist ein großer Schritt nach vorne — vollgepackt mit neuen Funktionen, einer komplett neu geschriebenen Kern-Engine und Verbesserungen, die die Arbeit mit großangelegten Infrastrukturscans einfacher denn je machen.

Auf GitHub ansehen

scans2any usage

Persistente Projektdatenbanken

Das Parsen von Hunderten von Scan-Dateien kostet Zeit. Mit dem neuen Flag -p / --project speichert scans2any die geparste Infrastruktur automatisch in einer lokalen SQLite-Datenbank. Bei nachfolgenden Aufrufen wird diese sofort neu geladen — kein erneutes Parsen erforderlich.

# Erster Aufruf: Parst alles und speichert in myproject.db
scans2any -p myproject --nmap scans/ --nessus report.nessus

# Später: Lädt die Datenbank in Millisekunden
scans2any -p myproject -w html -o report.html

Das ist ein echter Gamechanger für iterative Workflows, bei denen Filter, Spalten oder Ausgabeformate für denselben Datensatz immer wieder angepasst werden.

Der neue Spaltenfilter

Der bisherige host_filter und service_filter wurden durch einen einzigen, deutlich leistungsfähigeren Spaltenfilter (-C) ersetzt. Er erlaubt es, beliebige Spalten per Regex zu filtern, Muster zu negieren und mehrere Bedingungen zu verketten:

# Nur HTTP-Dienste behalten
scans2any --nmap scan.xml -C 'Services:(?i)http$'

# Linux-Hosts ausschließen
scans2any --nmap scan.xml -C 'OS:!linux'

# Alle Hosts mit SMB-Diensten anzeigen, alle ihre Dienste und Spalten behalten (Host-Modus)
scans2any --nmap scan.xml -Ch 'Services:smb'

# Nur SSL-Schwachstellen aus einem Nessus-Report behalten
scans2any --nessus scan.nessus -c IP-Addresses,Vulnerability-Type -Cv 'Vulnerability-Type:SSL Version'

# Bedingungen verknüpfen (logisches UND): SSH ohne "OpenSSH" im Banner
scans2any --nmap scan.xml -C 'Services:(?i)ssh Banners:!OpenSSH'

Zwei zusätzliche Modi ermöglichen noch feinere Kontrolle:

  • Wertmodus (-Cv): Kürzt Felder mit mehreren Werten auf die passenden Einträge, sodass jede Zeile genau das zeigt, was gewünscht ist.
  • Host-Modus (-Ch): Behält den gesamten Host (mit allen seinen Diensten), wenn mindestens ein Dienst dem Filter entspricht.

Außerdem lässt sich per --hosts-file nach einer Datei mit IPs oder Hostnamen filtern:

scans2any --nmap scan.xml --hosts-file targets.txt

Eine neue, ansprechende Benutzeroberfläche

Die Terminal-Ausgabe wurde komplett neu gestaltet. Standardmäßig zeigt scans2any jetzt genau das, was zählt — klare, fokussierte Fortschrittsmeldungen ohne unnötiges Rauschen. Mehr Details? Einfach -v für den ausführlichen Modus oder -vv für vollständige Debug-Ausgabe anhängen.

Im Hintergrund wurde tqdm durch die hervorragende rich-Bibliothek ersetzt, die unter anderem bietet:

  • Nicht-blockierende Fortschrittsbalken, die flüssig aktualisieren, ohne andere Ausgaben zu unterbrechen
  • Live-Status-Spinner, die bei langen Operationen auf dem Laufenden halten
  • Intelligente Terminal-Integration, die gut mit modernen Emulatoren zusammenspielt

Das Ergebnis: Ein Tool, das sich reaktionsschnell und ausgereift anfühlt — egal ob man eine Handvoll Dateien verarbeitet oder komplexe Multi-Parser-Workflows orchestriert.

Benutzerdefinierte Spalten und vertrauenswürdige Felder

Parser können nun über das Flag -c eigene Felder bereitstellen. Nessus-Scans können zum Beispiel den Schwachstellentyp zusammen mit den üblichen Spalten exportieren:

scans2any --nessus scan.nessus -c +Vulnerability-Type

Ein neues Trusted-Fields-System stellt sicher, dass Daten von Parser mit hoher Konfidenz (wie Bloodhound oder Aquatone) beim Zusammenführen nicht durch weniger zuverlässige Quellen überschrieben werden. Das Ergebnis: genauere kombinierte Ausgaben ohne manuellen Eingriff.

Performance: Von Grund auf neu geschrieben

Dieses Release bringt erhebliche Geschwindigkeitszuwächse in jeder Phase der Pipeline:

  • Intelligenteres Host-Zusammenführen — Hosts mit gleichen IPs oder Hostnamen werden jetzt deutlich effizienter kombiniert, was große Datensätze erstmals handhabbar macht.
  • Schnellerer Start — Umfangreiche Bibliotheken werden nur bei Bedarf geladen, was die Startzeit bei einfachen Operationen um ~50 % reduziert.
  • 20-fach schnellere Test-Suite — Ein überarbeitetes Test-Framework führt die vollständige Suite in einem Bruchteil der bisherigen Zeit aus.
  • Adaptives Datei-Parsing: Bei großen Datei-Batches wird automatisch auf Multi-Process-Parsing umgeschaltet, um den Python-GIL zu umgehen.

Intern verwenden die Kerndatenstrukturen nun Pydantic-Modelle für Validierung und Serialisierung — das erhöht die Zuverlässigkeit und macht die Codebasis leichter erweiterbar.

Breaking Changes

host_filter und service_filter wurden entfernt. Beide sind vollständig durch den neuen Spaltenfilter ersetzt:

AltNeu
--enable-filters host_filter --hosts-regex ".*\.example\.com"-C Hostnames:.*\.example\.com
--enable-filters service_filter --service-regex "http.*"-C Services:http.*

Jetzt loslegen

Upgrade auf v1.0 und erlebe das schnellste und flexibelste scans2any aller Zeiten. Installations­anleitung und vollständige Dokumentation gibt es im GitHub-Repository. Feedback oder Ideen? Einfach ein Issue eröffnen oder an der Diskussion teilnehmen — wir freuen uns darüber!


Lies weitere interessante Beiträge in unserem Blog.