Skip to content

Repository files navigation

NetScanner

LAN-Discovery · Portscan · Geräte-Fingerprinting · ONVIF/RTSP-Kameraerkennung mit eingebettetem Live-Video — und eine interaktive Netzwerkkarte.

Ein schlankes Desktop-Werkzeug, um das eigene Netz sichtbar zu machen: Welche Geräte sind online, was sind sie (Router, Drucker, NAS, Kamera, Handy …), welche Dienste bieten sie an — und wie kommt das Netz nach außen. Plattformübergreifend für Windows und Linux.

.NET 10 (C# 14) · Avalonia 12 · LibVLCSharp (Core) · NLog · MVVM (CommunityToolkit)

NetScanner – Hauptfenster


Inhalt


Was kann NetScanner?

Funktion Beschreibung
Discovery ICMP-Ping-Sweep über einen CIDR-Bereich, ergänzt um die ARP-/Neighbor-Tabelle. Auch Geräte, die auf Ping schweigen (Handys im Doze), aber per ARP, mDNS, SSDP oder ONVIF auftauchen, werden gelistet.
Portscan Asynchroner TCP-Connect-Scan, gedrosselt über SemaphoreSlim. Wahlweise gängige Ports oder der volle Bereich 1–65535.
Geräte- & OS-Fingerprinting Schätzt Gerätetyp (Router, Drucker, NAS, Kamera, Mobilgerät …) und OS-Familie aus TTL, offenen Ports, MAC-Hersteller (OUI) und Bannern.
Namensauflösung Reverse-DNS, mDNS/Bonjour, NetBIOS und SSDP/UPnP — der beste verfügbare Name wird angezeigt.
Kameraerkennung ONVIF-WS-Discovery + Port-Heuristik (554/8554) + RTSP-OPTIONS-Probe. Optional mit RTSP-Login für die Stream-URL.
Live-Video RTSP-Stream direkt im Fenster, eingebettet über LibVLC (NativeControlHost).
Schwachstellen-Audit (opt-in) Prüft erkannte Kameras und Router auf offene Streams und gängige Werks-Logins (Default-Credentials). Bei Fund wird das Gerät markiert und – bei einer Kamera – das Bild direkt gezeigt. Nur fürs eigene Netz.
Passwort-Leak-Check Prüft per Have I Been Pwned (k-Anonymity), ob ein Geräte-Passwort in bekannten Daten-Leaks steht – ohne das Passwort zu übertragen – plus lokale Stärke-/Crackzeit-Schätzung gegen schnelle (MD5) und langsame (bcrypt) Hashes.
Expositions-Prüfung Fragt den Router (UPnP-IGD) nach aktiven Portweiterleitungen und der öffentlichen IP – zeigt, was aus dem Internet erreichbar ist und ob eine Weiterleitung auf eine Kamera zeigt. Mit Shodan-Selbstcheck.
Host-Aktionen Pro Gerät: Weboberfläche öffnen, SSH, RDP, SMB-Freigabe, IP/MAC/Name kopieren, Wake-on-LAN.
Export Ergebnisliste als CSV (Semikolon, Excel-DE) oder JSON.
Netzwerkkarte Interaktive Stern-Topologie: Gateway im Zentrum, Geräte ringsum, eingefärbt nach Typ.
Außenpfad (Traceroute) Verfolgt den Weg vom Gateway nach außen Richtung Internet — ICMP mit ansteigender TTL, ohne externes Tool.
Audit-Logging Zwei getrennte Logs (alles / nur Benutzereingaben). Passwörter werden nie geloggt.

Installation

Fertige Releases (empfohlen)

Über die Releases-Seite gibt es vorgebaute Pakete (vom GitHub-Actions-Workflow erzeugt):

  • Windows (empfohlen): NetScanner-…-Setup.exe — Installer mit Startmenü-Eintrag. Er bringt die .NET 10 Desktop Runtime mit und installiert sie bei Bedarf automatisch; ist sie schon vorhanden, wird dieser Schritt übersprungen.
  • Windows (portabel): NetScanner-…-win-x64.zip — entpacken, NetScanner.exe starten. Dieses Paket ist framework-dependent, setzt also eine installierte .NET 10 Desktop Runtime voraus (sonst startet die App nicht).
  • Linux: NetScanner-…-linux-x64.tar.gz oder NetScanner-…-x86_64.AppImage.

Die eingebettete Kamera-Vorschau nutzt eine vorhandene VLC-Installation (libvlc wird nicht mitgeliefert — das hält die Pakete klein). Scan, Portscan, Erkennung und Netzwerkkarte funktionieren auch ohne VLC; nur das Live-Video bleibt dann aus und die App zeigt stattdessen einen Hinweis. Details unten.

Aus dem Quellcode bauen

git clone https://github.com/Kroste/NetzwerkScan.git
cd NetzwerkScan
dotnet restore
dotnet run

Voraussetzung: .NET 10 SDK (≥ 10.0.300, in global.json gepinnt).

libvlc / VLC (für die Kamera-Vorschau)

NetScanner bündelt libvlc nicht mehr selbst — das sparte rund 85 MB pro Windows-Paket. Stattdessen lädt die App libvlc zur Laufzeit aus einer vorhandenen VLC-Installation. Fehlt sie, läuft alles außer dem eingebetteten Video normal weiter; im Videobereich erscheint dann ein Hinweis mit Download-Link.

  • Windows: Den VLC media player in der 64-bit-Variante installieren (Standard-Download). NetScanner sucht ihn unter %ProgramFiles%\VideoLAN\VLC. Eine 32-bit-VLC wird bewusst ignoriert, weil sie nicht zur 64-bit-App passt. Für eine Installation an einem anderen Ort kann die Umgebungsvariable NETSCANNER_VLC_DIR auf das VLC-Verzeichnis (mit libvlc.dll) gesetzt werden.
  • Linux: Die System-libvlc installieren. Auf immutable Fedora/Bazzite gehört das in den dotnet10-Distrobox-Container, nicht aufs Host-System:
    sudo dnf install vlc-libs      # Fedora: liefert libvlc.so + Plugins
    # Debian/Ubuntu:  sudo apt install libvlc-dev vlc-plugin-base
    Core.Initialize() findet die System-libvlc dann automatisch.

Discovery, Portscan und die Netzwerkkarte funktionieren auch ohne VLC — nur das eingebettete Video entfällt dann.


Handbuch

1. Das Hauptfenster

Oben die Titelleiste mit Live-Zählern (Hosts / Kameras), dem Button für die Netzwerkkarte und dem „i“-Button (Über-Dialog). Darunter der Eingabebereich, links die scrollbare Ergebnisliste, rechts das Detail-Panel mit dem Videobereich.

Hauptfenster nach einem Scan

2. Scan konfigurieren und starten

Scan-Optionen

  • Netzbereich (CIDR): z. B. 192.168.68.0/24. Beim Start ist dein lokales Subnetz vorausgewählt.
  • ONVIF-Wartezeit (ms): wie lange auf ONVIF-Antworten gewartet wird. Höher = mehr Kameras gefunden, aber langsamer.
  • Alle Ports (1–65535): aus = nur ein kuratierter Satz gängiger Ports (schnell); an = vollständiger Scan (deutlich langsamer).
  • RTSP prüfen: aktiviert die RTSP-OPTIONS-Probe zur Kamerabestätigung.
  • RTSP-Login (optional): Benutzer/Passwort für Kameras, die für die Stream-URL Authentifizierung verlangen. Das Passwort wird nicht geloggt.

Mit Scan starten beginnt der Lauf; Ergebnisse erscheinen streamend, du musst nicht aufs Ende warten. Abbrechen stoppt sauber.

3. Die Ergebnisliste lesen

Jedes Gerät ist eine Karte. So liest du sie:

Aufbau einer Host-Karte

  • IP + Latenz oben (2 ms, oder „nur ARP“, wenn das Gerät nicht auf Ping antwortet).
  • Typ-Badge wie Router · Linux/Unix oder Web-/IoT-Gerät · Windows — die geschätzte Kombination aus Gerätetyp und OS.
  • Statuspunkt: grün = per ICMP erreichbar, gelb = nur per ARP gesehen.
  • Discovery-Zeile: Klartext aus mDNS/SSDP/NetBIOS, z. B. UPnP: Router oder gefundene Dienste.
  • Bester Name: DNS- > mDNS- > NetBIOS-Name, falls vorhanden.
  • Banner-Zeile: z. B. HTTP: Microsoft-IIS/10.0 oder das SSH-Banner.
  • Port-Chips: offene Ports mit Dienstnamen (80 HTTP, 443 HTTPS, 139 NetBIOS, 445 SMB …).
  • MAC-Adresse unten, inkl. Erkennung randomisierter MACs (→ „Mobilgerät“).

4. Detail-Panel

Ein Klick auf eine Karte zeigt rechts alle Informationen gebündelt und die passenden Aktions-Buttons. Bei einer aktiven Kamera erscheint darunter das Video.

Detail-Panel

5. Aktionen per Kontextmenü

Rechtsklick auf eine Karte öffnet das Kontextmenü. Es zeigt nur, was zum Gerät passt:

Kontextmenü

Aktion Sichtbar wenn Verhalten
Im Browser öffnen Port 80/443/8080/8443 offen Öffnet die Weboberfläche (HTTPS bevorzugt)
SSH Port 22 offen Windows: startet ssh; Linux/macOS: kopiert den Befehl
RDP Port 3389 offen Windows: mstsc; sonst ausgeblendet
SMB-Freigabe Port 139/445 offen Windows: \\IP im Explorer; sonst smb://IP
IP / MAC / Name kopieren immer / wenn vorhanden In die Zwischenablage
Wake-on-LAN MAC bekannt Sendet ein Magic-Packet (UDP-Broadcast)

6. Kamera-Stream ansehen

Bei erkannten Kameras zeigt das Detail-Panel die RTSP-URL und einen Button „Stream öffnen“. Das Video läuft eingebettet im Fenster.

Kamera mit Live-Video

Falls eine Kamera für den Stream Zugangsdaten verlangt, trag sie vor dem Scan unter RTSP-Login ein. NetScanner rät keine Passwörter.

7. Ergebnisse exportieren

Über die Export-Buttons sicherst du die komplette Hostliste:

  • CSV — semikolongetrennt, passend für deutsches Excel.
  • JSON — strukturiert, für Weiterverarbeitung/Skripte.

8. Netzwerkkarte und Außenpfad

Der Knoten-Button oben im Header öffnet die Netzwerkkarte in einem eigenen Fenster (nicht-modal — du kannst parallel weiterscannen).

Netzwerkkarte

  • Stern-Topologie: das Gateway im Zentrum (ermittelt aus dem Default-Gateway, ersatzweise dem per UPnP erkannten Router), alle anderen Geräte ringsum.
  • Farbe = Gerätetyp (siehe Legende oben rechts).
  • Klick auf einen Knoten wählt das Gerät aus — das Detail-Panel im Hauptfenster springt sofort mit.
  • Aktualisieren zeichnet die Karte aus dem aktuellen Scan neu.

Unten die Leiste Außenpfad (traceroute): Ziel eingeben (Standard 8.8.8.8, leer = Gateway) und Pfad verfolgen — die Hops erscheinen live als Kette „Dieser PC → … → Ziel“.

Traceroute-Hop-Kette

Im flachen LAN ist der Weg zum Gateway genau ein Hop — Switches und Access-Points sind auf IP-Ebene unsichtbar. Interessant wird die Kette mit einem Internet-Ziel oder über Subnetzgrenzen hinweg.


Schwachstellen-Audit

Optional (Checkbox „Schwachstellen prüfen") testet NetScanner erkannte Kameras und Router auf zwei häufige Schwachstellen:

  • Offener RTSP-Stream: Der Stream antwortet ohne Zugangsdaten. Die Kamera wird markiert und die Vorschau automatisch geöffnet.
  • Werks-Login (Default-Credentials): Eine kuratierte Liste der gängigsten Werks-Zugänge (z. B. admin/admin, admin/12345, root/root) wird gegen den RTSP-Stream und das Web-Login (HTTP Basic/Digest) geprüft. Funktioniert einer, erscheint ein rotes Warn-Badge mit dem gefundenen Login; bei einer Kamera wird zusätzlich das Bild gezeigt.

Geprüft werden bewusst nur Kameras und Router/Gateways, nicht jeder Host. Form-basierte Web-Logins (Status 200 statt 401) werden nicht angetastet — nur HTTP-Basic/Digest. Es ist kein Brute-Force, sondern eine feste, kleine Liste dokumentierter Werks-Logins.

Nur im eigenen Netz. Default-Credential-Checks gegen fremde Systeme ohne ausdrückliche Erlaubnis können rechtlich relevant sein (in Deutschland u. a. § 202c StGB). Das Feature ist deshalb standardmäßig aus und muss bewusst aktiviert werden. Nutze es ausschließlich zum Absichern deiner eigenen Geräte.


Passwort-Leak-Check

Über das Schild-Symbol oben rechts öffnest du den Passwort-Leak-Check. Er beantwortet die Frage: Taucht das Passwort meiner Kamera oder meines Routers in bekannten Daten-Leaks auf? — ohne dass du es irgendwo hinterlegen musst.

Technisch läuft das über das k-Anonymity-Verfahren der „Pwned Passwords"-Datenbank von Have I Been Pwned — dasselbe, das Bitwarden, 1Password, Google und Firefox für ihre Leak-Warnungen nutzen:

  1. NetScanner bildet lokal den SHA-1-Hash des Passworts.
  2. Nur die ersten 5 Zeichen des Hashes gehen an die API.
  3. Die API liefert alle Hash-Endungen zu diesem Präfix zurück (mehrere hundert).
  4. Der Abgleich, ob dein Passwort dabei ist, passiert lokal.

Das Passwort und der vollständige Hash verlassen dein Gerät nie — die API kann nicht erkennen, welches Passwort geprüft wurde. Der Add-Padding-Header vereinheitlicht zusätzlich die Antwortgröße, sodass auch daraus kein Rückschluss auf einen Treffer möglich ist. Anders als beim Hinterlegen in einem Passwort-Manager bleibt das Passwort also vollständig bei dir.

Das ist bewusst kein Bruteforce gegen das Gerät: Du prüfst dein eigenes, bekanntes Passwort als Zeichenkette gegen eine Leak-Datenbank — es findet kein Zugriff auf ein System statt.

Zusätzlich schätzt NetScanner lokal (offline, ohne Übertragung) die Passwortstärke und übersetzt sie in eine Offline-Crackzeit gegen einen schnellen Hash (MD5 & Co., ~100 Mrd. Versuche/s) und einen langsamen (bcrypt). Das beantwortet die Frage, die der Leak-Check offenlässt: Wie lange hält ein nicht geleaktes Passwort gegen reines Durchprobieren? Gerade bei Altgeräten mit MD5-Speicherung ist das die relevante Kennzahl — dort entscheidet die Länge/Zufälligkeit, nicht die Listen-Treffer.


Expositions-Prüfung

Über das Globus-Symbol oben rechts beantwortet NetScanner die wichtigste Frage für eine Kamera im Heimnetz: Ist sie überhaupt von außen erreichbar? Denn die berüchtigten „offene Webcam"-Seiten listen Kameras, die exponiert sind und mit Werks- oder ohne Login laufen — nicht solche, deren starkes Passwort gebrochen wurde.

NetScanner fragt dazu deinen Router per UPnP-IGD (GetGenericPortMappingEntry) nach seinen aktiven Portweiterleitungen ab und gleicht jede mit den Scan-Ergebnissen ab. Du siehst dann schwarz auf weiß: „Port :554 → 192.168.x.y (Kamera)" heißt, dieser Kamera-Stream ist aus dem Internet erreichbar. Zusätzlich wird die öffentliche IP ermittelt, mit einem Direktlink, sie auf Shodan gegenzuprüfen. Die Abfrage ist rein lesend — es werden keine Weiterleitungen angelegt oder geändert.

Drei Dinge, die diese Prüfung dir nicht abnimmt, aber die zur Absicherung gehören: Hersteller-Cloud/P2P läuft an UPnP vorbei (in der Kamera-App selbst deaktivieren), UPnP am Router solltest du abschalten, wenn du es nicht brauchst, und der sicherste Fernzugriff ist ein VPN ins Heimnetz (z. B. WireGuard auf einem Raspberry Pi) statt einer nach außen offenen Kamera — kombiniert mit einem eigenen VLAN ohne Internet-Zugang für die Kamera.


Wie die Geräteerkennung funktioniert

NetScanner kombiniert mehrere Signale zu einer Einschätzung — bewusst ohne Raw-Sockets, also ohne erhöhte Rechte:

Signal Quelle Beispiel
TTL ICMP-Reply ≤64 → Linux/Unix/Android, ≤128 → Windows, höher → Netzwerkgerät
Offene Ports TCP-Connect 3389 → Windows, 22 → Linux, 9100/515/631 → Drucker, 5000/5001 → NAS, 62078 → iPhone
MAC-Hersteller OUI-Lookup Hersteller aus den ersten 3 MAC-Oktetten; gesetztes Locally-Administered-Bit → randomisierte (mobile) MAC
mDNS/Bonjour Multicast 224.0.0.251:5353 Chromecast, AirPlay, Drucker, Sonos, HomeKit …
NetBIOS UDP 137 Windows-/Samba-Name + Arbeitsgruppe
SSDP/UPnP Multicast 239.255.255.250:1900 Router, Media-Server, Smart-TV (aus dem SERVER-Header)
Banner HTTP-HEAD / SSH-Handshake Microsoft-IIS/10.0, nginx, OpenSSH_9.6

Hohe Konfidenz haben dabei UPnP-Typ und mDNS-Dienste; TTL/Ports/OUI ergänzen das Bild.


Plattform-Hinweise

  • Avalonia 12 + Video: Es wird bewusst nicht LibVLCSharp.Avalonia verwendet (das hängt an Avalonia 11). Stattdessen reicht NativeVideoView LibVLC direkt das native Fenster-Handle. Sobald das offizielle Paket auf 12 nachzieht, lässt sich NativeVideoView dagegen tauschen.
  • Wayland (KDE Plasma auf Bazzite): Native-Embedding läuft am stabilsten unter X11/XWayland. Avalonia nutzt unter Linux standardmäßig den X11-Backend; das XID-Handle funktioniert dann auch unter Wayland. Bleibt das Video schwarz, App testweise mit erzwungenem X11 starten.
  • ONVIF-Multicast & Firewall: WS-Discovery braucht ausgehenden UDP-Multicast auf Port 3702. In restriktiven Netzen kann das blockiert sein — die Port-Heuristik (554/8554) greift dann weiterhin.
  • Traceroute unter Linux: Die Hop-IPs sind unter Windows zuverlässig. Unter Linux liefert der unprivilegierte ICMP-Socket die Adresse des antwortenden Routers bei TTL-Ablauf nicht immer zurück — dann erscheint * * * statt der Hop-IP. Die Stern-Karte selbst ist davon nicht betroffen.
  • Mehrere Interfaces: Sweep und WS-Discovery laufen pro aktivem IPv4-Interface.

Logging

Konfiguration in nlog.config (wird neben die EXE kopiert, autoReload). Zielordner: %AppData%/NetScanner/logs (Windows) bzw. ~/.config/NetScanner/logs (Linux).

  • netscanner-<datum>.logalle Schritte (Debug+).
  • userinput-<datum>.lognur Benutzereingaben (Logger UserInput): Scan-Start mit Parametern, Abbruch, Stream-Öffnen, Feldänderungen.
  • Passwörter werden nie geloggt; RTSP-Credentials in URLs werden maskiert.

Projektaufbau

Schicht Datei(en) Aufgabe
Discovery Services/NetworkScanner.cs ICMP-Ping-Sweep (kein Raw-Socket), streamend
ARP/OUI Services/ArpResolver.cs, Services/OuiLookup.cs MAC-Auflösung + Herstellererkennung
Portscan Services/PortScanner.cs async TCP-Connect, gedrosselt via SemaphoreSlim
Fingerprinting Services/DeviceClassifier.cs, Services/BannerGrabber.cs Typ/OS aus TTL, Ports, OUI, Bannern
Discovery-Protokolle Services/MdnsDiscovery.cs, Services/NetBiosProbe.cs, Services/SsdpDiscovery.cs mDNS / NetBIOS / SSDP
ONVIF/RTSP Services/OnvifDiscovery.cs, Services/RtspProbe.cs WS-Discovery + RTSP-Probe
Wake-on-LAN Services/WolSender.cs Magic-Packet (UDP-Broadcast)
Traceroute Services/TracerouteService.cs ICMP mit ansteigender TTL
Orchestrierung Services/ScanOrchestrator.cs führt alles zusammen, klassifiziert Kameras
Video Controls/NativeVideoView.cs LibVLC in Avalonia 12 via NativeControlHost
UI/State ViewModels/MainViewModel.cs, Views/*.axaml MVVM, Audit-Logging, Netzwerkkarte

Bewusste Grenzen

  • TCP-Connect-Scan statt SYN-Scan — kein Raw-Socket, daher keine erhöhten Rechte nötig (und kein nmap-genaues OS-Fingerprinting).
  • Kein Passwort-Raten. ONVIF-GetStreamUri/RTSP-Credentials gibst du selbst an — gedacht für Geräte im eigenen Netz.
  • Traceroute zeigt keine LAN-Topologie, sondern nur den Pfad nach außen — innerhalb eines Subnetzes gibt es keine Hops.

Lizenz

© Kroste. Nutzung im eigenen Netz. Siehe Repository für Details.

NetScanner ist ein privates Werkzeug zur Inventarisierung des eigenen Netzwerks. Scanne nur Netze, für die du autorisiert bist.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages