Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Support Linux Script um Paketmittschnitt auf der Fritzbox unter Debian zu starten

maupiiii

Spezialist
Registriert
29. Mai 2014
Beiträge
658
Reaktionspunkte
541
Punkte
1.630
Hallo zusammen,

ich habe einen Debian Rechner und würde gerne über das Webinterface der Fritzbox, das unter IpderFritzBox/html/capture.html den Netzwerkmittschnitt automatisch aus dem Debian Rechner via Cron starten/stoppen.

Vielleicht hat jemand schonmal dafür ein html-Script erstellt, um die Buttons auf der Webseite zu starten/stoppen.
Ich befürchte, meine Programmier-Kenntnisse reichen hier nicht aus :-(

Danke und viele Grüße

Du musst Regestriert sein, um das angehängte Bild zusehen.
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.

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:
Code:
fritz_capture.sh start

Beende ihn wieder:
Code:
fritz_capture.sh stop




🧠 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).

Speichere das z. B. als:
/usr/local/bin/fritz_capture.sh
Code:
#!/bin/bash
# FritzBox Capture Script (FritzOS >= 7.50)
# Automatisch Start/Stop eines Netzwerk-Mitschnitts über HTTP
# Autor: ChatGPT
# -----------------------------------------

FRITZBOX_IP="192.168.178.1"   # IP oder Hostname der FritzBox
USERNAME="deinBenutzername"   # FritzBox-Benutzer (nicht "admin")
PASSWORD="deinPasswort"       # FritzBox-Passwort
INTERFACE="lan"               # z. B. lan, wlan, dsl, all
ACTION=$1                     # start oder stop

LOGIN_URL="http://${FRITZBOX_IP}/login_sid.lua?version=2"
TMP_JSON="/tmp/fritz_login.json"

# ---- 1. Challenge vom Login-System holen ----
curl -s "$LOGIN_URL" -o "$TMP_JSON"

CHALLENGE=$(grep -oPm1 '(?<="challenge":")[^"]+' "$TMP_JSON")
ALG=$(grep -oPm1 '(?<="blocktime":)[0-9]+' "$TMP_JSON")

if [ -z "$CHALLENGE" ]; then
  echo "Fehler: Keine Challenge von der FritzBox erhalten."
  exit 1
fi

# ---- 2. Antwort berechnen (PBKDF2 + SHA256) ----
# Ab FritzOS 7.50 wird PBKDF2 mit HMAC-SHA256 verwendet.
# Dafür braucht man OpenSSL >= 1.1.1

# Challenge ist base64-codiert, wir verwenden sie direkt als Salt
# Iterationen = 1000
KEY=$(printf "%s" "$PASSWORD" | openssl pbkdf2 -iter 1000 -salt "$(echo -n "$CHALLENGE" | base64 --decode 2>/dev/null)" -md sha256 -binary 2>/dev/null | xxd -p -c 256)

# Antwort = challenge + '-' + key (hex)
RESPONSE="${CHALLENGE}-${KEY}"

# ---- 3. Login durchführen und SID holen ----
curl -s "$LOGIN_URL" \
  -d "username=${USERNAME}" \
  -d "response=${RESPONSE}" \
  -o "$TMP_JSON"

SID=$(grep -oPm1 '(?<="sid":")[^"]+' "$TMP_JSON")

if [ "$SID" == "0000000000000000" ] || [ -z "$SID" ]; then
  echo "Login fehlgeschlagen! Bitte Zugangsdaten prüfen."
  exit 1
fi

# ---- 4. Capture starten oder stoppen ----
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 "Benutzung: $0 [start|stop]"
  exit 1
fi

# ---- 5. Aufräumen ----
rm -f "$TMP_JSON"



⚙️ Rechte setzen


Code:
sudo chmod +x /usr/local/bin/fritz_capture.sh



🧪 Testen

Code:
fritz_capture.sh start
# Warte einige Sekunden oder Minuten...
fritz_capture.sh stop
 
Zuletzt bearbeitet:
Zurück
Oben