1. FritzBox Login vorbereiten
Die FritzBox (neuere Modelle) nutzt
Challenge-Response-Authentifizierung über login_sid.lua.
Du brauchst also ein Login-Skript, das eine gültige
Session ID (SID) holt.
Speichere folgendes Skript z. B. als /usr/local/bin/fritz_capture.sh:
Bash:
#!/bin/bash
# FritzBox Capture Script - Start/Stop via Command Line
# Anpassung: IP, Benutzername, Passwort, Interface etc.
FRITZBOX_IP="192.168.178.1"
USERNAME="deinBenutzername"
PASSWORD="deinPasswort"
INTERFACE="lan" # z. B. lan, wlan, dsl, all
# ---- Login & SID holen ----
LOGIN_URL="http://${FRITZBOX_IP}/login_sid.lua"
# 1. Challenge holen
CHALLENGE=$(curl -s "$LOGIN_URL" | grep -oPm1 "(?<=<Challenge>)[^<]+")
# 2. Antwort berechnen (UTF-16LE Hash mit MD5)
RESPONSE="$CHALLENGE-$(echo -n "$CHALLENGE-$PASSWORD" | iconv -t utf16le | md5sum | awk '{print $1}')"
# 3. Login durchführen
SID=$(curl -s "$LOGIN_URL" -d "username=${USERNAME}&response=${RESPONSE}" | grep -oPm1 "(?<=<SID>)[^<]+")
# Check ob Login erfolgreich war
if [ "$SID" == "0000000000000000" ]; then
echo "Login fehlgeschlagen!"
exit 1
fi
# ---- Mitschnitt starten oder stoppen ----
ACTION=$1 # start oder stop
if [ "$ACTION" == "start" ]; then
echo "Starte Mitschnitt auf Interface: $INTERFACE"
curl -s -b "sid=$SID" \
-d "iface=$INTERFACE" \
-d "start=Start" \
"http://${FRITZBOX_IP}/html/capture.html" > /dev/null
elif [ "$ACTION" == "stop" ]; then
echo "Stoppe Mitschnitt"
curl -s -b "sid=$SID" \
-d "stop=Stop" \
"http://${FRITZBOX_IP}/html/capture.html" > /dev/null
else
echo "Bitte 'start' oder 'stop' angeben!"
exit 1
fi
2. Skript ausführbar machen
Code:
chmod +x /usr/local/bin/fritz_capture.sh
3. Testlauf
Starte den Mitschnitt:
Beende ihn wieder:
Hinweis:
Falls du FritzOS 7.50 oder höher hast und die
Login-Seite mit Token-Authentifizierung nutzt, muss das Skript leicht angepasst werden — ich kann dir die Version dafür auch geben (die funktioniert dann mit login_sid.lua?version=2).