tellows Anruferschutz: Automatische Aktualisierung der Scorelisten in der Fritzbox – Bash-Skript

Liebe tellows Freunde,

Mit unserer Fritzbox-Scoreliste könnt ihr die gefährlichsten Telefonnummern in eure Fritzbox importieren und euch somit vor genau diesen unseriösen Anrufern warnen lassen. Die Scoreliste kann man einfach über den tellows Shop erwerben und anschließend dort oder im Mitgliederbereich herunterladen. Um immer den aktuellsten Schutz zu erhalten, muss man diese Liste jedoch regelmäßig aktualisieren. Damit die Aktualisierung nicht mehr manuell vorgenommen werden muss, hat ein tellows Nutzer ein Bash-Skript erstellt, um das Update zu automatisieren.

Heute stellen wir euch diese Lösung zum automatischen Download der Fritzbox-Listen und Integration in euren Router vor. Damit entfällt das regelmäßige Einloggen in den tellows Shop sowie das manuelle Importieren der Listen in eure Fritzbox.

Ein besonderer Dank geht an einen unserer tellows Scorelisten-Nutzer, der uns seine Lösung inklusive Script zur Verfügung gestellt hat. Für den Download der Listen nutzt er einen Direktlink mit seinen Shopdaten. Mithilfe des Scripts ist eine automatische Integration in die Fritzbox möglich. Achtung: Dies ist eine Experten-Lösung und erfordert Programmierkenntnisse!

Vorab noch ein paar Anmerkungen vom Nutzer:

  • Die Telefonbuch IDs fangen in der Fritzbox bei 0 an – das „Standard“ Telefonbuch ist die ID 0, von da hochzählend geht es dann weiter
  • Die Anmeldung funktioniert entweder nur mit Passwort oder mit Benutzername/Passwort – gesteuert über USERPASSLOGIN (getestet mit dem Passwort-Login, nicht mit Benutzer/Passwort)
  • Es wurden 2 Telefonbücher für Score 7 und 8-9 angelegt und diese dann als Rufsperren eingerichtet (Anleitung für den Import der Scorelisten und Einrichtung der Rufsperre) – in diesem Fall sind das die IDs 2 und 3
  • Das Script basiert auf einem alten Script das ich vor Jahren mal irgendwo gefunden und angepasst hatte, eine genaue Quelle kann ich leider nicht mehr liefern
  • Es handelt sich, wie zu sehen, um ein Linux Shell Script – falls ich mich da noch mal dransetzen sollte, könnte ich dann auch den Autoit Quellcode zur Verfügung stellen (damit das Programm kompiliert werden kann und nicht ein fertiges Binary genommen werden muss)

Skript für die Einbindung

#!/bin/bash
URL=http://fritz.box
USERPASSLOGIN=0
USER=fritzuser
PASSE=fritzpass
PASS=fritzpass
TELEFONBUCH7=2
FILE7="@/tmp/tellows_7.xml"
TELEFONBUCH89=3
FILE89="@/tmp/tellows_8-9.xml"

# Achtung: Anführungszeichen sind wichtig 
wget -q -O /tmp/tellows_7.xml "tellows Download LINK"
wget -q -O /tmp/tellows_8-9.xml "tellows Download LINK"
 
if [ $USERPASSLOGIN == 1 ] ; then
CURLUSERPASSSTRING="--user ${USER}:${PASSE}"
else
CURLUSERPASSSTRING="--user :${PASS}"
PASSE=$PASS
fi
 
_CHALLENGE=`curl -s -k \
                ${CURLUSERPASSSTRING} \
                "${URL}/login_sid.lua" | \
                grep Challenge | sed -e 's/.*<Challenge>//' | sed -e 's/<\/Challenge>.*//'`
 
if [ -z "${_CHALLENGE}" ] ; then
        echo "Error getting challenge using ${URL}" >&2
else
 
        # echo "Received Challenge \"${_CHALLENGE}\"" >&2
        # build md5 from challenge key and password
        _MD5=`echo -n ${_CHALLENGE}"-"${PASSE} | \
                iconv -f ISO8859-1 -t UTF-16LE   | \
                md5sum -b | awk '{print substr($0,1,32)}'`
 
        # assemble challenge key and md5
        _RESPONSE=${_CHALLENGE}"-"${_MD5}
 
        # get sid for later use
        _SID=`curl -i -s -k \
                ${CURLUSERPASSSTRING} \
                -d 'response='${_RESPONSE} \
                -d 'page=' \
                -d 'username='${USER} \
                ${URL}/login_sid.lua | \
                grep SID | sed -e 's/.*<SID>//' | sed -e 's/<\/SID>.*//'`
 
        if ! curl -s -k \
                ${CURLUSERPASSSTRING} \
                --form 'sid='${_SID} \
                --form 'PhonebookId='${TELEFONBUCH7} \
                --form 'PhonebookImportFile='${FILE7} \
                ${URL}/cgi-bin/firmwarecfg >TMP1 ; then
                echo "Error 7" >&2
        fi
 
        sleep 10
 
        if ! curl -s -k \
                ${CURLUSERPASSSTRING} \
                --form 'sid='${_SID} \
                --form 'PhonebookId='${TELEFONBUCH89} \
                --form 'PhonebookImportFile='${FILE89} \
                ${URL}/cgi-bin/firmwarecfg >TMP1 ; then
                echo "Error 89" >&2
        fi
