⚠️ Dieses interne Repository ist abgeschlossen. Seit der Veröffentlichung auf GitHub (2026-07-31) findet hier keine neue fachliche Weiterentwicklung mehr statt. Aktueller Ort für Code, Issues und Pull Requests: https://github.com/Josbrig/FritzBoxAnalyse. Dieses Repo bleibt unverändert als vollständiges Archiv der Redmine/GitLab- Projektorganisation bestehen (222 Tickets, alle Branches, alle Merge Requests) — Details siehe Docs/UEBERGABE_Interne-zu-GitHub.md.
Aussetzer beim Online-Spielen, Videocall oder Streaming — und niemand weiß, woran es lag? Dieses Programm beobachtet Ihre Internetverbindung durchgehend im Hintergrund, hält fest, wann etwas auffällig war, und grenzt im Nachhinein ein, woran es gelegen haben könnte: an der Leitung, am Provider-Netz, am eigenen Heimnetz — oder an nichts davon, dann liegt es außerhalb (etwa an der Gegenstelle).
Auf Knopfdruck entsteht daraus ein verständlicher HTML-Bericht. War die eigene Leitung im fraglichen Zeitraum unauffällig, lässt sich das damit zeigen: „Bei mir war zu dem Zeitpunkt nichts auffällig — sieh bei deinem System nach."
- ✅ Ampel statt Fachchinesisch — gedacht für alle, die ihr Internet nutzen, ohne Netzwerktechniker zu sein
- ✅ Verändert nichts — reiner Lesezugriff auf die FritzBox, keine Einstellung wird angefasst
- ✅ Bleibt bei Ihnen — keine Cloud, kein Konto, keine Telemetrie; alle Daten nur auf Ihrem Rechner
- ✅ Nachvollziehbar — Vorfälle werden mit tatsächlich aufgezeichneten Leitungsereignissen (Reconnect, Resync, Fehler-Bursts, Ping-Ausfälle) zeitlich in Beziehung gesetzt
- ℹ️ Eingrenzung, kein Beweis — vier grobe Kategorien statt exakter Ursachenbestimmung; das Programm sieht nur, was seine Messquellen hergeben (mehr dazu)
Voraussetzung: ein Windows-Rechner hinter einer AVM FritzBox. Das Programm läuft unauffällig im Hintergrund; ein Knopf genügt, um eine gerade erlebte Störung zu markieren.
KI — Mit Künstlicher Intelligenz erstellt: Code, Tests, Dokumentation und Projektorganisation stammen von einem KI-Agenten (Claude Code, Anthropic). Kennzeichnung im Sinne der EU-Transparenzpflicht (Verordnung (EU) 2024/1689, Artikel 50). Inhaltliche Verantwortung: Jörg Simbrig. → Was das für dieses Projekt bedeutet
Beim ersten Start fragt das Programm nach FritzBox-Benutzer und -Passwort, prüft beides live gegen die Box und merkt es sich erst bei Erfolg — danach meldet es sich ohne Rückfrage an. Welche Rechte der FritzBox-Benutzer braucht (und wie Sie einen eigenen Minimalbenutzer nur fürs Tool anlegen): Docs/ANLEITUNG_FritzBox_Benutzer_Einrichten.md
„Kann ich das gefahrlos laufen lassen? Gefährdet das meine FritzBox?" — diese berechtigte Frage beantwortet ausführlich und nachprüfbar: Docs/SICHERHEIT_Was_das_Tool_mit_Ihrem_Netz_macht.md (was das Tool tut, was nicht, was es könnte aber nie tut, und wie Sie das selbst überprüfen und einschränken können).
Ausführliche fachliche Beschreibung: Docs/KONZEPT.md Abschnitt 1–2.
Überwacht die Internetverbindung hinter einer FritzBox (TR-064, rein lesend)
durchgehend, erkennt Verbindungsprobleme zeitnah und ordnet sie im Nachhinein
zeitlich ein. Beobachtete Vorfälle werden mit Leitungsereignissen (Reconnect,
Resync, Fehler-Bursts, Ping-Ausfälle) korreliert. Ergebnis ist ein
selbsterklärender HTML-Bericht, der jeden Vorfall einer von vier groben
Kategorien zuordnet (korrelation.py): Leitung/Provider (Abriss),
Leitung grenzwertig (Übertragungsfehler ohne Abriss), Provider-Netz
(FritzBox erreichbar, Internet dahinter nicht), Heimnetz (PC erreicht die
FritzBox nicht — WLAN oder Kabel, das Programm unterscheidet das nicht).
War im fraglichen Zeitraum nichts davon auffällig, ist das selbst die
Aussage: die Ursache lag dann außerhalb der eigenen Leitung.
Grenzen der Aussage (bewusst hier und nicht nur im Disclaimer): Die Zuordnung ist eine Eingrenzung auf Basis zeitlicher Korrelation, kein Ursachenbeweis. Sie kann nur erfassen, was die Messquellen hergeben — bei Programm-Downtime oder unerreichbarer FritzBox entstehen Lücken (im Bericht als solche ausgewiesen). Einzelne Teilbereiche werden zwar erhoben (z. B. WLAN-Kanalwechsel, Signalstärke), fließen aber nicht als eigenständige Verdikt-Ebene ein.
Verbindliche Spezifikation: Docs/KONZEPT.md (Abschnitt 7 für die vollständige Architektur-/Modulübersicht) Glossar/Terminologie: Docs/GLOSSAR.md (Fach- und Projektbegriffe alphabetisch erklärt) Projektorganisation (Redmine/GitLab/Agent): Docs/KONZEPT_Projektorganisation_Redmine_GitLab_KI-Agent.md Änderungshistorie/Meilensteine: Docs/CHANGELOG.md Gebündeltes Governance-Regelwerk: Docs/Regelwerk/README.md Autor:innen: AUTHORS.md
Dieses Repository ist eine rückwirkend anonymisierte Fassung der
ursprünglichen, internen Entwicklungshistorie. Vor der Veröffentlichung
wurden interne Hostnamen, private IP-Adressen, Benutzernamen und
Zugangsdaten-Fundorte über alle Commits und Branches hinweg durch
generische Platzhalter ersetzt (z. B. gitserver.example.invalid statt des
tatsächlichen internen Servernamens, nutzer-agent statt eines echten
Benutzernamens). Details und die vollständige Liste der Ersetzungen stehen
in Docs/HINWEIS_Anonymisierung.md.
Das erklärt gelegentlich seltsam wirkende Stellen — etwa Domainnamen, die
auf .invalid enden (das ist nach RFC 2606
eine Endung, die nie an eine echte Domain vergeben werden kann, also
absichtlich und erkennbar unecht ist), oder Bezeichner, die leicht anders
klingen als man es von einem gewachsenen Projekt erwarten würde. Das ist
keine Unsauberkeit im Code, sondern Absicht: Diese Fassung ist bewusst so
bereinigt, dass sie ohne Rückschlüsse auf die private Infrastruktur des
Autors gelesen werden kann.
.\build\setup_dev.ps1Richtet .venv ein, installiert das Projekt inklusive Entwicklungsabhängigkeiten
und prüft das Ergebnis (Tests, ruff, mypy). Für einen echten Frisch-Test
(z. B. nach Änderungen an pyproject.toml): .\build\setup_dev.ps1 -Neu.
Die einzelnen Schritte von Hand, falls gewünscht:
python -m venv .venv
.venv\Scripts\python -m pip install -e .[dev]
.venv\Scripts\python -m pytest
.venv\Scripts\python -m ruff check src tests
.venv\Scripts\python -m mypyGUI-Version (primäre, für den Endnutzer vorgesehene Programmform —
Einrichtungsassistent bei unbekannten Zugangsdaten, sonst dauerhaftes
Hauptfenster mit optionalem Tray-Icon, siehe Docs/KONZEPT.md §6.1/§6.2):
.venv\Scripts\python -m fritzboxanalyse.guiKonsolenversion (__main__.py, ursprünglicher Meilenstein-1-Einstieg
ohne grafische Oberfläche — weiterhin lauffähig, aber nicht die für
Endnutzer vorgesehene Form):
.venv\Scripts\python -m fritzboxanalyseAlle CLI-Optionen der Konsolenversion:
| Option | Wirkung |
|---|---|
--version |
Programmversion ausgeben und beenden |
--zugangsdaten-aendern |
Benutzer/Passwort neu abfragen, live gegen die FritzBox prüfen, gespeicherte Werte ersetzen |
Alle Messdaten bleiben lokal (SQLite in %LOCALAPPDATA%\FritzboxAnalyse\).
Das FritzBox-Passwort liegt ausschließlich im Windows Credential Manager
(Dienst fritzboxanalyse), niemals in Dateien oder Logs.
Nuitka ist nicht Teil der Standard-Entwicklungsumgebung (setup_dev.ps1
installiert es bewusst nicht mit) und muss vor dem ersten Build einmalig
zusätzlich installiert werden:
.venv\Scripts\python -m pip install -e .[build]Reproduzierbarer Nuitka-Build (Einstiegspunkt gui.py, nicht
__main__.py):
.\build\nuitka_build.ps1Details zum Build-Vorgang selbst (warum Nuitka statt PyInstaller, welche Nuitka-Optionen und warum): Docs/Bericht_2026-07-23_EXE-Build-Erklaerung.md. Cross-Compilation ist nicht möglich — der Build muss auf einem Windows-System mit installiertem MSVC laufen.
- Kein Tray-Icon sichtbar: auf manchen Windows-Systemen registriert
sich das
pystray-Icon zwar bei Windows, wird aber trotzdem nicht angezeigt (real reproduziert, kein Bug dieses Projekts — Details: Docs/Bericht_2026-07-20_Tray-Icon-Systembefund.md). Kein Problem in der Praxis: seit dem dauerhaften Hauptfenster (Ticket #47) ist das Tray-Icon nur noch eine optionale Zusatzanzeige, die primäre Oberfläche ist das Hauptfenster. - SmartScreen-Warnung beim ersten EXE-Start: möglich, da die EXE unsigniert ist (kein Code-Signing-Zertifikat). Im dokumentierten Smoke-Test trat sie nicht auf, ist aber je nach System/Windows-Version nicht ausgeschlossen — „Weitere Informationen" → „Trotzdem ausführen".
- Programm startet doppelt / scheint nichts zu tun: Einzelinstanz-
Schutz (
einzelinstanz.py) verhindert einen versehentlichen Doppelstart automatisch; ein zweiter Start beendet sich sofort wieder, ohne die laufende Instanz zu stören. - Zugangsdaten falsch/FritzBox-Benutzer ohne ausreichende Rechte: siehe Docs/ANLEITUNG_FritzBox_Benutzer_Einrichten.md für die benötigten Mindestrechte und wie man einen eigenen Minimalbenutzer anlegt.
Dieses gesamte Projekt — Code, Tests, Dokumentation und die komplette
Projektorganisation (Tickets, Merge Requests, Branches, Governance-Regelwerk)
— wurde von einem KI-Agenten (Claude Code, Anthropic) erstellt. Das ist hier
kein Nebenaspekt, sondern ein ausdrücklicher Zweck des Projekts: Es
demonstriert, wie ein KI-Agent ein Softwareprojekt eigenständig mit
Redmine/GitLab führen kann — einschließlich der Fehlschläge, Korrekturen und
der Weiterentwicklung des eigenen Arbeitsprozesses. Siehe
Docs/KONZEPT_Projektorganisation_Wiki-Nutzung.md
Abschnitt 7a und AUTHORS.md.
Kennzeichnung im Sinne der EU-Transparenzpflicht (Verordnung (EU) 2024/1689, Artikel 50). Inhaltliche Verantwortung: Jörg Simbrig.
Apache License 2.0 — siehe LICENSE. Drittanbieter-Komponenten und deren Lizenzen: NOTICE.
Keine Gewährleistung, keine Haftung. Diese Software wird „wie besehen" (as is) bereitgestellt, ohne jede ausdrückliche oder stillschweigende Gewährleistung — insbesondere ohne Zusicherung der Marktgängigkeit, der Eignung für einen bestimmten Zweck oder der Fehlerfreiheit. Die Nutzung erfolgt auf eigenes Risiko. Eine Haftung für Schäden jeglicher Art, die aus der Nutzung oder Nichtnutzbarkeit dieser Software entstehen, ist im gesetzlich zulässigen Umfang ausgeschlossen. Maßgeblich ist der vollständige Haftungsausschluss in Abschnitt 7 und 8 der Apache License 2.0; dieser Absatz fasst ihn nur allgemeinverständlich zusammen. Zwingende gesetzliche Haftung (etwa bei Vorsatz oder grober Fahrlässigkeit sowie nach dem Produkthaftungsgesetz) bleibt davon unberührt.
Kein zertifiziertes Messmittel. Das Programm führt Eigenmessungen mit Bordmitteln durch (TR-064-Abfragen der FritzBox, Ping-Laufzeiten, Windows-Systemwerte). Die erzeugten Berichte sind eine nachvollziehbare Eigendokumentation — sie sind keine eichrechtlich, behördlich oder gerichtlich anerkannte Messung und ersetzen weder eine Messung durch den Provider noch ein Sachverständigengutachten. Ob ein Provider, Vermieter oder Gericht eine solche Eigendokumentation berücksichtigt, liegt außerhalb des Einflusses dieses Projekts. Aussagen der Berichte („die eigene Leitung war in Ordnung") beschreiben das, was die verwendeten Messquellen im jeweiligen Zeitraum hergaben, und können systembedingt Lücken haben (z. B. bei Programm-Downtime oder wenn die FritzBox selbst nicht erreichbar war).
Marken. FRITZ!Box und AVM sind Marken der AVM Computersysteme Vertriebs GmbH, Berlin. Dieses Projekt steht in keiner Verbindung zu AVM, wird von AVM weder unterstützt noch geprüft oder gebilligt. Die Marken werden ausschließlich beschreibend verwendet, um die Kompatibilität des Programms mit diesen Geräten zu benennen (nominative Markennutzung). Alle weiteren genannten Produkt- und Firmennamen sind Eigentum ihrer jeweiligen Inhaber.
Nutzung auf eigenen Geräten. Das Programm ist für den Einsatz an der eigenen FritzBox bzw. an einer FritzBox gedacht, für die eine Zugriffserlaubnis vorliegt. Der Zugriff erfordert gültige FritzBox-Zugangsdaten; für deren rechtmäßige Verwendung ist die nutzende Person verantwortlich.
Diese Hinweise wurden nach bestem Wissen erstellt und stellen keine Rechtsberatung dar.