Version: NetMon Dokumentation 1.1.19
Kompakte Zusammenstellung der zentralen Projekt- und Nutzerdokumentation.
.debDependsRecommendsSuggestsnetmon-darkDokumentierter Paket- und App-Stand: 1.1.19.
NetMon ist eine Linux-GUI fuer Netzwerk-, DNS-, Firewall-, VPN-, Security-, Radio- und Hilfsfunktionen. Der Startpfad liegt in netmon/main.py, die Hauptoberflaeche in netmon/app.py, und die Funktionslogik ist in Controller-, Service- und Tab-Module aufgeteilt.
NetMon kombiniert klassische Netzwerk-Werkzeuge, DNS-/DoT-Steuerung, Firewall- und Sicherheitspruefungen, VPN-Slots, Radio, Theme Studio, Linux-Hilfe und Chad-Analyse in einer Tk-/ttk-Oberflaeche. Der Code verwendet fuer die GUI tkinter, fuer den Start einen Splash-/Lock-/Crash-Flow und fuer viele Teilbereiche klar getrennte Controller- und Service-Module.
python -m netmon mit optionalen Modi --headless, --headless-smoke und --theme.System, Tools und Security.dpkg -V-Pruefung und streng geschuetzter manueller Referenzuebernahme.netmonroots.com und automatischer Weiterleitung auf die Downloadseite bei neueren Website-Releases.1.1.19.Screenshot-Platzhalter: Hauptfenster mit Haupttabs.
Screenshot-Platzhalter: Radio-Tab mit aktuellem Sender, Steuerung & EQ und projectM.
Screenshot-Platzhalter: Security-Bereich mit Firewall-/Monitoring-Ansicht.
requirements.txt: psutil, PySide6pyproject.toml: requires-python >=3.11tkinter wird in netmon/main.py fuer die GUI vorausgesetzt.Pillow (PIL) wird im Start-Splash optional verwendet.Pillow.ImageTk wird fuer Bild-/Log-Overlay-Pfade benoetigt; unter Debian/Ubuntu ist dafuer typischerweise python3-pil.imagetk erforderlich.requests wird im Online-AI-Service optional verwendet; ohne requests faellt der Code auf urllib zurueck.1.1.19scripts/build_netmon_deb.shdist/netmon_<version>_all.debudisks2, cryptsetupnetmonnetmon-uninstallnetmon.desktopnetmon-uninstall.desktopnetmon.pngnetmon-radio.png als Radio-spezifisches Asset1.1.19python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
./.venv/bin/python -m netmon --headless
./.venv/bin/python -m netmon
Wenn tkinter fehlt, meldet netmon/main.py explizit den Debian/Ubuntu-Hinweis sudo apt install -y python3-tk.
./.venv/bin/python -m netmon --headless./.venv/bin/python -m netmonSettings / Theme Studio Theme und Sprache pruefen.sudo nutzen./media/happy/Work2/netmon-lab siehe LAB_WORKFLOW.md.scripts/lab/init_test_run.sh vorbereiten.NetMon verweist im aktuellen Stand auf GPL-3.0-or-later. Relevante Dateien:
LICENSETHIRD_PARTY_NOTICES.mdpackaging/netmon.metainfo.xmlProjekt-/Support-Kontakte im aktuellen Stand:
info@netmonroots.comsupport@netmonroots.comSiehe CHANGELOG.md.
NetMon ist eine Linux-Anwendung mit grafischer Oberfläche auf Basis von tkinter/ttk. Der Code verbindet Netzwerkwerkzeuge, DNS-/Firewall-Steuerung, Sicherheitspruefungen, Radio, Theme Studio, Linux-Hilfe, Cleanup-Funktionen und Chad-Analyse in einer einzigen Anwendung.
NetMon ist laut Codebasis eine Desktop-Anwendung fuer Netzwerk- und Security-Aufgaben mit zusaetzlichen Hilfsfunktionen. Der zentrale Einstiegspunkt ist netmon/main.py, die Hauptklasse ist App in netmon/app.py.
>=3.11 laut pyproject.toml.tkinter laut Startpfad in netmon/main.py.requirements.txt: psutil, PySide6.Pillow fuer Splash/Logo-Verarbeitung, requests fuer Onlinezugriffe, openpyxl fuer Linux-Hilfe-Import.python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
./.venv/bin/python -m netmon --headless
./.venv/bin/python -m netmon
Wenn beim GUI-Start tkinter fehlt, verweist netmon/main.py auf sudo apt install -y python3-tk.
ufw, wg-quick, resolvectl, traceroute, mtr, nmap, iftop, htop, tcpdump, wireshark, flatpak oder projectM.Trace, Verbindungen, MTR, Nmap, iftop und htop bilden den Kern fuer Netzwerkbeobachtung und klassische Netzwerktests.Trace/Verbindungen sowie Tools-Untertabs.DNSControlService; der App-Code fuehrt Statusvariablen fuer Resolver, Konflikte, DNS Guard und DoT.netmon/ui/tabs/security_tabs.py; die Logik steckt in separaten Controllern.netmon/netmon_radio_app.py, netmon/netmon_radio_core.py und netmon/features/radio_controller.py.AiOnlineService, Prompt-Aufbereitung ueber AiAnalysisService.System liegen Untertabs fuer allgemeine Systemansicht, HDD, Links und VPN-Slots.netmon/ui/tabs/system_tab.py, hdd_tab.py, links_tab.py und vpn_slots_tab.py.Server-ID legt einen festen Speedtest-Server fest. Ein leeres Feld verwendet die automatische Serverauswahl des installierten Speedtest-CLI.Server-ID, darunter Speichern, dann Server-IDs abrufen, Speedtest starten und Speedtest-Verlauf.Server-IDs abrufen fragt asynchron bis zu 20 verfuegbare beziehungsweise nahe Server ab und schreibt ID, Anbieter, Ort, Land und vorhandene Entfernungsangaben in das NetMon-Log.Server-ID eingetragen und mit Speichern uebernommen werden. Die Abfrage traegt keine ID automatisch ein und startet noch keinen Geschwindigkeitstest.speedtest als auch das Python-Werkzeug speedtest-cli; die konkret verfuegbare Serverliste wird vom jeweiligen Online-Dienst geliefert.Secure Browser erstellt fuer ausgewaehlte Webdienste getrennte, gehaertete Firefox-Instanzen mit jeweils eigenem Profil.Dokumente/NetMon/Secure Browser; NetMon legt den Ordner beim ersten Zugriff automatisch an. Ein abweichender XDG-Dokumentenordner wird beruecksichtigt.Dry-Run pruefen und erst anschliessend mit Anlegen installieren.Setup -> Tour steht Secure Browser als eigene deutsche oder englische Tour bereit. Die Volle Tour enthaelt diesen Abschnitt automatisch.Installierte Secure Browser ebenfalls deinstallieren? [y/N]. Bei N bleiben Browser, Profile und Starter auch dann erhalten, wenn andere NetMon-Dokumente entfernt werden. Bei Y entfernt der Deinstaller die dedizierte Browser-Ablage, erkannte Legacy-Container und deren NetMon-Menueeintraege.Schnellscan-Pfade oeffnet einen Dialog fuer die Standardordner Downloads, Desktop, Dokumente und Documents. Zusaetzliche eigene Ordner lassen sich hinzufuegen und wieder entfernen.Standard aktiviert wieder alle vorhandenen Standardordner und entfernt die eigenen Eintraege aus der Auswahl.--infected-Ausgabe kann sie waehrend des Laufs noch bei 0 stehen.Scan abbrechen beendet den laufenden ClamAV-Prozess kontrolliert. Ein Schnellscan hat zusaetzlich ein Zeitlimit von 15 Minuten.XDG_DATA_HOME/netmon/clamav-db beziehungsweise ~/.local/share/netmon/clamav-db. NetMon verwendet nur ein eigenes, nicht fuer andere Nutzer zugaengliches Verzeichnis mit vorhandenen .cvd- oder .cld-Dateien.ps -o pid,etime,%cpu,cmd -C clamscan
ELAPSED zeigt die bisherige Laufzeit und %CPU die aktuelle Prozessauslastung. Die vollstaendige, nicht abgeschnittene Kommandozeile inklusive Scanpfaden zeigt:
ps -efww | grep '[c]lamscan'
Eine hohe CPU-Auslastung bedeutet normalerweise, dass ClamAV noch arbeitet. clamscan --infected liefert jedoch keine verlaessliche Live-Dateinummer; die endgueltige Anzahl steht erst nach Abschluss in der Scan-Zusammenfassung.
dpkg -V-Meldungen als erwartete Systemaenderung, pruefenswert oder kritisch ein.Vertrauenswuerdige Referenz uebernehmen bleibt deaktiviert, bis ein vollstaendiger Scan niedriges Risiko meldet und dpkg -V nur erwartete Aenderungen zeigt.sudo rkhunter --propupd wird ausschliesslich nach einer ausdruecklichen Bestaetigung ausgefuehrt. NetMon startet diesen Befehl niemals automatisch.show_firewall_status_clean() wird ein Link Zur Firewall springen angehaengt.Theme Studio dient zum Anpassen des Pop-Testprofils.Als Prompt mit PDF. Dieser PDF-Prompt ist fuer externe Erklaerung und PDF-Erstellung gedacht; NetMon erzeugt diese PDF nicht lokal.PDF importieren in NetMon anzeigen.| Problem | Ursache im Code | Loesung / Workaround |
|---|---|---|
| GUI startet nicht | tkinter fehlt oder DISPLAY ist nicht gesetzt (netmon/main.py) |
python3-tk installieren oder --headless verwenden; bei Remote-Umgebungen X11/Wayland weiterreichen. |
| NetMon startet nicht erneut | Instanz-Lock aktiv (acquire_netmon_instance_lock) |
Laufende Instanz beenden oder alten Prozess pruefen. |
| Onlineanalyse funktioniert nicht | OPENAI_API_KEY fehlt (AiOnlineService) |
API-Key als Umgebungsvariable setzen. |
| Linux-Hilfe erzeugt keine PDF direkt | Der aktuelle Workflow ist bewusst auf Prompt-Kopie, externen PDF-Build und Import ausgelegt | Oben Als Prompt mit PDF nutzen, PDF extern erstellen/herunterladen und unten ueber PDF importieren laden. |
| projectM laesst sich nicht starten | projectM ist optional und wird gesondert erkannt | projectM/Flatpak-Pfade pruefen; im Radio-UI den Installationshinweis nutzen. |
| Packet Capture / Wireshark fehlt | Wireshark-/tshark-Launcher nicht installiert | Wireshark installieren; der Packet-Capture-Bereich enthaelt einen Installationshinweis. |
| DNS-/Firewall-Aktionen scheitern | Viele Systemaktionen benoetigen sudo -n oder eine frische sudo-Session |
Sudo-Session erneuern und mit passender Linux-Umgebung arbeiten. |
| Secure Browser erreicht eine benoetigte Seite nicht | Der Website-Filter erlaubt nur die konfigurierte Domain-Liste | Dry-Run und Whitelist pruefen; nur die konkret benoetigten Login-, Zahlungs- oder CDN-Domains ergaenzen. |
| ClamAV-Schnellscan dauert unerwartet lange | Zu viele oder grosse eigene Scanpfade, Archive, viele kleine Dateien oder langsame Datentraeger | Unter Schnellscan-Pfade die Auswahl verkleinern; Prozessstand mit ps -o pid,etime,%cpu,cmd -C clamscan pruefen. |
ClamAV zeigt waehrend des Scans 0 Dateien |
clamscan --infected liefert die verwertbare Dateisumme erst in der Abschlussausgabe |
Laufzeit und Prozess im Terminal beobachten; die endgueltige Dateizahl nach Scanende ablesen. |
| Ursache | Beobachtung | Loesung |
|---|---|---|
Linux Hilfe fuehrt riskante Befehle nicht direkt aus |
Der Bereich ist als Referenz-, Prompt- und Bibliotheksfunktion ausgelegt | Befehle pruefen, Prompts extern nutzen und PDFs ueber die Bibliothek verwalten. |
| Sprachpaket-Hinweis nennt spaetere Vollumsetzung | Sprachunterstuetzung ist vorhanden, aber der Hinweistext ist noch konservativ | Sprachdateien in netmon/lang/ pruefen und bei Bedarf erweitern. |
Lizenz-/Dokumentations-/Video-Links enthalten Platzhaltertexte in app.py |
Nicht alle Hilfe-/Info-Links sind produktiv angebunden | Externe Hilfe nur verwenden, wenn konkrete Inhalte hinterlegt sind. |
python -m netmon --headless fuehrt den Headless-Snapshot aus.
python -m netmon --headless-smoke erstellt die GUI einmal und beendet sie wieder.
--theme akzeptiert laut netmon/main.py die Werte dark, light, beige und pop.
Standardmaessig unter ~/.config/netmon bzw. XDG_CONFIG_HOME/netmon.
Standardmaessig unter ~/.local/state/netmon bzw. XDG_STATE_HOME/netmon.
Im Startpfad werden fehlendes tkinter, fehlendes DISPLAY, Tk-Fehler und weitere Bootstrap-Fehler explizit behandelt. NetMon schreibt dabei ein Startprotokoll nach ~/Documents/NetMon/diagnostics bzw. ~/Dokumente/NetMon/diagnostics und erzeugt zusaetzlich strukturierte Diagnoseberichte als netmon-*.json.
Im Bereich Einstellungen -> Support / Diagnose kann der Benutzer ein Supportpaket erzeugen. Dieses ZIP landet unter ~/Documents/NetMon/support bzw. ~/Dokumente/NetMon/support und enthaelt das aktuelle Start-/Crash-Protokoll sowie den neuesten Diagnosebericht. Zusaetzlich gibt es im About-/Bugreport-Bereich ein Formular, dessen Angaben als Nutzermeldung in das Supportpaket aufgenommen werden.
Vor dem Export zeigt NetMon im Support-Bereich ausserdem einen sichtbaren Datenschutzhinweis an: Diagnosepakete dienen nur der Fehleranalyse, koennen aber je nach Fall Hostnamen, Benutzernamen, Dateipfade oder IP-Adressen enthalten und sollten vor dem Versand kurz geprueft werden.
Nein. netmon/main.py verwendet einen Instanz-Lock und beendet weitere Starts mit einer Fehlermeldung.
Im DNS-Tab gibt es den Schalter DNS Guard aktivieren; Statusvariablen und Logmeldungen werden im Code gesetzt.
Er ueberwacht die aktiven DNS-Server, bewertet Abweichungen und kann je nach Zustand eine Auto-Korrektur anstossen.
Die App fuehrt DoT-Statusvariablen wie dot_status_var, dot_server_var und dot_last_test_var.
Als Radio-Tab im verschachtelten Tools-Notebook.
Ja. Der Code in netmon/netmon_radio_core.py und netmon/features/radio_controller.py verwaltet Host-/Handover-/Attach-Dateien fuer eingebetteten und losgeloesten Betrieb. Das losgeloeste Standalone-Radio laeuft dabei aktuell ausschliesslich im Darkmode.
Im State-Verzeichnis, standardmaessig als radio_db.json und radio_db_meta.json.
Das Theme Studio bietet Theme speichern und Theme laden; Profile landen unter ~/Documents/NetMon/ThemeStudio oder ~/Dokumente/NetMon/ThemeStudio.
Nein. Laut UI-Hinweis wirkt Theme Studio nur auf das Testprofil Pop.
Der Online-Service liest OPENAI_API_KEY und sendet Requests an /v1/responses.
Der Online-Service antwortet mit Kein API-Key gesetzt und fuehrt keine Onlineanalyse aus.
Im Hauptnotebook gibt es die Bereiche System, Tools und Security mit jeweils eigenem Unter-Notebook.
Ja. Packet-Capture-Controller und UI enthalten Wireshark-/tshark-Erkennung und einen Button In Wireshark oeffnen.
Im Tab Log; dort existiert auch der Link aus dem Firewall-Status direkt in den Firewall-Bereich.
Im About-Dialog kann NetMon die aktuelle Website-Version ueber netmonroots.com/latest-version.json pruefen. Wenn online eine neuere Version gemeldet wird, kann NetMon direkt auf die Downloadseite weiterleiten.
XDG_CONFIG_HOME/netmon oder ~/.config/netmon (netmon/core/state.py).XDG_STATE_HOME/netmon oder ~/.local/state/netmon (netmon/core/state.py).~/Documents/NetMon oder ~/Dokumente/NetMon (netmon/core/state.py).~/Documents/NetMon/diagnostics oder ~/Dokumente/NetMon/diagnostics (netmon/core/diagnostics.py).~/Documents/NetMon/support oder ~/Dokumente/NetMon/support (netmon/core/support_bundle.py).~/Documents/NetMon/ThemeStudio oder ~/Dokumente/NetMon/ThemeStudio (app.py).~/Documents/NetMon/LinuxHelp oder ~/Dokumente/NetMon/LinuxHelp mit pdfs/ und meta/ (netmon/services/linux_help_library_service.py).XDG_DATA_HOME/netmon/clamav-db oder ~/.local/share/netmon/clamav-db (netmon/features/clamav_controller.py).| Datei | Standardort | Zweck |
|---|---|---|
config.json |
Config | App-Einstellungen (self.netmon_config_path) |
ai_config.json |
Config | Chad-/AI-bezogene Einstellungen (self.ai_config_path) |
linux_help_commands.json |
Config | Linux-Hilfe-Daten |
netmon_hdd_slots.json |
Config | HDD-Slot-Konfiguration |
netmon_link_slots.json |
Config | Link-Slot-Konfiguration |
netmon_vpn_slots.json |
Config | VPN-Slots |
netmon_primary_vpn_slots.json |
Config | Primaere VPN-Slots |
netmon_privacy.json |
Config | Privacy-/DNS-/VPN-Einstellungen |
radio_stations.json |
Config | Radio-Stationen |
radio_favorites.json |
Config | Radio-Favoriten |
radio_settings.json |
Config | Radio-Einstellungen |
Die Schnellscan-Auswahl liegt in config.json:
clamav_quickscan_targets: aktivierte Standardordner (downloads, desktop, documents_de, documents_en).clamav_quickscan_custom_paths: zusaetzliche, vom Benutzer ausgewaehlte absolute Ordnerpfade.Schnellscan-Pfade geaendert und auf den Standard zurueckgesetzt werden.| Datei / Ordner | Standardort | Zweck |
|---|---|---|
radio_db.json |
State | Radio-Datenbank |
radio_db_meta.json |
State | Radio-DB-Metadaten |
radio_host_state.json |
State | Host-Status fuer eingebetteten Radio-Betrieb |
radio_attach_request.json |
State | Attach-Anforderung |
radio_standalone_attach_request.json |
State | Standalone-Attach-Anforderung |
radio_standalone_show_request.json |
State | Show-Anforderung fuer Standalone-Radio |
radio_detached_state.json |
State | Status fuer losgeloesten Player |
radio_handover_request.json |
State | Handover an externen Player |
radio_handover_ack.json |
State | Handover-Bestaetigung |
netmon_security_baseline.json |
State | Security-Baseline |
startup_guard_baseline.json |
State | Startup-Guard-Baseline |
startup_guard_trustlist.json |
State | Startup-Guard-Trustlist |
repository_guard_baseline.json |
State | Repository-Guard-Baseline |
repository_guard_trustlist.json |
State | Repository-Guard-Trustlist |
process_guard_trustlist.json |
State | Process-Guard-Trustlist |
roots_baseline_guard_baseline.json |
State | Roots-Baseline-Guard-Baseline |
roots_baseline_guard_whitelist.json |
State | Roots-Baseline-Guard-Whitelist |
netmon_clamav_findings.json |
State | Persistierte ClamAV-Funde |
captures/ |
State | Packet-Capture-Dateien |
logs/speedtest_history.jsonl |
State | Speedtest-Historie |
logs/ |
State | Laufzeit- und Feature-Logs, z. B. speedtest_history.jsonl |
WireGuard/ |
Documents | NetMon-Importordner fuer lokale WireGuard-Profile |
LinuxHelp/pdfs/ |
Documents | Importierte Linux-Hilfe-PDFs |
LinuxHelp/meta/ |
Documents | JSON-Metadaten zu importierten Linux-Hilfe-PDFs |
| Datei / Ordner | Standardort | Zweck |
|---|---|---|
startup_error.log |
Documents/diagnostics | Startfehlerprotokoll mit Bootstrap- und GUI-Startfehlern |
crash.log |
Documents/diagnostics | Sammellog fuer Laufzeitabstuerze |
netmon-*.json |
Documents/diagnostics | Strukturierte Diagnoseberichte fuer Start- und Laufzeitfehler |
netmon-support-*.zip |
Documents/support | Supportpaket mit Manifest, Diagnosebericht und Fehlerprotokollen |
netmon/config/constants.py: 1.1.19light als bevorzugtes Theme in App.__init__.dark als Start- und Laufzeittheme; der eingebettete Radio-Tab folgt weiter dem NetMon-/Radio-Theme.gpt-4.1-mini.False / inaktiv, mehrere Statusvariablen initialisieren auf Platzhaltertexte.https://netmonroots.com/latest-version.json pruefen und bei einer neueren Website-Version auf die Downloadseite verweisen.scripts/, z. B. backup_dev_lab.sh, restore_dev_lab_backup.sh und restore_selected_dev_lab_backup.sh.safe_write_json() oder lokale JSON-Schreiber.App.__init__, _default_settings_payload() und Feature-Modulen; nicht jedes Setting ist separat kommentiert./etc/wireguard/*.confDocuments/NetMon/WireGuard bzw. Dokumente/NetMon/WireGuardwireguard-Connectionsvpn-Connections mehr als WireGuard-Profile in den NetMon-Profilpool aufgenommen.Im Code wurden folgende Arten von Netzwerkzugriffen gefunden:
resolvectl, nmcli und systemnahe Linux-Kommandos im DNSControlService.port_analysis.py, Trace, MTR, Nmap, iftop, Packet Capture).AiOnlineService (https://api.openai.com/v1/responses).netmon_radio_app.py auf Radio-Browser-Endpunkte und Logo-/DB-Downloads.DNSControlService enthaelt Reparatur- und Policy-Funktionen fuer DNS-/DoT-/NetworkManager-Konfigurationen.sudo -n nmcli, sudo -n mkdir, sudo -n install, sudo -n rm und sudo -n systemctl restart systemd-resolved.sudo -n true und kann ueber renew_sudo_timestamp() eine frische sudo-Session anfordern.sudo-nahe Systemkommandos.run_sudo_command-Pfade als bestaetigungspflichtig und nutzt einen separaten ensure_sudo_session-Flow.rkhunter --propupd kann manipulierte Dateieigenschaften als neue Referenz akzeptieren und ist deshalb besonders geschuetzt:
dpkg -V-Pruefung sind erforderlich.Niedrig sein.freshclam-Update schreibt Signaturen nach XDG_DATA_HOME/netmon/clamav-db oder ersatzweise ~/.local/share/netmon/clamav-db, nicht in einen vorhersagbaren gemeinsamen /tmp-Ordner.clamscan --database werden Eigentuemerschaft, Verzeichnistyp und fehlende Gruppen-/Fremdrechte geprueft..cvd- oder .cld-Signaturen akzeptiert. Andernfalls wird auf eine gueltige Systemdatenbank unter /var/lib/clamav beziehungsweise auf die ClamAV-Standardsuche zurueckgefallen.argv, cwd, DISPLAY und optional Stacktraces in ~/Documents/NetMon/diagnostics/startup_error.log bzw. ~/Dokumente/NetMon/diagnostics/startup_error.log.netmon-*.json im Diagnoseordner erzeugen.Support / Diagnose in den Einstellungen oder ueber den About-/Bugreport-Bereich kann der Benutzer ein Supportpaket als ZIP fuer den Versand an den Support erzeugen.AiAnalysisService redigiert inhaltlich mehrere sensible Muster (Bearer-Token, API Keys, E-Mail-Adressen, Home-Pfade, Passphrasen), bevor Inhalte in Prompts fliessen.AiOnlineService verwendet OPENAI_API_KEY aus der Umgebung und sendet Inhalte an die OpenAI-Responses-API.blockieren, ausser explizit erlaubt. Eine breite Whitelist oder deaktivierter Filter reduziert die Schutzwirkung.| Bereich | Risiko | Beleg im Code |
|---|---|---|
| Systemkommandos | Viele Aktionen veraendern Netzwerk-, DNS- oder Firewall-Zustand auf dem Host | sudo -n-Kommandos in netmon_network_service.py, dns_control_service.py, firewall_controller.py |
| Onlineanalyse | Inhalte werden an einen externen API-Dienst gesendet | AiOnlineService |
| Start-Error-Logging | Startlog schreibt Umgebungsdaten und Stacktraces in Datei | netmon/main.py |
| Packet Capture | Rohdaten aus dem Netzwerk koennen lokal gespeichert und in Wireshark geoeffnet werden | Packet-Capture-Tab/Controller |
| Detached Radio | Handover-/Status-Dateien im State-Verzeichnis steuern Prozesswechsel | netmon_radio_core.py |
safe_write_json() fuer viele Persistenzpfade.AiAnalysisService.sudo-Session ausfuehren.Die in scripts/build_security_audit_pdf.py aufgefuehrten Punkte K1 bis K9 sind im Audit selbst nicht als bestaetigte Sicherheitsluecken bewertet, sondern als ausgeschlossene Kandidaten mit niedriger Konfidenz.
| ID | Thema | Audit-Status | Einordnung | Aktueller Repo-Status |
|---|---|---|---|---|
K1 |
Git-Subcommand-Passthrough | ausgeschlossen | Lokaler Entwicklerpfad, kein LLM- oder Netzwerk-Input in run_command() |
zusaetzlich gehaertet: Git-Subcommand-Allowlist in agent/runner.py |
K2 |
WireGuard-Endpoint in UFW-Killswitch | ausgeschlossen | Profil liegt root-owned; Audit sah keinen realistischen Remote-Pfad | zusaetzlich gehaertet: Endpoint-Host wird als feste IP validiert |
K3 |
UFW-Quelle any im Firewall-Formular |
ausgeschlossen | beabsichtigte Admin-Funktion mit Warnung, Vorschau und Bestaetigung | unveraendert, weiter als kontextuell unkritisch bewertet |
K4 |
Vorhersagbarer ClamAV-Temp-Pfad | ausgeschlossen | Audit sah keinen sinnvollen Code-Execution-Pfad ueber signierte ClamAV-Daten | zusaetzlich gehaertet: symlink-sichere Verzeichniserstellung |
K5 |
Dateipfad in image_to_data_url() |
ausgeschlossen | bewusster Upload-Fluss, Bildtypen-Restriktion, Dateidialog | zusaetzlich gehaertet: Pfad auf Benutzer-Home begrenzt |
K6 |
WireGuard-Import via nmcli |
ausgeschlossen | nmcli/NetworkManager fuehrt wg-quick-Hooks nicht aus |
unveraendert, weiter als unkritisch bewertet |
K7 |
WireGuard-Import via wg-quick |
ausgeschlossen | manueller Admin-Import, kein automatischer wg-quick up-Pfad |
unveraendert, weiter als unkritisch bewertet |
K8 |
Shell-Snippet-Generierung im Repository-Guard | ausgeschlossen | Snippet wird nur angezeigt bzw. kopiert, nicht automatisch ausgefuehrt | zusaetzlich gehaertet: shlex.quote() fuer Shell-Werte |
K9 |
Symlink-Bypass im Roots-Baseline-Guard | ausgeschlossen | Audit bewertete den praktischen Mehrwert des Bypasses als gering | zusaetzlich gehaertet: os.path.realpath() vor Guard-Match |
Kurz gesagt: K1 bis K9 sind keine bestaetigten Sicherheitsbefunde aus dem Audit. Teile davon wurden spaeter trotzdem als Defense-in-Depth-Massnahmen technisch gehaertet.
netmon/features/radio_controller.pyRadio-Stationen aus externen Quellen wie radio-browser.info wurden zuvor ohne Schema-Validierung weiterverarbeitet. Dadurch konnten praepartierte URLs bis an mpv und an urllib.request.urlopen() gelangen.
Der aktuelle Codestand haertet diesen Pfad zentral in normalize_station_entry():
http, https, rtsp und rtmpurl und url_resolved werden beide normalisiertZiel der Aenderung ist, unnoetige SSRF- oder lokale Protokollpfade aus externen Stationslisten gar nicht erst in nachgelagerte Playback- oder Metadaten-Funktionen zu uebernehmen.
netmon/core/rkhunter_manager.pyDer Rueckgabewert von shutil.which() durfte nicht ungeprueft in WEB_CMD=... fuer rkhunter.conf uebernommen werden, weil rkhunter --update diesen Pfad spaeter mit Root-Rechten ausfuehrt.
Der aktuelle Codestand begrenzt _preferred_web_cmd() auf vertrauenswuerdige Pfade:
/usr/bin/, /bin/ und /usr/local/bin/~/.local/bin/wget werden verworfenWEB_CMD leerZiel der Aenderung ist, PATH-Hijacking und moegliche Privilege Escalation ueber manipulierte Benutzer-Binaries zu verhindern.
agent/runner.pyDer lokale Agent-Runner pruefte urspruenglich nur den Basisbefehl (black, ruff, pytest, ls), aber keine uebergebenen Pfadargumente. Dadurch konnten absolute Pfade ausserhalb des Repositories an Schreib- oder Lese-Tools weitergereicht werden.
Der aktuelle Codestand haertet run_command() zusaetzlich:
black, ruff, pytest und ls werden kanonisiertREPO_ROOTpytest-Node-IDs wie tests/test_x.py::test_name werden korrekt aufden Dateipfad reduziert und geprueft
Ziel der Aenderung ist, Dateikorruption und Information Disclosure ausserhalb des Repositories ueber Prompt-Injection oder untrusted CLI-Eingaben zu verhindern.
netmon/features/fun_controller.pyDer Fun-Launcher startet Python-Dateien aus dem Code-the-Classics-Bereich ueber subprocess.Popen(["python3", path]). Der aktuelle Codestand begrenzt diesen Pfad jetzt zusaetzlich:
.py-Dateien innerhalb von fun_games_dirrealpath() gegen den Spieleordner geprueftZiel der Aenderung ist, das Starten beliebiger Python-Dateien ausserhalb des verwalteten Spielebereichs defensiv zu verhindern.
NetMon ist eine monolithische Tk-/ttk-Desktop-Anwendung mit einer grossen zentralen App-Klasse und ausgelagerter Fachlogik in Controllern, Services, Core-Helfern und UI-Tab-Builders.
flowchart TD
A[python -m netmon] --> B[netmon/__main__.py]
B --> C[netmon/main.py]
C --> D{CLI-Modus?}
D -- headless --> E[run_headless_snapshot]
D -- headless-smoke --> F[run_headless_smoke]
D -- GUI --> G[Startup-Checks
tkinter / DISPLAY / Lock / Splash]
G --> H[App in netmon/app.py]
H --> I[Main Notebook]
I --> J[System Notebook]
I --> K[Tools Notebook]
I --> L[Security Notebook]
H --> M[Controller in netmon/features]
H --> N[Services in netmon/services]
H --> O[Core-Helfer in netmon/core]
H --> P[Radio Core / Detached Radio]
flowchart LR
App[App]
App --> MainNB[Hauptnotebook self.nb]
MainNB --> Log[Log]
MainNB --> Trace[Trace]
MainNB --> Conn[Verbindungen]
MainNB --> DNS[DNS]
MainNB --> Chad[Chad]
MainNB --> Download[Download Scan]
MainNB --> Settings[Settings]
MainNB --> SystemMain[System]
MainNB --> ToolsMain[Tools]
MainNB --> SecurityMain[Security]
SystemMain --> SystemNB[system_nb]
ToolsMain --> ToolsNB[tools_nb]
SecurityMain --> SecurityNB[security_nb]
flowchart TD
App --> Features[features/*_controller.py]
Features --> Services[services/*.py]
Features --> Core[core/*.py]
App --> Tabs[ui/tabs/*.py]
Tabs --> App
App --> RadioCore[netmon_radio_core.py]
App --> SecurityParser[netmon_security_parser.py]
App --> SecurityStore[netmon_security_store.py]
Services --> State[state.py]
Services --> Utils[utils.py]
flowchart LR
Config[~/.config/netmon] --> AppCfg[config.json / ai_config.json]
Config --> Slots[HDD/Link/VPN/Privacy/Radio JSON]
Config --> LinuxHelp[linux_help_commands.json]
Config --> RadioCfg[radio_stations.json / radio_favorites.json / radio_settings.json]
Data[XDG_DATA_HOME/netmon] --> ClamDb[clamav-db / Benutzersignaturen]
State[~/.local/state/netmon] --> Sec[security / startup / repository / roots baseline Dateien]
State --> RadioState[radio_db.json / handover / attach / detached state]
State --> Logs[startup_error.log / logs/speedtest_history.jsonl]
State --> Capture[captures/]
tkinter/ttk.app.py mit Light, Dark, Beige und Pop sowie Theme Studio fuer das Pop-Profil.netmon/features/ kapseln UI-nahe Aktionen und Dateipfade.netmon/services/ kapseln Parser, Policies, Guards oder Onlinezugriffe.netmon/core/ kapseln Basiskommandos, Locking, Crash-Handling, Pfad- und Formatierungslogik.clamav_controller.py verwaltet Scanarten, Schnellscan-Konfiguration, Fortschrittsanzeige, Signaturauswahl, Befunde und Quarantaene.security_audit_controller.py orchestriert RKHunter-Scans und Referenzupdates; rkhunter_analysis_service.py klassifiziert die Ausgabe und liefert die Gate-Evidenz.NetmonNetworkService: sudo-nahe Adapter fuer WireGuard und UFW.DNSControlService: Resolver-/VPN-/DoT-/DNSSEC-Evaluation und Reparaturen.port_analysis.py, speedtest.py, Trace-/MTR-/Nmap-/iftop-/htop-Tabs: klassische Netzwerkanalyse.netmon/core/state.py.netmon/config/constants.py.App.__init__.flowchart TD
subgraph Core
C1[command.py]
C2[state.py]
C3[utils.py]
C4[lock.py]
C5[crash.py]
end
subgraph Services
S1[dns_control_service.py]
S2[ai_online_service.py]
S3[repository_guard_service.py]
S4[startup_guard_service.py]
S5[path_guard_service.py]
S6[process_guard_service.py]
S7[rkhunter_analysis_service.py]
end
subgraph Features
F1[dns_controller.py]
F2[firewall_controller.py]
F3[vpn_controller.py]
F4[radio_controller.py]
F5[security_monitoring_controller.py]
F6[security_audit_controller.py]
F7[repository_guard_controller.py]
F8[clamav_controller.py]
end
subgraph UI
U1[ui/tabs/*.py]
U2[ui/widgets/*.py]
end
App[app.py] --> Core
App --> Services
App --> Features
App --> UI
Features --> Services
Features --> Core
UI --> App
Diese Datei beschreibt die Soll-Struktur fuer netmon als .deb auf Basis des aktuellen Repository-Stands.
Aktueller dokumentierter Paketstand: 1.1.18.
Die .deb soll die startfaehige NetMon-Anwendung enthalten, inklusive aller zur Laufzeit benoetigten Python-Module aus dem Repo, der Desktop-Integration und der statischen App-Daten. Entwicklungsdateien, Tests, Backups und Build-Artefakte gehoeren nicht ins Paket.
DEBIAN/controlDEBIAN/postinstDEBIAN/prerm/usr/bin/netmon/usr/bin/netmon-uninstall/usr/share/applications/netmon.desktop/usr/share/applications/netmon-uninstall.desktop/usr/share/icons/hicolor/256x256/apps/netmon.pngBasisziel: /usr/lib/netmon/netmon/
Direkt unter /usr/lib/netmon/netmon/:
__init__.py__main__.pymain.pyapp.pynetmon_ops.pynetmon_network_service.pynetmon_state_coordinator.pynetmon_security_parser.pynetmon_security_store.pynetmon_projectm_sidecar.pynetmon_radio_app.pynetmon_radio_core.pylinux-befehle.csvUnterverzeichnisse, die komplett mitgenommen werden sollen:
/usr/lib/netmon/netmon/config//usr/lib/netmon/netmon/core//usr/lib/netmon/netmon/features//usr/lib/netmon/netmon/lang//usr/lib/netmon/netmon/modules//usr/lib/netmon/netmon/services//usr/lib/netmon/netmon/ui//usr/share/netmon/assets/log-pics/tools/Log-Pics/features/Code-the-Classics.zip/usr/lib/netmon/netmon/features/Code-the-Classics.ziptools/MD2 Presets Edited for projectM 4.x/tools/mdpresets/, falls wir diese kuratieren wollen/usr/lib/netmon/tools/tools/.debtests/backups/dist/.venv/venv/__pycache__/.pytest_cache/.ruff_cache/Die bisherige control-Datei im Build-Skript ist zu schmal und teilweise veraltet. Sie basiert noch auf einem kleineren Altpaket.
DependsDiese Abhaengigkeiten sind fuer einen normalen GUI-Start plausibel und sollten als erste Zielmenge gelten:
python3python3-tkpython3-psutilpython3-pilpython3-pil.imagetkudisks2cryptsetupRecommendsDiese Tools werden laut Code aktiv genutzt, sind aber eher Feature-bezogen als fuer den nackten Start zwingend:
network-managersystemd-resolveddnsutilswireguard-toolsufwtraceroutemtrnmapiproute2iftophtoplynisrkhunterclamavclamav-freshclamspeedtest-climpvwhoisSuggestsDiese Komponenten sind optional oder eher Zusatzfunktionen:
projectmprojectm-pulseaudiowiresharktsharkpython3-pypdf2python3-docxpython3-pygamepython3-pgzerorequirements.txt nennt aktuell psutil und PySide6.python -m netmon laeuft aber ueber netmon/main.py und netmon/app.py, die auf tkinter setzen.Pillow wird im Startpfad fuer Bildfunktionen verwendet.requests ist derzeit nicht hart erforderlich, weil der Online-Service auf urllib zurueckfallen kann.PySide6 wirkt nach heutigem Stand nicht wie eine Kernabhaengigkeit des Debian-GUI-Starts von netmon.Der aktuelle Builder in scripts/build_netmon_deb.sh sollte von einer Datei-fuer-Datei-Auswahl auf eine bewusst gepflegte Paketliste umgestellt werden.
Stand 1.1.18:
scripts/build_netmon_deb.sh liefert bereits eine explizite Datei-/Ordnerliste.udisks2 und cryptsetup sind fuer den installierten LUKS-/Mount-Pfad als Depends hinterlegt.packaging/netmon.metainfo.xml wird mit ausgeliefert, damit Software-Center die Lizenz korrekt erkennen./usr/lib/netmon; gemeinsame Assets liegen unter /usr/share/netmon./usr/share/doc/netmon.md5sums, normalisierte Dateirechte und ein auf 256 x 256 skaliertes Hicolor-Icon werden beim Build erzeugt.Empfohlene Richtung:
config, core, features, lang, modules, services, ui uebernehmen.netmon/ explizit kopieren./usr/share/netmon/assets/ ablegen.Depends, Recommends und Suggests aus der aktuellen Feature-Registry in netmon/app.py ableiten.Code-the-Classics.zip wird standardmaessig im Paket enthalten sein.netmon/config/.netmon als Produktpaket gepflegt.netmon.png ist das Hauptprogramm-Icon.netmon-radio.png ist das Radio-spezifische Icon.Der aktuelle Paketstand liefert netmon-uninstall als eigenen Launcher und CLI-Weg mit aus.
Der Deinstaller fragt optional per y/n ab:
/etc/wireguard auf Testsystemen entfernenHinweis:
/etc/wireguard ist bewusst nur als Testsystem-Option gedacht.netmon-darknetmon-dark sollte nicht als separates Debian-Paket weitergefuehrt werden.
Begruendung:
netmon/app.py sind LIGHT_THEME, DARK_THEME, BEIGE_THEME und POP_THEME direkt Teil von THEMES.netmon/main.py unterstuetzt bereits --theme.scripts/build_netmon_dark_deb.sh startet nur einen separaten Test-Launcher python3 -m netmon.dark_test.Konsequenz:
netmon-dark ist als historischer Test-/Migrationspfad zu behandeln.netmon gebaut werden.netmon-dark-Builder spaeter entfernen oder archivieren.Automatisch aus der Git-Historie des Repositories erzeugt.
Server-ID, Speichern, Server-IDs abrufen, Speedtest starten und Speedtest-Verlauf klar vertikal an.Als Prompt mit PDF kopiert werden.speedtest-cli, laeuft im Hintergrund und veraendert die gespeicherte Server-ID nicht automatisch.~/.local/share/netmon/clamav-db beziehungsweise XDG_DATA_HOME/netmon/clamav-db; Eigentuemerschaft und restriktive Rechte werden vor der Nutzung geprueft.dpkg -V als zusaetzliche Vertrauensevidenz ergaenzt.rkhunter --propupd wird nur bei niedrigem Risiko, erfolgreicher Paketpruefung und ohne kritische oder ungeklaerte Befunde angeboten.1.1.17 fuer die nachgezogenen VPN-, Status- und Tour-Korrekturen.Dokumente/NetMon/Secure Browser angelegt; der Zielordner entsteht bei Bedarf automatisch und harte benutzerspezifische Pfade wurden entfernt.~/Programme wurde aus Inventur, Verwaltung, Quellensuche und Deinstaller entfernt; Secure Browser verwenden ausschliesslich Dokumente/NetMon/Secure Browser.[y/N] ab und schuetzt sie bei N auch vor der allgemeinen NetMon-Dokumentenbereinigung.GitHub oder Sparkasse Ulm; das stoerende Praefix NetMon Secure Browser bleibt auf technische Dateinamen und interne Kennungen beschraenkt.Documents/NetMon/Log-Pics beziehungsweise Dokumente/NetMon/Log-Pics vorbereitet./usr/lib/netmon, /usr/share/netmon sowie /usr/share/doc/netmon standardisiert.md5sums ergaenzt; Dateirechte, Icon-Groesse und Paketbeschreibung korrigiert.Devices, Firewall, Path, Prozesse/Processes, Repos, Roots, Autostart, Rootkithunter und Capture.Pfad kopieren erweitert; der Temp-Ordner-Pfad kann direkt in die Zwischenablage uebernommen werden. Die zugehoerigen Aktionen sind in zwei funktionale Button-Reihen gegliedert.1.1.17 angehoben.security-audit-r6.html und liefert netmon_security_audit_2026_r6.pdf mit aus.1.1.16 angehoben.1.1.16 aktualisiert.1.1.15 angehoben, um den stabilen Recovery-/Backup-Stand neu auszurollen.1.1.15 umgestellt.1.1.15.PostUp/PreDown.WEB_CMD auf trusted Binary-Pfade begrenzt; PATH-Hijacking ueber user-kontrollierte wget/curl-Treffer wird verworfen.black-, ruff-, pytest- und ls-Pfadargumente jetzt auf das Repository.http, https, rtsp, rtmp).mpv oder ICY-Metadatenabrufe weitergereicht.NetMonRoots vereinheitlicht und Header mit Banner-Icon erweitert.1.1.14 angehoben.netmon_1.1.14_all.deb und erzeugt passende Release-Hashes.Aktuelles / Updates als zentrale Statusseiten fuer Freigaben, Testlabor-Hinweise und bekannte Themen eingefuehrt.latest-version.json und verweist bei neueren Website-Releases auf die Downloadseite.udisks2 und cryptsetup geschaerft.image_to_data_url) auf erlaubte Bildtypen und Pfade im Benutzer-Homeverzeichnis begrenzt.apt remove statt apt purge.1.1.10 konsolidiert.netmon-uninstall inklusive Desktop-Eintrag./etc/wireguard fuer Testsystemeapt updateapt upgrade -yapt autoremove -yapt cleanapp.py und rkhunter_manager.py auf Allowlists begrenztagent/runner.py-Allowlist fuer lokale Shell-Kommandos verengtvpn-Connections ein,sondern nur noch echte NM-wireguard-Connections.
2026-03-07 5ceb443e Initial commit2026-03-07 4429bb26 Set up dev container workspace2026-03-07 f7b0619d Format code with black2026-03-07 82b539a0 Fix pytest import path and black target version2026-03-07 6656618b Add makefile and VS Code settings2026-03-07 27a62cf4 Agent core: tools + runner + netmon integration2026-03-08 725a74ba netmon: fix layout-related indentation and traceroute helper structure2026-05-02 e334324a refactor(netmon): extract phase 1 startup and core helpers2026-05-02 e9239f8f refactor(netmon): extract phase 2 ui widget helpers2026-05-02 85a56da6 refactor(netmon): continue phase 4 controller extraction