fi

Das Skript steht euch hier auch als Download (.txt) zur Verfügung.

Die mit „tellows Download LINK“ markierten Felder müssen durch einen Link mit Zugangsdaten ersetzte werden. Der Link wird beim Kauf der Scorelisten im heruntergeladenen PDF-Dokument angegeben. Alternativ findet ihr den Downloadlink in eurem Mitgliederbereich auf tellows. Falls ihr eine ältere Version der Scorelisten erworben habt (vor 2018), sendet uns einfach eine Mail und wir stellen euch den Downloadlink zur Verfügung.

Wir sind gespannt, ob auch andere tellows Nutzer ihr Setup mit dieser Integration nutzen möchten und freuen uns auf euer Feedback. Bei weiteren Ideen zur Integration, könnt ihr gerne einen Kommentar hinterlassen.

Weiterhin viel Spaß mit tellows und eine spamfreie Zeit!

Euer tellows Team

20 Gedanken zu „tellows Anruferschutz: Automatische Aktualisierung der Scorelisten in der Fritzbox – Bash-Skript

  1. Thomas

    Hallo,

    gute Idee, aber es währe ein kurze Anleitung mit den entsprechenden Links zum Download und der Installation auf der FritzBox ganz hilfreich

  2. tellows.de Team

    Hallo Thomas, die Anleitungen zum Download und Import befinden sich in der Produktbeschreibung im Shop. Viele Grüße vom tellows Team

  3. Chris

    Hallo,

    habe das Skript gerade implementiert und es funktioniert problemlos. Ich habe nur noch eine Anpassung vorgenommen, dass im Namen des Adressbuchs das Datum des letzten Downloads enthalten ist. So kann man in der Fritbox direkt sehen, ob der Updatemechanismus funktioniert.

    mv /tmp/tellows_7.xml /tmp/temp.xml
    sed „s/tellows Scorelisten/tellows Scorelisten $(date ‚+%Y%m%d‘)/g“ /tmp/temp.xml > /tmp/tellows_7.xml
    mv /tmp/tellows_8-9.xml /tmp/temp.xml
    sed „s/tellows Scorelisten/tellows Scorelisten $(date ‚+%Y%m%d‘)/g“ /tmp/temp.xml > /tmp/tellows_8-9.xml

    Gruß,
    Chris

  4. tellows.de Team

    Hallo Chris, vielen Dank für deine Anmerkungen. Wir wünschen noch viel Spaß damit und eine spamfreie Zeit. Viele Grüße vom tellows Team

  5. Ein Fisch

    Anmerkung das Skript lässt sich selbstverständlich nicht auf der FritzBox direkt Installieren. Ihre benötigt dazu einen Homeserver. Als kostengünstige alternative bietet sich da z.B. ein Raspberry Pi an.

    Jetzt zu meiner Frage. Wie finde ich die IDs der Telefonbücher heraus da ich schon mehrere angelegt habe?

  6. tellows.de Team

    Hallo, die IDs werden in der Regel in der Reihenfolge vergeben, wie die Telefonbücher angelegt werden. D.h. das erste Telefonbuch hat die ID „0“. Wenn man sich in der Übersicht zum Wechseln des Telefonbuchs befindet, kann man auch über das Entwicklertool zum Untersuchen des Elements, die korrekte ID des jeweiligen Telefonbuchs einsehen.
    Viele Grüße vom tellows Team

  7. Thomas

    Hallo, ich habe versucht das Script mit meiner FB 6590 unter FritzOS 7.0 zum laufen zu bekommen, das hat leider nicht funktioniert.

    Das Script läuft auf einem RasPi 3b, der Download der Score-Listen funktioniert einwandfrei, allerdings werden diese nicht in die FritzBox installiert.

    Ich habe es mit leeren Telefonbüchern, ohne Telefonbüchern, beiden Anmeldeprozeduren usw. probiert, aber es geht nicht und ich bekomme auch keine Fehler- oder Rückmeldung, was evtl. nicht funktioniert.

    Ich vermute das Problem im Zusammenhang mit FritzOS 7.0.

    Was kann ich noch probieren oder wie bekomme ich, raus, wo es hängt.

    Danke im Voraus und viele Grüße

  8. Andy

    Also bei mir läuft das Script mit meiner FB 6490 unter FritzOS 7.0/RasPi 3b einwandfrei. Die beiden Telefonbücher werden nach dem Ausführen des Scriptes, falls sie noch nicht existieren, automatisch angelegt. Ich habe es gerade nochmal unter der 7.0 ausprobiert. Evtl. hilft es in der Zeile 2 die IP der FB zu verwenden oder auch unter „Heimnetz/Heimnetzübersicht/Netzwerkeinstellungen“ das Häckchen bei „Zugriff für Anwendungen“ anzuhaken. Kann mir gut vorstellen, dass das Script das TR-064 Protokoll benutzt.

    Hat den irgendwer das Script mit der Erweiterung von Chris am laufen? Dann könnte man auch in der FB nachschauen, ob der Upload Prozess funktioniert.

    Grüsse
    Andy

  9. Thomas

    Einen fehler habe ich gefunden, in Zeile 3 des Scripts muss es USER und nicht USERE heissen, danach funktionierte die Integration in der FritzBox auch direkt.

    Nur mit dem WebGUI-Passwort geht es bei mir garnicht, keine Ahnung warum.

    Bei mir macht aber gerade eher der Download der Listen Probleme, Fehler mit dem Authorisierungskey.

  10. Andy

    Perfekt. Vielen Dank. Das ist mir noch gar nicht aufgefallen. Jetzt klappt auch die User/Passwort Variante.

    Ich fasse nochmal zusammen:
    In der Zeile 4 muss es USER und nicht USERE heissen.
    Wenn man dann in der Zeile 3 den Wert auf 1 setzt, wird die Variante User/passwort aktiviert.
    Bleibt der Wert auf 0, wird nur der Passwort login berücksichtigt.
    Vorausgesetzt natürlich, die Login Daten sind korrekt eingetragen.

    Grüsse
    Andy

  11. Thomas

    Richtig zusammen gefasst.
    Bei mir funktioniert nur der Login nur mit Passwort nicht, mit User+seinem Passwort alles gut.

    Wie geschrieben, bei mir macht derzeit der Download der Liste Probleme, aus dem Script raus bekomme ich einen Key-Fehler, rufe ich den Link direkt im Browser auf, kann ich beide Listen problemlos downloaden.
    Da suche ich noch.

  12. Andy

    Komisch. Bei mir gibt es keine Probleme.

    Wenn ich das Script ausführe, wird im gleichen Ordner eine „TMP1.html“ angelegt.
    Darin steht „Fritzbox Telefonbuch wiederhergestellt“.
    In der Fritzbox unter „System/Ereignisse“ wird der Eintrag „Anmeldung des Benutzers xxx an der Fritzbox Benutzeroberfläche mit der IP Adresse xxx.xxx.xxx.xxx“ mit dem Zeitstempel angelegt.
    Die beiden Listen sind dann unter „Telefonie/Telefonbuch“ angelegt bzw. aktualisiert.

    Das Script eignet sich auch sehr gut dafür, mit einem Crontab Zeit gesteuert ausgeführt zu werden. Z.B. einmal am Tag.

  13. Martin Hehl

    Hallo
    Zusätzlich zu den Vorrednern musste ich folgendes Ändern:
    URL=http://192.168.178.1

    Die URL der Scorelisten findet ihr im eigenen tellows Bereich.
    Meine Telefon-Sperrliste. Scorelisten, URL kopieren.

    Der persönliche Downloadlink laut der Mail von tellows war schlicht falsch.

    Der Rest geht bei der [email protected]

    Dankeschön an tellows

  14. tellows.de Team

    Hallo Martin, genau, den Download findest du in deinem Shop Account oder im tellows Mitgliederbereich (dieser ist direkt mit der Bestellung verknüpft). Viele Grüße von tellows

  15. Thomas

    Download der Listen und Upgrade in die FritzBox 6590 mit FritzOS 7.00 funktioniert nun bei mir, danke an den Tellows-Support.
    Hatte einen dämlichen Fehler in den Downloadlinks.

    Ich habe das Script auch um die Datums-Funktion erweitern und test es mal per Cronjob. Wenns klappt, gibt es die Änderung in den nächsten Tagen.

  16. Thomas

    Mein Script läuft wunderbar und updated die Listen per cronjob jede Nacht. Es läuft auf einem Raspi 3B+ genauso wie auf einem Linux-Server mit Ubuntu 18.

    Hier der Auszug für den Download-Teil und die Umbenennung der Listen:


    wget -q -O /tmp/tellows_7.xml „Download-Link“
    mv /tmp/tellows_7.xml /tmp/temp1.xml
    sed „s/tellows Scorelisten/tellows Scorelisten $(date +%Y%m%d)/g“ /tmp/temp1.xml > /tmp/tellows_7.xml
    wget -q -O /tmp/tellows_8-9.xml „Download-Link“
    mv /tmp/tellows_8-9.xml /tmp/temp2.xml
    sed „s/tellows Scorelisten/tellows Scorelisten $(date +%Y%m%d)/g“ /tmp/temp2.xml > /tmp/tellows_8-9.xml

    Der Rest ist identisch mit dem obigfen Scrip, viel Spass damit.

  17. Thomas

    Ergänzung noch:
    Achtet darauf, das die Anführungsstriche immer oben sind, bei Copy&Paste gibt es Probleme damit, die Webseite hat beim eintragen auch verändert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.