The scripts in examples are intentionally small and use environment variables. They avoid hardcoded credentials and should not print secrets.
cp .env.example .env
# Edit .env locally. Do not commit it.
python3 -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"Required connection variables:
FRITZBOX_ADDRESS=192.168.178.1
FRITZBOX_USER=
FRITZBOX_PASSWORD=change-me
FRITZBOX_PORT=49000
FRITZBOX_TLS=0| Script | Demonstrates |
|---|---|
| tr064_device_log.py | Basic TR-064 connection and DeviceInfo:GetDeviceLog. |
| avm_export_paths.py | Official export-path actions for device log, host list, mesh list, and WLAN device lists. |
| webui_lua_sources.py | Authenticated query.lua and data.lua reads using FRITZ!Box Web UI session handling. |
| support_data_download.py | Hidden support-data workflow with safe metadata output. |
| sqlite_full_text_search.py | Local SQLite FTS search across stored evidence. |
Use the project CLI for the complete collector:
fritzbox-wifi-export \
--dataset \
--hours 10000 \
--include-disconnects \
--format json \
--output fritzbox-export.jsonStore directly in SQLite:
fritzbox-wifi-export \
--dataset \
--hours 10000 \
--include-disconnects \
--store-db fritzbox-analysis.sqlite3fritzbox-vpn-provision --env-example
fritzbox-vpn-provision --output vpn-plan.jsonThe planner is dry-run only. It checks existing DynDNS and WireGuard state but does not write router settings.