Fritz!Box Tools

Fritz!Box Tools Einführung

Fritz!Box Tools ist eine Multi-Funktions-Sammlung, um Daten aus der Fritz!Box auszulesen und wieder einzuspielen oder um automatisiert Funktionen in der Fritz!Box auszulösen.
Mit vielen Plugins wird die Funktionsvielfalt ständig erweitert.

 

Geschrieben wurde fb_Tools in PHP für die Konsole, was auf vielen Betriebssystemen verfügbar ist.

 

fb_Tools ist Quell offen und kann/darf von jedermann entsprechend der GNU GPL-Lizenz für seine eigenen Projekte benutzt werden.
Gegenwärtig entwickle ich fb_Tools alleine, was nicht heißt, dass es so bleiben muss.

 

Die Zielgruppe sind versierte Benutzer, die mit der Konsole umgehen können.
Wer eine Oberfläche braucht, sollte sich besser Fritz!Box JSTool genauer anschauen.
Zur Zeit hat fb_Tools immer noch Alpha-Status d.H. es ist noch nicht fertig und alles kann sich noch ändern!

Voraussetzungen

Unterstützte Betriebssysteme

  • Windows 2000 bis Windows 11
  • Linux (z.B. Knoppix, Ubuntu, etc.)
  • MacOS X (Terminal)

Lizenz:

Copyright © 2013-2024 Michael Engelke <https://www.MEngelke.de>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, see <https://www.gnu.org/licenses/>.

Download:

# md5_summer 06.01.2024 16:44:27 (fb_tools 0.40) 640b809692a31265cbddc516d49701ac *fb_tools.bat 1d1e19b0ca45674e9bf0be1b039e1936 *fb_tools.php 4daff509c942ca767094ecb2752965b6 *fb_tools.php.gz b876723701010e09e429849be7880031 *fb_tools.7z 5ba3a961805a6aee2709c4c03f192894 *fb_tools.txz 69857c3c009a4438494f0758ad879cc3 *fb-tools.deb 6b3554e542eece3c8e777bf731003653 *fbt_plugins.tgz Sofern mindestens PHP 4.4 verfügbar ist, ist fb_Tools unter jedem Betriebssystem lauffähig. Neben den normalen Betriebssystemen bekam ich auch Rückmeldungen von verschiedenen NAS-Systemen, Android, LibreElec, etc.

 

Wenn fb_Tools im vollen Umfang genutzt werden soll, sollte man mindestens PHP 5.4 oder besser PHP 7.1 oder neuer benutzen. Für SSL-Verbindungen sollte immer auf die aktuellste Version gesetzt werden. (z.B. PHP 8.1 oder neuer)

 

Die unterstützten PHP-Erweiterungen Bzip2, MCrypt, MHash, OpenSSL, MySQLi und SQLite3 sind "Nice to have" aber nicht "Must have"
Zur Zeit wird von mir nur Windows und Linux unterstützt. (MacOS kann ich leider nicht vernünftig Testen...)

 

fb_tools.7z7-ZipAlle Betriebssysteme (Windows, Linux, MacOS X)
fb_tools.txzTar, xzAlle Betriebssysteme (BusyBox, Windows, Linux, MacOS X)
fb-tools.debDebian-Paket(Debian, Knoppix, Mint, Ubuntu)
fb_tools.php.gzGZipNur das Hauptscript für die Shell (BusyBox, Linux, MacOS X)
 

Unterschiede:

Installation:

Alle Betriebssysteme

Solange es PHP ab Version 4.4 für das Betriebssystem gibt und auch installiert ist, dann kann man fb_tools ausführen. Zur Installation muss man eigentlich nur das Archiv fb_tools.7z an einen beliebigen Ort entpacken. Befindet sich PHP innerhalb der path Variable kann fb_tools.php wie folgt aufgerufen werden:
php fb_tools.php
Ansonsten muss man Notfalls den kompletten Pfad mit angeben (Entsprechend der Schreibweise des Betriebssystems):
/Service/PHP/php /fritzbox/fb_tools.php
Unterstützung kann ich nur für Windows und Linux anbieten - da ich andere Betriebssysteme nicht testen kann...

Windows

Fritz!Box Tools unter Windows 11 installieren (1/3)

Zuerst PHP herunterladen und entpacken, anschließend fb_tools.bat in das PHP-Verzeichnis kopieren.
Für eine Portable Installation, wird nur die php.exe und je nach PHP-Version php8ts.dll, php7ts.dll, php5ts.dll, php4ts.dll benötigt.

 

Für eine dauerhafte Installation stehen Ihnen zwei Umgebungsvariablen zur Verfügung: "php" und "phpopt"
Mit php können Sie den genauen Ort der php.exe festlegen (Dies kann man in den "Erweiterte Systemeinstellung" bzw. "Systemeigenschaften" im Tab "Erweitert" tun) und mit phpopt können Sie weitere Parameter für PHP definieren. (Eine Hilfe für alle Parameter erhalten Sie mit "php.exe -h")

 

fb_Tools wird in der Eingabeaufforderung oder in der Powershell gestartet, wie bei einer normalen Batchdatei: fb_tools oder fb_tools.bat bzw. .\fb_tools.bat
Zeichen wie: , ; % & < | > sollten in den Parametern vermieden werden oder müssen in "Anführungszeichen" übergeben werden. Das Prozent-Zeichen (%) wird mit sich selbst entwertet.
Beispiel:

 

Erweiterungen:

Hinweis:
  • Ab PHP 5.3 ist HTTPS möglich.
  • Ab PHP 5.4 kann das HTTPS-Zertifikat ignoriert werden.
  • Und ab Fritz!OS 7+ braucht man neuere PHP/OpenSSL Versionen (z.B. 8.x oder teilweise auch noch 7.4), die nicht von der Fritz!Box abgeleht werden.
OpenSSL ist die wichtigste Erweiterung, die fb_Tools benötigt. Deswegen gibt auch einen Extra-Test dafür: fb_tools info openssl
 

Getestet mit Windows XP (PHP 4.4 - PHP 5.4), Windows 7/Windows 10/Windows 11 (PHP 4.4 - PHP 8.1)

Windows mit BusyBox

Fritz!Box Tools unter Windows 10 mit BusyBox & Linux installieren (2/3)

Diese etwas gefahrene Installation ist etwas für Nerds:

 

Getestet mit BusyBox 1.36 und Windows XP (PHP 5.4), Windows 7 (PHP 7.1), Windows 10 (PHP 8.1)

Windows-Subsystem for Linux (1709+ & 64 Bit) mit Ubuntu

Unter Windows 10 (64 Bit) ist seit Ende 2017 Möglich, eine echte Ubuntu-Konsole zu betreiben:

 

Getestet mit Windows 10 1809/1903/22H2 (64 Bit und PHP 8.1)


Linux (fb-tools.deb für Debian / Mint / Ubuntu)

Fritz!Box Tools unter Ubuntu und OpenSuse installieren (3/3)

Für Linux das auf Debian basiert, gibt es ein eigenes Installationspaket, das man sich herunterladen kann:

Linux (fb_tools.txz für Busybox, Arch/Manjaro, Debian/Mint/Ubuntu, Fedora, OpenSuse)

Linux (fb_tools.php.gz)

 

Hinweis: In der Linux-Konsole muss man manchmal einige Parameter in Anführungszeichen setzen ("Doppelte" oder auch 'Einfache' )

 

Getestet mit:


MacOS X

Ähnlich wie unter Linux. Einer der Unterschiede ist, dass PHP schon zu den Bordmitteln von MacOS gehört.

 

Getestet mit MacOS X 10.6 Snow Leopard (PHP 5.3)
Erfolgreiche Rückmeldungen: (Vielen Dank an die Tester)

MacOS 12 Monterey

Ab MacOS 12 Monterey wird PHP nicht mehr mitgeliefert und muss nachinstalliert werden.

 

Erfolgreiche Rückmeldung(en):


Start und Parameter:

Fritz!Box Tools: Parameterübergabe (1/2)

Hier in dieser Anleitung und in der Hilfsausgabe von fb_Tools werden Pflichtparameter in [Eckigen Klammen] und Optionale Parameter in <Splitzen Klammen> angegeben.
Ist die Bezeichnung in Eckigen/Spitzen Klammern kleingeschrieben, dann handelt es sich um die Bezeichnung des Parameters, der für eindeutige Bezeichnung mit angegeben werden kann. (Siehe Argumente)

Hilfe

Die Hilfe aller Funktionen bekommt man mit fb_tools -h
Möchte man Beispiele zu der aktuellen Hilfe, dann gibt man den Hilfs-Parameter "b" mit an: fb_tools -h:b
Um alle Optionen angezeigt zu bekommen, erreicht man das mit fb_tools -h:o - Nur Kontext-Optionen (Optionen für eine bestimme Funktion) mit fb_tools -h:k
Und kombiniert würde auch gehen: fb_tools -h:bo oder fb_tools -h:a für Alles

Fritzbox-Angabe als Argument

In dem aller ersten optionalen Parameter, kann man die Zugangsdaten der Fritz!Box direkt angeben. Diese Parameter ist ein Sonder-Parameter und wird vor dem Parsen der Argumente abgefragt. Folgende Schema-Varianten sind möglich:

 

Beispiel:

Fritz!Box-Angabe als Optionen

Es gibt als Alternative auch Option-Parameter, die diesen ersten Parameter überflüssig machen können.


Fritz!Box-Angabe in fb_config.php

Theoretisch können Sie die Zugangsdaten im Script selber angeben, was aber nicht zu Empfehlen ist. (z.B. würden diese bei einen Update verloren gehen) Man kann in einer separaten Datei: "fb_config.php" die Zugangsdaten von einer oder mehreren Fritz!Boxen hinterlegen. Die entsprechende Fritz!Box ist dann über den vergebenen Schlüsselnamen (z.B. maxbox) erreichbar.
Diese Datei kann mit Lese-Rechten versehen oder auf in einen verschlüsselten Container speichern. - Generell ist nicht zu Empfehlen die Zugangsdaten direkt in die Konsole einzugeben, da einige Betriebssysteme diese Eingaben in einer Log-Datei speichern.
fb_Tools sucht die "fb_config.php" oder auch ".fb_config.php" zuerst im Aktuellen Verzeichnis, anschließend im Script-Verzeichnis, wo fb_Tools selber liegt.
Es gibt noch eine Optionsangabe -cc:[configfile], wo man den genauen Ort der Konfig-Datei angeben kann.
Beispiel in fb_config.php: (Eine Beispieldatei finden Sie im Archiv fb_tools.7z.)

 

Beispiel aufruf:

Zwei-Faktor-Authentisierung

Für den automatischen Login und Bearbeitung trotz eines zweiten Faktors benötigt man das 160 Bit Geheimnis für den Google_Authenticator.
fb_Tools kann ab Version 0.32 die Tokens selber erzeugen und zur Fritz!Box schicken. In der fb_config gibt es jetzt zwei Variablen dafür: uipw und totp.
Der unterschied zwischen den beiden Variablen ist, dass totp IMMER einen zweiten Faktor auslöst, während uipw den zweiten Faktor nur dann auslöst, wenn er zwingend gebraucht wird.

 

Wird NICHTS angegeben, dann bleibt etwa 30 Sekunden Zeit, für das Knöpfchen drücken oder das wählen der Telefonnummer mit dem Telefon. fb_Tools unterstützt noch keine Interaktiven eingaben! Die Zeit kann man mit der Option -t:[sec], um einige Sekunden verlängern, bis die Fritz!Box selbst abbricht.

Ältere Fritz!Box-Angabe als Fernwartung (Ein Sonderfall mit Fritz!OS 4.x)

Als die Fernwartung gerade frisch eingeführt wurde und noch mit HTTP-Auth Basic realisiert wurde, (Ja, wirklich ;-) ) gab es noch keine Benutzerverwaltung in der Fritz!Box! D.H. man brauchte für die Fernwartung Benutzer & Kennwort + Anmeldekennwort der Fritz!Box-Oberfläche. fb_Tools unterstützt diesen Sonderfall mit:

 

Man beachte, dass man dazu zwingend PHP 5.4 oder PHP 5.5 benötigt, da neuere PHP-Versionen mit entsprechender OpenSSL-Version diesen alten Login-Prozess nicht mehr unterstützen. (Ein erfolgreicher Login, ist mir nur unter Windows gelungen.)

 

Ab Fritz!OS 7.24 wird ein neues Login-Verfahren (PBKDF2) eingesetzt, dass idealerweise PHP 5.5 voraussetzt. Alternativ reicht auch die HashTool-Bibliothek. Allerdings sollte man dann Mindestens PHP 5.1.2 oder die MHash-Erweiterung haben. Mit SHA256-Bibliothek geht es Notfalls auch, ABER dann würde der Login ca. 15 Minuten dauern. 8-O (Das MD5-Login-Verfahren kann man mit -li:1 erzwingen.)

 

Ab Fritz!OS 7.39 ist die Zwei-Faktor-Authentisierung zur Pflicht geworden. (d.H. Man kann sie nicht mehr mit Bordmitteln deaktivieren). Daher wird ab fb_Tools 0.32 die Zwei-Faktor-Authentisierung voll unterstützt. Mit der Option -tf kann die 2FA Initialisiert werden. Kennt man das Geheimnis des Google_Authenticators, kann dieses Geheimnis mit -tf:GOOGLETWOFACTORAUTHENTICATIONOTP übergeben und der Token wird automatisch erzeugt und an die Fritz!Box gesendet.


BitBeschreibung
0Warnung/Hinweis (Kein Fehler)
1Ungültige Parameter
2Login Fehlgeschlagen
3Ressource nicht gefunden/erhalten/verfügbar (Ladefehler/Keine Berechtigung)
4Falsche/defekte/ungültige Ressource
5Schreibfehler (Schreibschutz/Kein Platz)
6Prozedur auf Ressource nicht möglich
7Bits 0-6 sind ungültig und ab hier kommen 128 mögliche Error-Codes

Fehlermeldungen

fb_Tools bietet für alle Funktionen eine Vielzahl von Fehlermeldungen, die von Internen Funktionen vererbt werden können. Alle Fehlermeldungen sind in Deutsch verfasst - Manchmal mit einen kleinen Schuss Humor ;-)
Sind die Fehlermeldungen dennoch in Englisch dann kommen sie nicht von fb_Tools sondern von PHP und wurden nur an fb_Tools weiter vererbt.
Mit der Aktivierung des Debugmodus -d kann man ermitteln bei welcher Funktion welcher Fehler aufgetreten ist.

 

Ab fb_Tools 0.30 wird im Fehlerfall auch ein Return_Code zurück gegeben. Die ersten 7 Bits bestimmen, in welchen Gruppen der Fehler zuzuordnen ist. Das letzte Bit macht die Zuordnung der 7 Gruppen ungültig und kann bis zu 128 Sondermeldungen enthalten.


Argumente

Fritz!Box Tools: Parameterübergabe (2/2)

Ab fb_Tools 0.25 müssen die Parameter NICHT mehr in der vorgegebene Reihenfolge eingegeben werden, sondern können fast in beliebiger Reihenfolge übergeben werden.
Alle Parameter haben einen eigenen Namen z.B. mode:, func:, file: etc. Die Trennung von Namen und Inhalt kann entweder mit : oder = angegeben werden.
Beispiel:

 

Benannte Argumente brauchen keine vorgegebene Reihenfolge.
Beispiel:

 

Ebenso können benannte Argumente, wenn erforderlich, mehrmals angegeben werden. Dafür gibt zwei Schreibweisen:
Beispiel:

 

Es ist möglich benannte und unbenannte Argumente zu kombinieren. Man muss nur darauf achten, dass die unbenannten Argumente in der korrekten Reihenfolge übergeben werden.
Beispiel:


Optionen

Ab fb_Tools 0.28 können die Optionen zusammen mit den Argumenten übergeben werden und dürfen nicht im letzten Parameter zusammen geschrieben werden. Alle Optionen müssen mit ein Minus-Zeichen eingeleitet werden.
Soll ein Wert übergeben werden, muss hinter der Option ein ":" folgen und dann der Wert. Erlaubt ist auch den Wert in Anführungszeichen zu setzen.
Beispiel:

-b:[Buffergröße], -p:[Protokoll], -t:[TCP/IP-Timeout], -ua:[User-Agent]

Mit diesen Optionen kann man Feintuning bei den TCP/IP Verbindungen einstellen. In der Regel werden diese nicht benötigt.

-bz:[0-9] für BZip2 in ZIP-Archiven

Wenn etwas mit ZIP gepackt werden soll, kann mit dieser Option bestimmt werden, ob die Daten im Archiv mit BZip2 gepackt werden soll und welche Kompressionsstärke verwendet werden soll. (Hierzu wird die PHP-Erweiterung "php-bz2" zwingend benötigt!)

-c:[code] für CharCode

GruppeKodierungen
Windowscp437, cp850, dos, oem
Ansicp1252, cp851, cp28591, iso8859/1, ansi, ascii
Winecp1250, cp852, cp28952, iso8859/2
7Bit-ASCcp65000, 7bit, asc, utf7
UTF-8cp65001, utf8
Weitereauto, html, none

Je nach Betriebssystem werden verschiedene Kodierungen für die Umlaute eingesetzt. fb_Tools versucht selber die richtige zu finden. Sollte es Probleme geben, kann man mit dieser Option die Kodierung Manuell ändern.
Folgende Kodierungen stehen zur Verfügung: auto, 7bit, ansi, cp437, cp850, cp851, cp852, cp852, cp1250, cp1252, cp28591, cp28592, cp65000, cp65001, dos, html, iso8859/1, iso8859/2, oem, utf7, utf8 ("auto" ermittelt die Kodierung automatisch - Fackback ist 7bit oder utf7 - Und "none" unterdrückt die Textausgabe.)
Beispiel:

-cc:[Config-File] für Eigene Einstellungen

Falls man mehrere Konfig-Dateien oder die Konfig-Datei von einen besonderen Ort laden möchte, kann mit -cc die Datei manuell angeben.
Wichtiger Hinweis: Wenn die Option -cc ausgewertet wird, ist der 1.Parameter für die Fritz!Box Angabe ausgewertet und verworfen worden, da die Abgabe zu dem Zeitpunkt nicht gefunden werden könnte. Eine Alternative ist eine andere Schreibweise für den 1.Parameter: name::/path/fb_config.php.

 

Beispiel:

-cm für Cron-Modus

Falls Automatisch per Cron-Dienst aufgerufen werden soll, sollte man zusätzliche diese Option aktivieren. Damit werden alle unnütze Funktionen, wie Autoupdate oder Terminal-Erkennung deaktiviert. (Ältere fb_Tools-Versionen hatten bei jedem Aufruf, unnötigerweise den Update-Server kontaktiert.)

-d für Debug (Auch als Alternative für Verbose)

Um mehr Ausgaben zu Erzeugen kann man den Debug-Modus einschalten. Je nach Level bekommt man entsprechende Mitteilungen zu sehen. Im Standard Debug-Modus werden z.B. Status-Meldungen ausgegeben, wie Login/Logout etc.
Beispiel:

-gz:[Level] für GZip Komprimierung

Einige Funktionen erlauben es Ausgabe-Dateien mit GZip zu komprimieren. Diese müssen mit .gz enden. Als Level wird eine Zahl zwischen 0 bis 9 erwartet. (0 -> Unkomprimiert im GZ-Header / 9 -> Maximale Komprimierungsstärke)
Beispiel:

-h:<a|b|k|o> für Hilfe

Alle Funktionen haben eine Hilfe-Ausgabe. Egal welche Funktion man benutzen möchte, kann man mit -h eine kleine Hilfe ausgeben lassen.
Eine erweitere Hilfe mit Beispielen: -h:b oder mit Optionen: -h:o und beides zusammen: -h:a
Benötigt eine Funktion zusätzliche Parameter werden [Pflicht]-Parameter in eckigen Klammen und <Optionale>-Parameter in spitzen Klammern markiert.
Beispiel:

-nu für KEIN Update-Check

Unterdrückt die Regelmäßige Update-Prüfung.
Beispiel:

-o:[Datei] für Output

Diese Option ist eigentlich Identisch mit Stdout - Alle Ausgeben werden in die angegebene Datei geschrieben. Nur hier wird für die Ausgabe nichts verändert. Die Zeichenkodierung der Ausgabe von fb_Tools selber ist immer Ansi (ISO_8859-1) oder gleich der Ausgabecodierung der Fritz!Box! (Mischkodierungen sind Möglich!)
Beispiel:

Login-Alternative

-p:[Protokoll]
-fb:[fritz.box]
-un:[Benutzername]
-pw:[Kennwort]
-pt:[Port]
-fw:[Firmware-Version]
-li:[Login-Version]
-tf:<OATH-TOTP>
-ui:[UI-Kennwort]

Optionsparameter für Login

Da in der Windows-Version die Einschränkung mit den 9 maximalen Parametern aufgehoben wurde, wurden jetzt neue Parameter als Login-Alternative hinzugefügt. Die können mit dem ersten Startparameter vermischt werden.
Eine Besonderheit ist die Angabe der Firmware-Version. Die wird als Integer (OS 6.51 -> 651) übergeben. Und dient als Hilfe für ältere Fritz!Boxen mit OS4 oder noch älter. (Ab OS 5 ist diese Option unnötig)
Protokoll dient als eindeutige Angabe ob HTTPS genutzt werden soll oder nicht. Folgende Werte sind möglich: auto, http, https, ssl, tls. Bei der Angabe https wird ab PHP 5.4 die Zertifikatsprüfung deaktiviert.
Beispiel:

-pe:[Extension] für PHP-Erweiterung

Wenn fb_Tools irgendeine PHP-Erweiterung laden soll, kann dies mit -pe:[...] erzwingen. Die Angabe wird direkt an dl() übergeben.
Beispiel:

-ps:[Preset-Name] in Verbindung mit -cc:[config-file]

$cfg['preset']['homebox'] = array(
  'sock' => 'http',       # Protokoll (auto, http, https, ssl, tls)
  'host' => 'fritz.box',  # IP/DNS-Adresse der Fritz!Box
  'port' => 80,           # Port (http -> 80, https -> mitmproxy.org/443)
  'user' => 'max',        # Benutzername
  'pass' => 'j7w534jqhh', # Kennwort
  'uipw' => false,        # Fritz!OS4/5 Anmelde-Kennwort bei Fernwartung
  'totp' => false);       # OS6.80+ Zwei-Faktor-Authentisierung bei Login

Beispiel für fb_config.php

Übernimmt die Fritz!Box angaben von der fb_config.php aus der Preset-Liste.
Diese Option kann mit -cc:[config-file] kombiniert werden.
Sinn macht das, wenn fb_config.php irgendwo versteckt werden soll, da dort die Zugangsdaten in Klartext drin stehen.
Beide Optionen können mit dem 1.Parameter kombiniert werden: name::/path/fb_config.php.
Beispiel:

-px:[host:port] für HTTP-Proxy

Ab fb_Tools 0.32 werden Proxys unterstützt. Alle Netzwerk-Verbindungen laufen dann über diesen Proxy. Da es nur eine einfache Implementierung für Debug-Zwecken (z.B. mitmproxy.org) gedacht ist, werden keine Proxys unterstützt die eine Authentifizierung benötigen.

-s:[SID] für SessionID

Möchte man fb_Tools in Batchdateien einsetzen, kann das ständige Anmelden hinderlich sein. Mit diesen Parameter kann man die erneute Anmeldung umgehen. (Voraussetzung ist die Login/Logout-Funktion)
Beispiel:

-ua:[String] für UserAgent

Definiert einen eigenen UserAgent. FB_Tools generiert ein UserAgent mit Technischen-Daten vom Betriebssystem. Wer dies nicht möchte, kann mit der Option einen eigenen festlegen. In der Konfig-Datei kann dies mit $cfg['head'] = array('User-Agent' => 'fb_tools'); dauerhaft festlegen.
Beispiel:

-w:[Länge] für Wortumbruch

Da die größe des Terminal-Fenstern begrenzt ist, können die Ausgaben Intelligent umgebrochen werden. Unter Linux und Windows wird die Terminal-Breite Automatisch ermittelt.
Beispiel:

-zb:[Bits] & -zp:[Password] für ZIP-Verschlüsselung

Ab fb_Tools 0.32 werden ZIP-Archive unterstützt. Mit den Optionen -zb und -zp kann die Verschlüsselung beeinflusst werden. Mit -zb kann die Verschlüsselungstiefe bestimmt werden. (Erlaubt sind: 128, 192 und 256) Und mit -zp kann das Archiv-Kennwort übergeben werden.


Einfache Funktionen:

Alle Funktionen werden mit den Parameter mode definiert und lassen sich mit den angezeigten Großbuchstaben abkürzen:
Beispiel:

Ordner bzw. Ordernamen

Wenn Sie einen Ordner in den Parametern angeben, wird Empfohlen ein Slash /oder Backslash \ dahinter zu setzen, damit fb_Tools weiß, dass es sich um ein Ordner handelt. Wenn der Ordner noch nicht existiert und sich im Ordnernamen ein %-Zeichen befindet, wird der komplette Ordnername mit strftime geparst.
Einige Funktionen erlauben es statt ein Ordner ein Tar-Archiv anzugeben. Der Dateiname muss auf .tar .tgz oder .tar.gz enden!

 

Dateien bzw. Dateinamen

Wenn kein Dateiname angegeben wird, wird der Dateiname automatisch vergeben. Aber einige Parameter-Konstellationen erlauben es leider nicht, den Dateinamen einfach weg zu lassen. Als Alternative kann einfach als Dateiname ein Punkt . angeben.
Einige Funktionen erlauben es GZip/BZip komprimierte Dateien zu verarbeiten. Der Dateiname muss dann auf .gz für GZip oder .bz2 für BZip enden!

 

Automatische HTTPS-Erkennung

Ist OpenSSL verfügbar, versucht fb_Tools anhand der Portnummer zu erkennen, ob der Request mit HTTP oder HTTPS gemacht werden soll:
Für Port 80, 8080 und 49000 verwendet fb_Tools das Protokoll HTTP und für alles andere HTTPS (Wenn verfügbar...)
Für HTTPS-Verbindungen zu aktuellen Fritz!Boxen oder AVM-Servern, benötigt man entsprechende aktuelle PHP-Versionen mit OpenSSL-Erweiterung.


 $cfg['drag'] = array(
  '*'	=> 'info hash *',
  'csv'	=> 'info csv *',
  'txt'	=> 'info cat *',
  'json'=> 'info json *',
  'tar'	=> 'info extrakt *',
  'tbz'	=> 'info extrakt *',
  'tgz'	=> 'info extrakt *',
  'zip'	=> 'info extrakt *',
  'export' => 'konfig fcs * -d',
 );

Drag'n'Drop:

Wird nur EIN Parameter übermittelt, die den Pfad einer Datei angibt, dann werden die Befehle aus der Variable $cfg[drag] angewendet.
Bis fb_Tools 0.31 war die Variable nur ein String. Ab fb_Tools 0.32 darf diese Variable auch ein Array sein, die mehrere Dateitypen zulässt.
Der Schlüsselname ist gleichzeitig der Dateityp (Ausnahme * für Universal) und in der eigentlichen Variable dient * für den Dateinamen, der beim Drag'n'Drop übermittelt wird.

 

Das heißt: Sie ziehen eine Datei auf die fb_Tools Skript-Datei und die Funktion in der $cfg[drag]-Variable wird für die Datei angewendet. (Ähnlich wie bei fb_calcsum.vbs)

 

Eine Voraussetzung ist, dass der Desktop-Manager dies unterstützt und für Windows zusätzlich, dass die Umgebungsvariable php auf den genauen Pfad von php.exe verweist, da das aktuelle Verzeichnis auf verschiedene Orte zeigen kann.


BoxInfo <file:Datei>

Fritz!Box Tools: Einfache Funktionen

Liest "jason_boxinfo.xml" und "juis_boxinfo.xml" aus gibt diesen aufbereitet in leserlicher Form aus! Der Optionale Parameter erlaubt eine vorhandene Boxinfo-Datei zu parsen.
Beispiele:


GetIP <filter>

Gibt die aktuelle Externe IP-Adresse (IPv4 & IPv6) der Fritz!Box aus. Zusätzlich werden noch die externen DNS-Adressen ausgegeben. Alle Adressen werden ohne externe Dienste per UPnP ermittelt. Wird "0.0.0.0" ausgegeben, dann hat die Fritz!Box keine Internet-Verbindung! Befindet sich die Fritz!Box hinter einen NAT-Router, dann wird logischerweise die IP-Adresse angezeigt, die vom NAT-Router vergeben wurde. Mit den Filter kann nur den entsprechenden Eintrag ausgeben lassen.

 

Hinweis: Diese Funktion ist nicht über HTTPS nutzbar!

 

Beispiele:


LED [auto|off|low|on|high|aus|dunkel|an|hell|test]

Schaltet die LEDs (Power, Telefon (DECT, Internet, Festnetz), LAN, WLAN und Info) von Fritz!Boxen und PowerLines an und aus. (Ab ca. Fritz!OS 5.5)
Einige Fritz!Boxen haben zusätzliche LEDs (z.B. für Internet) die leider weiterhin leuchten.
Mit der Test Funktion kann der Status der LEDs abgefragt werden.
Ab Fritz!OS 7.20 gibt es zusätzliche Optionen für Helligkeit Hell/Dunkel bzw. low/high sowie auto für Automatische Helligkeitsanpassung. (Natürlich muss das auch die Fritz!Box unterstützen!)
Beispiele:


Reconnect

Veranlasst die Fritz!Box über UPnP sich im Internet neu einzuwählen. (Falls die Externe IP-Adresse geändert werden muss) Es werden bei Erfolg keinerlei Ausgaben gemacht!

 

Hinweis: Diese Funktion ist nicht über HTTPS nutzbar!


SupportDaten <file:Datei|Ordner|.> <func:ExTrakt|Datei> <-tm:(on|off)>

Alle Support-Daten der Fritz!Box auslesen. Beim Aufruf wird die Support-Datei im aktuellen Arbeitspfad oder im Angegebenen Verzeichnis erstellt. Mit Extrakt können die SupportDaten in einzelne Dateien auf gesplittet werden. (Ähnlich die Konfig ExTrakt) und man kann zusätzlich die Telemetrie-Daten mit -tm:on ein und -tm:off wieder ausschalten. Statt Extrakt kann man mit den Parameter func auch eine Datei angeben, die auf gesplittet werden soll.
Beispiel:


SystemStatus <code:SupportCode>

Liest den Status-String aus gibt diesen in leserlicher Form aus! Ist ist auch Möglich einen eigenen SupportCode anzugeben.
Beispiel:


Traffic

Hier wird sämtlichen Daten-Zähler der Fritz!Box ausgelesen und in einer Tabelle ausgegeben. Weitere Funktionen/Optionen gibt es bislang keine!


Export Funktionen:

AnrufListe <file:Datei> <from> <to>

Fritz!Box Tools: Anrufliste & Ereignisse

Zeigt eine Anrufliste aller Telefonate der Fritz!Box an. Die Anrufliste wird als CSV-Datei gespeichert. Wobei der Dateiname mit strftime geparst wird.
Der Separator ist mit der Option -cs: frei wählbar. Mit der Option -ch wird noch ein Kopfzeile an jeder neuen Datei erstellt. Falls Sie ein anderes Datum-Format in der Ausgabe wünschen, können Sie es mit -ft:'strftime' ändern. Mit der Option -lf kann die Anrufliste als Logfile gespeichert werden. (d.H. Alle Einträge werden mit strftime geparst und am Ende der Datei angehängt oder in einer neuen Datei gespeichert) Mit den Parameter from und to kann die Anrufliste auf ein Zeitfenster reduziert werden. (Die Zeitangaben werden mit strtotime() geparst)
Beispiele:


Ereignisse <file> <filter> <from> <to> <-cs:[Separator]> <-lf>

Zeigt alle Ereignisse der Fritz!Box an. Die Ereignisse können als CSV-Datei gespeichert werden. Wobei der Dateiname mit strftime geparst wird.
Der Separator ist mit der Option -cs frei wählbar. Falls Sie ein anderes Datum-Format in der Ausgabe wünschen, können Sie es mit -ft:'strftime' ändern. Mit der Option -lf können die Ereignisse als Logfile gespeichert werden. (d.H. Alle Einträge werden mit strftime geparst und am Ende der Datei angehängt oder in einer neuen Datei gespeichert) Mit den Parameter from und to können die Ereignisse auf ein Zeitfenster reduziert werden. (Die Zeitangaben werden mit strtotime() geparst)
Alle Ereignisse können nach Kategorien gefiltert werden. Folgende Filter/Kategorien stehen zur Verfügung: alle, telefon, internet, usb, wlan, system
Beispiele:


Konfig [export|extrakt|file|import] <if/of:Datei/Ordner> <pass:Kennwort>

Fritz!Box Tools: Konfig-Dateien & Wahlhilfe

Mit der Konfig-Funktion können Sie die Einstellungen unverändert der Fritz!Box exportieren:
fb_tools fritz.box konfig export <of:Datei> und importieren:
fb_tools fritz.box konfig import [if:Datei].

 

Beim Export ist es mit fb_tools fritz.box konfig extrakt <of:Ordner> möglich, die Einzelnen Fragmente der Konfiguration zu entpacken, die auch mit Import-Funktion wieder importiert werden können.

 

Um Konfig-Dateien zu Konvertieren gibt es die File-Funktion, die es Teilweise erlaubt auch ohne Fritz!Box zu Arbeiten.

 

Werden Manipulationen an der Konfiguration vorgenommen, können diese mit:
fb_tools fritz.box konfig import-calcsum [if:Datei] importiert werden. Die Checksumme wird dabei neu berechnet. (Somit kann man auch Manipulation an allen aktuellen Fritz!Boxen UND Kabelboxen (z.B Fritz!Box 6590) vornehmen).
Eine Alternative dazu ist Fritz!Box JSTool in JavaScript oder Fritz!Box VBScripte in VBScript

 

Möchte man seine Zugangsdaten in Klartext angezeigt bekommen, kann man sich diese mit:
fb_tools fritz.box konfig export-decrypt entschlüsseln lassen. Dazu wird entweder die PHP-Erweiterung: OpenSSL oder MCrypt benötigt. Als Alternative reicht eins der AES-Scripte, die im Archiv fb_tools.7z mit beiliegen. (Sind aber sehr langsam!)
Mit fb_tools info extension können sie überprüfen, ob und welche Erweiterung erfolgreich geladen werden konnte. (OpenSSL ist die beste Wahl)

 

Möchte man die Daten aus einer vorhandenen Konfig-Datei in Klartext, dann entschlüsselt man die Daten ohne Fritz!Box mit:
fb_tools konfig file-decrypt [if:Datei] [pass:Kennwort].

 

Die Kennwort-Angabe darf mehrfach vorkommen oder der Dateiname einer Kennwort-Datei.
Beispiel:

 

Bei Konfig-Dateien die OHNE Kennwort gespeichert wurden, wird folgendes benötigt:

Beispiel:

 

Hinweise:


Smarte Funktionen:

WahlHilfe [tel:Rufnummer] <fon:Telefon>

Die Funktion Dial ist in Wahlhilfe umbenannt worden, aber dial ist z.Z. noch gültig. Nach Angabe einer Telefonnummer wählt die Fritz!Box selber und gibt das Telefonat an ein bestimmtes Telefon weiter. Es werden nur Zahlen sowie * und # akzeptiert. Alle anderen Zeichen werden für die Telefonnummer ignoriert. (Leerzeichen dürfen nicht ohne "Anführungszeichen" übergeben werden)
Beispiel:

Besteht eine Rufnummer nur aus Sonderzeichen dann wird aufgelegt!
Beispiel:

Code:Anschluss:
1-4FON 1-4
50ISDN & DECT
51-58ISDN 1-8
60-65DECT 1-6

Optional kann zusätzlich das Telefon für die Wahl mit angegeben werden! Man kann entweder die Interne Rufnummer für das Telefon verwenden oder den Anschlussnamen. ( OHNE Leerzeichen!)
Beispiel:

 

Hinweis: Die Wahlhilfe der Fritz!Box unterstützt KEINE IP-Telefone!

 

Es werden außer im Fehlerfall, keinerlei Ausgaben gemacht!


KomFort <func> <cmd:an|on|aus|off|test> <id>

Funktionen (func)Beschreibung
listListet alle Schaltmöglichkeiten auf
wlanwifiFunknetzwerk schalten
gastguestGastnetz schalten
wlan-wpswifi-wpsWPS für das Funknetz aktivieren
gast-wpsguest-wpsWPS für das Gastnetz aktivieren
rufrulesRufumleitungen schalten
abtamAnrufbeantworter schalten
weckeralarmWeckrufe schalten

Mit der Komfort-Schnittstelle können die WLAN, Anrufbeantworter, Rufumleitungen und Wecker an und ausschalten. Technisch läuft das über die MyFRITZ-Schnittstelle und wird erst ab Fritz!OS 6.80 unterstützt.

 

Bis Fritz!OS 7.20 reichte es, wenn als Parameter der Befehl <cmd> und die ID <id> übergeben wurde. Aber ab Fritz!OS 7.20 wurde die API vollständig geändert und die Funktion <func> muss mit übergeben werden, da die ID nicht mehr eindeutig ist.
Es gibt nur drei Befehle <cmd> die man schicken kann: an, aus oder test
Beispiele:


Smarthome [func:Funktion] <ain> <hkr|kelvin|dimm|hsv|color|file>

Fritz!Box Tools: Komfort & Smarthome

Mit dem Modus SmartHome kann Aktoren wie Schaltsteckdosen, Heizkörperregler, Lampen und Rolladen schalten und auslesen. Um ein Aktor direkt zu steuern muss man die AIN oder die ID wissen. Alternativ kann man auch den Namen verwenden. (Letztere enthält meistens Leerzeichen und muss "Anführungszeichen" übergeben werden).
Eine Übersicht aller Aktoren erhält man mit den Befehl list:

list

Gibt eine einfache Übersicht aller Aktoren aus.
Beispiel:

csv <file:Datei>

Gibt wie list, eine einfache Übersicht aller Aktoren als CSV-Datei aus.
Mit der Option -cs kann man den Separator frei wählen.
Beispiel:

json <file:Datei>

Gibt im Gegensatz zu list oder csv eine umfangreiche Liste aller Aktoren als JSON-Datei aus.
Beispiel:

info [ain:Aktor]

Hiermit kann man sich sämtliche Informationen über einen Aktor als Texttabelle anzeigen lassen. Als Parameter ain wird eine eindeutige Aktor-ID erwartet, die eine AIN, ID oder der Name sein kann. (AIN und ID können OHNE Leerzeichen angegeben werden!)
Beispiel:

an/aus/off/on/schalt/switch [ain:Aktor]

Mit diesen 6 Befehlen lassen sich Schaltbare-Aktoren entsprechend schalten. Als Parameter ain wird eine eindeutige Aktor-ID erwartet, die eine AIN, ID oder der Name sein kann. (AIN und ID können OHNE Leerzeichen angegeben werden!)
Mit der Option -f kann man den Aktor direkt, ohne weitere Hilfestellung, ansprechen. (d.H. Es muss die korrekte AIN angegeben werden - ID oder Name gehen dann nicht!)
Beispiel:

close/down/runter/stop/halt/open/up/rauf [ain:Aktor]

Damit lassen sich die Rolladen steuern (Vermutlich - denn es ist ungetestet, weil ich keine habe ;-)) Beispiel:

test [ain:Aktor]

Mit diesen Befehl läßt sich der aktuelle Schaltzustand eines Aktors abfragen. Als Parameter ain wird eine eindeutige Aktor-ID erwartet, die eine AIN, ID oder der Name sein kann. (AIN und ID können OHNE Leerzeichen angegeben werden!)
Beispiel:

set [ain:Aktor] [hkr|kelvin|dimm|hsv|color]

ArgumentInhaltBeschreibung
hkr:8.0-28.0 | an | aus | komfort | sparTemperatur vom Heizkörperregler setzen[1]
kelvin:2700-6500Farbtemperatur von der Lampe in Kelvin setzen[2,3]
dimm:0-100Helligkeit der Lampe in Prozent setzen
hsv:0-359,0-100,0-100Farbwinkel, Farbsättigung und Helligkeit von der Lampe setzen[2]
color:Farbname 1-3Farbname mit Sättigungsnummer[2,3]
ain:TemplateAktor nach Vorgaben setzen
(1) Temperatur auf 0.5° genau setzen (Änderungen dauern bis zu 15 Minuten)
(2) Akzeptiert z.Z. nur Vorgabewerte - Alternativ [color] nutzen
(3) Verfügbare Farbnamen mit [func:info] abfragen

Hiermit kann man eine Lampe oder einen Heizkörperregler einen Wert zuweisen. Bei einen Der Parameter hkr ist für den Heizkörperregler gedacht. Mit den Werten komfort und spar lassen sich die in der Fritz!Box eingestellten Werte einstellen. Ansonsten wird der Wert als soll Temperatur gesetzt.
Ab fb_Tools 0.32 kann der Befehl set auch Vorgaben für einen Aktor setzen

 

Die Parameter kelvin, dimm, hsv und color sind für die Farblampe gedacht. [kelvin], [hsv] und [color] akzeptieren nur Vorgabewerte, die man mit [func:info] abfragen kann.

 

Als Parameter ain wird eine eindeutige Aktor-ID erwartet, die eine AIN, ID oder der Name sein kann. (AIN und ID können OHNE Leerzeichen angegeben werden!)
Beispiel:


Sonder Funktionen:

Info <func|Datei>

Die Info-Funktion ist eine Interne Funktion und benötigt keine Fritz!Box. Man kann einige nützliche Informationen ausgeben lassen und kleine Tests durchführen.
Ohne weitere Parameter wird die aktuelle Version von fb_Tools ausgeben, sowie die verwendete PHP-Version.

Arg <arg>

Alle geparsten Argumente ausgeben (Benannte und unbenannte Argumente - Teilweise mit Regex-Ergebnisse)
Beispiel:

Echo <str:String>

Wenn es Probleme mit den Parametern gibt, kann es hilfreich sein, zu überprüfen, ob die Parameter Fehlerfrei an fb_Tools übergeben wurden.
Beispiel:

eXtrakt [Datei] <Verzeichnis>

Listet kleine TAR/ZIP-Archive auf und kann auch sämtliche Dateien daraus entpacken. (Bedenken sie, dass das Archiv intern komplett entpackt wird und somit keine großen Archive bearbeitet werden können.) Mit der Option -pa:[TAR|ZIP] kann man festlegen was es für ein Archiv ist, wenn es nicht die Dateierweiterung aussagt. Handelt es sich um ein Kennwortgeschützes ZIP-Archiv, dann kann mit der Option -zp:[Kennwort] das Kennwort übergeben.

Hash <Datei|String>

Geben Sie als Parameter eine Datei an, wird von dieser Datei mehrere Checksummen (CRC32, MD5, SHA1, SHA256 und SHA512) erstellt. Ansonsten wird es als String betrachtet und davon die Checksummen berechnet.
Beispiel:

JSON [Datei]

Mit dem Internen JSON-Parser können beliebige JSON-Dateien lesbar angezeigt werden. Beispiel:

OTPauth <Geheimnis|Datei>

Die Zwei-Faktor-Authentisierung der Fritz!Box kann ab Fritz!OS 7 mit einen sechs stelligen Token durchgeführt werden. Dazu wird das 160 Bit Geheimnis (Der Code ist entweder zusammen geschrieben oder in 8 Blöcken zu je 4 Zeichen unterteilt) benötigt, das die Fritz!Box bei der Erstellung für den Google_Authenticator generiert hat.
Von den zwei Möglichkeiten können Sie sich eine aussuchen:

 

Entweder wird PHP in der Version 5.1.2+ oder es wird die Bibliothek hashtool.php in den libs-Ordner benötigt.

 

Es gibt nun vier Möglichkeiten fb_Tools das Geheimnis zu übermitteln:

 

Zusätzlich gibt es noch drei Optionen:

StrfTime <str:String> <time>

Dient um zu überprüfen, welche Datumsformate vom Betriebssystem unterstützt werden. Wird nichts als String angegeben, werden alle ausgegeben.
Beispiel:

Update <opt:check> <-f>

Hiermit können Sie fb_Tools über das Internet updaten. Soll nur geprüft werden, ob es ein Update gibt, dann muss zusätzlich "Check" mit angegeben werden. Soll fb_Tools im jeden Fall durch die aktuelle Version im Internet ersetzt werden, dann müssen Sie die Option -f zusätzlich mit angeben.
Beispiel:

 

Hinweis: Bei der Windows-Version ist es möglich, dass nach dem eigentlichen Update Script-Fehler auftreten. Dies passiert, weil zwei verschiedene Script-Interpreter das selbe Script ausführen und ein Interpreter nicht mitbekommt, dass das Script ausgetauscht wurde.

Extension

Gibt alle externen Bibliotheken aus, die von fb_Tools gefunden/nachgeladen wurden

OpenSSL

Prüft ob OpenSSL vorhanden ist und damit HTTPS möglich ist

 

Nicht alle Info-Funktionen sind hier Dokumentiert... - Einfach mal fb_tools info -h aufrufen ;-)


Login / Logout

Für Batch-Script können Sie sich damit Manuell einloggen und eingeloggt bleiben. Die SID (SessionID) kann entweder direkt oder als Datei angegeben werden.
Dies könnte wie folgt aussehen:
fb_tools fritz.box login sid
fb_tools plugin privat.php -s:sid
fb_tools logout -s:sid

 Mal ein Beispiel für eine Windows Batch-Datei:
call fb_tools.bat password@fritz.box login sid.json
call fb_tools.bat ereignisse file:internet-%y%m.log filter:internet -s:sid.json
call fb_tools.bat ereignisse file:telefon-%y%m.log filter:telefon -s:sid.json
call fb_tools.bat ereignisse file:wlan-%y%m.log filter:wlan -s:sid.json
call fb_tools.bat ereignisse file:usb-%y%m.log filter:usb -s:sid.json
call fb_tools.bat ereignisse file:system-%y%m.log filter:system -s:sid.json
call fb_tools.bat logout -s:sid.json

Plugin [plug:Plugin-Datei] <...> oder [Check|Install|List|Update]

# md5_summer 06.01.2024 16:39:24 (fbt_plugins.tgz) d4d378d9d37715c5f9a652037c50d2a5 0.02 *fbtp_2fa.php 6514856ed1115ca681a2ff3ff54c52cd 0.03 *fbtp_callmonitor.php 13b730777005b517ee6e8f88dc4ea133 0.01 *fbtp_dsl-resync.php 28099808389a8752a0dc975147c977af 0.02 *fbtp_fbdata.php 4c77ded1d2263674b2e0f007f367976e 0.01 *fbtp_juis-update.php 9fa704fe4367bbb7f18b4c458e5f703f 0.32 *fbtp_konfigdecrypt.php fd9c24f1cabcec5df7416c8b20d7c4ec 0.05 *fbtp_konfighacker.php e30ab57a6d903c3669ebb54559f42aeb 0.01 *fbtp_konfigpatcher.php 3482e4ce16af88703afb075080605327 0.10 *fbtp_laborsync.php 1bd7e773dd24a467a89c430331617d22 0.04 *fbtp_manualsync.php fd2b71bff923cc291c39b3a895aec73e 0.04 *fbtp_neustart.php 1fb9a4ac2981a9aa0156a483ef80d672 0.01 *fbtp_serial.php 624e50eb3c8da6cb1dcc376612bd3ac2 0.05 *fbtp_sqldb.php be42020e4b4e52c456454a94c03bb79e 0.03 *fbtp_telefonbuch.php aecc986e4a8e41cb7b272a3e98b11e16 0.00 *fbtp_test.php 07626dedd42521df683cae94f220efe2 0.10 *fbtp_websync.php Mit der Plugin-Schnittstelle ist es möglich eigene PHP-Erweiterungen für fb_Tools zu schreiben. Die Plugin-Datei wird mit include aufgerufen und das Plugin kann über alle Funktionen von fb_Tools verfügen.
fb_Tools sucht Plugins zuerst in den Ordner plugins im aktuellen Verzeichnis. Alternativ nur im aktuellen Verzeichnis. Anschließend das ganze nochmal im Script-Verzeichnis. Man kann auch ein vollständigen Pfad mit Dateinamen zur Plugin-Datei angeben, um das Plugin zu starten. (Dazu ist die mode:plugin Angabe erforderlich!)
Als Alternative dazu gibt auch eine Option -pp:<Plugin-Path>, wo man das genaue Verzeichnis angeben kann, wo die Plugins liegen oder installiert werden sollen.

 

Im Archiv fb_tools.7z liegen einige Plugins mit dabei. Diese können ab fb_Tools 0.25 OHNE das Mode-Argument plugin aufgerufen werden.
Beispiel:

 

Die Plugins können unabhängig von fb_Tools über das Internet mit plugin install Installiert oder plugin update Aktualisiert werden. Mit der Option -ow wird das alte Plugin mit dem Update überschrieben und keine Sicherheitskopie angelegt. Die Option -f ignoriert sämtliche Fehler.
Beispiel:

 

WARNUNG: Achten Sie darauf, welche Scripte Sie einbinden - Es gibt KEINE Prüfung auf Malware oder Schadsoftware!!!


fbtp_2fa.php [func]

Ab Fritz!OS 7.39+ kann man die Zwei-Faktor-Authentisierung ohne Neustart an und ausschalten. Für eine Prüfung darauf sind keine Logindaten erforderlich. Abgesehen von den Fritz!Box-Anmeldedaten benötigt das Plugin nur einen Parameter func:

 

Funktionen (Func):

 

Beispiel:


fbtp_callmonitor.php <Logdatei> <fritz.box> <timeout>

Diese kleine Erweiterung läuft auch OHNE fb_Tools und überwacht den Port 1012. (Dieser Port muss zuvor mit #96*5* aktiviert werden)
Alle externen Anrufe werden in Echtzeit erfasst und Protokolliert.
Beendet wird die Erweiterung mit CTRL-C.

 

Beispiel:


fbtp_fbdata.php [level] <save>

Mit dieser Erweiterung kann alle Informationen aus einer Fritz!Box heraus exportieren. Die Exportieren Daten werden nicht verändert oder sonst wie Interpretiert.
Mit dem ersten Parameter level wird der Export in drei unterschiedlichen Ebenen Unterteilt:

Mit dem Parameter save können sie ein Verzeichnis Angeben, wohin die Exportieren Daten geschrieben werden sollen. Es ist auch Erlaubt ein TAR oder ein ZIP-Archiv anzugeben.

 

Beispiel:


fbtp_juis-update.php [func] <file:juis_boxinfo.xml|name:fritzbox> <dir:Verzeichnis> <xml:Datei>

Diese Erweiterung kann nach Updates für die eigene oder mit einer Datenbank nach einer beliebigen Fritz!Box suchen. Funktionen (Func):

 

Beispiel:

 

Alternativ kann man eine XML-Datei benutzen, wovon der Update-Check gemacht werden soll. Die Datei erhalten sie entweder mit dem Parameter xml oder manuell mit http://fritz.box/juis_boxinfo.xml.

 

Beispiel:

 

Suche nach Updates von "Fiktiven Fritz!Boxen" aus einer Datenbank.
Mit dem Parameter name ist Möglich, nach Updates von Fritz!Boxen zu suchen, die man gar nicht besitzt. Dazu wird eine Datenbank benötigt, die man beim ersten Aufruf mit der Optionsangabe -up herunterladen und lokal speichern kann. Es reicht völlig die Datenbank Jährlich zur aktualisieren, da AVM nicht ständig neue Modelle auf dem Markt bringt.

 

Beispiel:

 

Optionen

 

Beispiele:


fbtp_konfigdecrypt.php [ExPort|ExTrakt|File] <if/of:Datei/Ordner> <pass:Kennwort> <of:Datei> (End of Service)

Die Entschlüsselungsfunktion für die Konfig-Dateien aus fb_Tools 0.13-0.22 wurde als Plugin ausgelagert. Für die Entschlüsselung wird eine Fritz!Box mit Fritz!OS 5 - 7 benötigt. (Provider Fritz!Boxen spielen dabei nicht mit!)
Man kann die Konfig entschlüsselt exportieren mit:
fb_tools fritz.box konfigdecrypt export of:fb.export oder entschlüsselt aufsplitten mit:
fb_tools fritz.box konfigdecrypt extrakt of:export

 

Dann kann noch eine separate Konfig-Datei mit:
fb_tools fritz.box konfigdecrypt file if:fb.export pass:geheim of:fb_decrypt.export entschlüsselt werden.

 

Hinweise:


fbtp_konfighacker.php [crypt] <pass> <mac> <serial>

Mit KonfigHacker können Sie alte Konfig-Dateien, die OHNE Kennwort gespeichert wurden, die MAC-Adresse zum Entschlüsseln per Brute-Force herausfinden. Auch eine Kennwortgeschütze Konfig-Datei, kann mit einer Passwortliste durchprobiert werden. Auch wenn es nur ein PHP-Script ist, dass nur mit einen Threat läuft, ist es relativ effizient:

Theoretisch müssten alle 248 Möglichkeiten durchprobiert werden. Da es ein System in der Vergabe der MAC-Adressen gibt, reduziert sich das auf maximal 31*224.

 

Der Pflicht-Parameter benötigt den ersten Verschlüsselten Wert aus der Konfig-Datei, dass ohne Kennwort gespeichert wurde. (Password=$$$$ABC...456)
Mit dem ersten Optionalen Parameter kann man eine Kennwort-Datei angeben, die der Reihe nach durchprobiert werden. Damit kann man auch Kennwort geschützte Konfig-Dateien durchprobieren.
Wurde das Konfig-Kennwort gefunden, wird es ausgegeben. Handelt es sich um eine MAC-Adresse kann Konfig-Datei mit:

Mit dem Parameter pass:[filename | password] kann man auch ganze Kennwortlisten (Optional mit gzip/bzip2 gepackt) angeben, die nacheinander durchprobiert werden.

 

Es sollte KLAR sein, dass man nur seine eigene Konfig-Dateien knacken darf.


fbtp_konfigpatcher.php [patch] <cmd> <set> <file> <save>

Patches (patch)ParameterBeschreibung
Base2Bin Convertiert Base64 Container in Binaer
Bin2Base Convertiert Binaer Container in Base64
GUI-Protectcmd: on | off(Ent)sperrt Konfigbereiche der Fritz!Box
LEDcmd: on | offSchaltet die LED-Leuchten an oder aus
TwoFactorcmd: on | off(De)aktiviert die Zwei-Faktor-Authentisierung
VoIP-Protectcmd: on | off(Ent)sperrt die VoIP-Einstellungen der Fritz!Box
WLANMAC-Overrideset: macÜberschreibt die WAN-MAC-Adresse mit einer beliebigen anderen MAC-Adresse

Das Plugin ermöglicht die Fritz!Box-Konfiguration mit einem Patch zu verändern. Es gibt drei Arten von Vorgegebenen Patches:

Die Konfiguration wird direkt aus der Fritz!Box ausgelesen und nach dem Patchen wieder zurück geschrieben. Nach dem folgenden Neustart sollten die Modifikationen wirksam sein.
Mit dem Parameter file und save kann man die Konfigurationsdateien direkt Patchen.

 

Beispiele:


fbtp_laborsync.php [dir:Lokal-Dir] <Option>

Aktuelle Labor Firmware-Images können Sie mit diesen Plugin automatisiert vom AVM-Server herunterladen. (Beachten Sie, dass für die https-Verbindungen mit dem AVM-Server die neuste OPENSSL-Version brauchen.) Als einziger Parameter wird ein Verzeichnis verlangt, wo die Firmware-Dateien gespeichert werden sollen.
Zusätzlich gibt einige neue Optionen, die das Verhalten beeinflussen:

 

Beispiel:


fbtp_manualsync.php [dir:Lokal-Dir] <group> <lang>

langLand
beBelgië
befrBelgique
enEnglish
esEspaña
itItalia
lufrLuxembourg
luLuxemburg
nlNederland
plPolska
atÖsterreich
chSchweiz
chfrSuisse

Aktuelle PDF-Anleitungen können mit diesen Plugin vom AVM-Server heruntergeladen werden. (Beachten Sie, dass für die https-Verbindungen mit dem AVM-Server die neuste OPENSSL-Version brauchen.) Mit dem Parameter dir wird ein lokales Verzeichnis angegeben. Der Parameter group filtert die PDF-Anleitungen nach der Gruppe. Wird keine Gruppe angegeben, wird nichts gefiltert. Folgende Gruppen sind möglich: Box, Fon, WLAN, PowerLine, DECT, Additional und Schnittstellen. Zusätzlich ist Möglich mit dem Parameter lang die gewünschte Sprache auszuwählen, wenn es nicht Deutsch sein soll. (In der rechten Tabelle finden Sie die unterstützten Sprachen)
Des weiteren gibt einige Optionen, die das Verhalten beeinflussen:

 

Beispiele:


fbtp_neustart.php

Startet die Fritz!Box über Weboberfläche neu. Abgesehen von den Anmeldedaten der Fritz!Box benötigt dieses Plugin keine weiteren Parameter.

 

Beispiel:


fbtp_serial.php [func|file|serial|version]

Mit diesem Plugin können sie bei neuen Fritz!Boxen (ab der 5. Generation [x5xx]) die Seriennummer direkt aus der Fritz!Box auslesen und mit Hilfe einer Datenbank entschlüsseln lassen. Bei älteren Fritz!Boxen muss die Seriennummer Manuell mit dem Parameter <serial> angeben. Für dieses Plugin sind von der Seriennummer (C213.348.00.123.456) nur die ersten beiden Werte vom nutzen. (Baudatum & Modell) Der Rest kann weggelassen werden. Die Seriennummer kann direkt mit dem Parameter <serial> angegeben werden.

 

Beispiel:

 

Mit dem Parameter func:import können sie die Seriennummer von fb_Tools aus der Fritz!Box auslesen lassen, sofern sich diese auslesen lässt. Handelt es sich um eine ältere Fritz!Box dann wird nur die Firmware-Nummer ermittelt und die Berechnung des Baudatums weggelassen.

 

Beispiel:

 

Mit dem Parameter file können sie das ZIP-Archiv aus der Fritz!Box (System/Sicherung / Telefonie-Daten sichern) direkt zum Analysieren dem Plugin vorlegen. Dies ist mit "import" nahezu identisch.

 

Beispiel:

 

Datenbank: .sndb.json.gz
Für die genaue Berechnung des Baudatums aus der Seriennummer, wird eine Datenbank benötigt, wo alle Hardware-Nummern gespeichert sind. Diese Datenbank kann mit der Option -up heruntergeladen/aktualisiert werden und wird im Plugin-Ordner von fb_Tools gespeichert. Beim ersten Aufruf muss die Option -up angegeben werden. Die Datenbank muss nur bei der Meldung aktualisiert werden: "Keinen Eintrag für Hardware-ID xxx gefunden". Da ihre Hardware bzw. ihre Hardware-ID noch nicht erfasst wurde.

 

Beispiel:

 

Folgende Optionen stehen noch zur Verfügung:

 

Weitere Beispiele:


fbtp_sqldb.php [func] [mysql|sqlite|preset] <query|sql> <file>

Liest aus der Fritz!Box die Anrufliste, Ereignisse oder den Traffic-Zähler aus und schreibt diese in eine MySQL oder SQLite Datenbank.
Dieses Plugin richtet sich demnach an diejenigen, die wissen was eine Datenbank ist und wie man die Datenbank administriert.
Unterstützt werden die Datenbanken MySQL 4.1+ und SQLite 3.8+ mit den entsprechenden Erweiterungen: mysqli und sqlite3.
Wer noch nie mit Datenbanken gearbeitet hat, sollte von MySQL vorerst die Finger lassen. SQLite ist für Anfänger gut geeignet. (Eine Datenbankdatei ohne Benutzer oder Zugriffsverwaltung).

 

Weitere Datenbanken sind bislang noch nicht geplant. Die SQL-Anweisungen im Quelltext sind Augenscheinlich für SQLite geschrieben, werden falls erforderlich, mit Regulären Ausdrücken für MySQL umgewandelt.
Bei dem Design der Tabellen habe ich einen Kompromiss zwischen Einfach und Redundanz arm getroffen. d.H. Es gibt alle Funktionen eine Haupttabelle und eine für zusätzliche Daten. Alle Daten können jederzeit Export und Import werden. (Falls sich das Datenbankschema mal ändern sollte)

 

Um mit PHP auf eine Datenbank zugreifen können, werden die PHP-Erweiterungen: mysqli und/oder sqlite3 benötigt.

Mit fb_tools info extension kann man testen, ob die PHP-Erweiterungen korrekt installiert sind.

$cfg['plugin']['sqldb']['preset'] = array(
'mydb' => array(
 'type' => 'mysqli',
 'host' => 'localhost',
 'port' => 3306,
 'user' => 'root',
 'pass' => '12345',
 'base' => 'fb_tools'
),
'lite' => array(
 'type' => 'sqlite3',
 'file' => 'pfad/sqlite.db')
);

Beispiel für fb_config.php

Für den Zugriff auf die Datenbank gibt es drei mögliche Argumente:

 

Als aller erstes muss man die Tabellen anlegen.

fb_tools wird dann mit der Datenbank zusammen mit init aufrufen.
Beispiel:
fb_tools sqldb mysql:'user:pass@localhost:3306/fb_tools' init
fb_tools sqldb sqlite:'./meinebox.db' init

 

Speziell für init gibt einige Optionen: -dt, -f, -it (Siehe Optionen - weiter unten)
Die Optionen -pf und -pm müssen entweder immer wieder angegeben werden oder können auch in fb_config.php hinterlegt werden.

Funktionen (func)Beschreibung
Call | AnrufListeAnrufliste der Fritz!Box mit Datenbank abgleichen[1]
Call-Export <file>Datenbank-Export der Anrufliste als CSV-Datei[2,3]
Call-Import [file]Datenbank-Import der Anrufliste von einer CSV-Datei[2,3,4]
Event | EreignisseEreignisse der Fritz!Box mit Datenbank abgleichen[1]
Event-Export <file>Datenbank-Export der Ereignisse als CSV-Datei[2,3]
Event-Import [file]Datenbank-Import der Ereignisse von einer CSV-Datei[2,3,4]
Traffic | VerkehrDaten-Zähler der Fritz!Box mit Datenbank abgleichen[1]
Traffic-Export <file>Datenbank-Export der Daten-Zähler als CSV-Datei[2,3]
Traffic-Import [file]Datenbank-Import der Daten-Zähler von einer CSV-Datei[2,3,4]
InitTabellen für die Anrufliste, Ereignisse und Traffic erstellen[2]
Query | Abfrage [sql] <file>Eigene Datenbank-Abfragen durchführen[2,3]
Query [query] <file>Vorgefertigte Datenbank-Abfragen durchführen[2,3]
(1) Fritz!Box Anmeldung erforderlich
(3) GZip/BZip2-Unterstützung
(2) Ohne Fritz!Box nutzbar
(4) Verzeichnis mit mehreren Dateien

Die Funktionen in SQLDB sind in drei Gruppen aufgeteilt, die wiederum in drei Gruppen aufgeteilt sind:

 

Bei Export werden die Daten in einer CSV-Datei umgewandelt, so als ob sie aus der Fritz!Box gekommen wären. Die Datei kann mit GZip/BZip2 komprimiert oder als komprimierte Datei gelesen werden. Wird beim Export KEINE Datei angegeben, wird eine Tabelle auf den Bildschirm erzeugt und auf 100 Einträge reduziert. (Bei Zu vielen Daten bricht fb_Tools in sich zusammen)

 

Beim Import ist eine Verzeichnis-Angabe und das Wildcard-Zeichen * im Dateinamen erlaubt. - So können die ganze Anruflisten aus den Push-Dienst in einen Ordner gepackt werden und importiert werden.

 

Soll die Datenbank von der Fritz!Box gefüttert werden, sind natürlich noch Zugangsdaten der Fritz!Box erforderlich. (Die fb_config.php lässt grüßen ;-))
Das ganze "schreit" nach einen Cron-Dienst.
Ich empfehle die Anruflisten und die Ereignisse Stündlich abzurufen. Die Traffic-Daten müssen nur Täglich abgerufen werden.
Das Plugin kann immer nur einen Abgleich durchführen. - Alles auf einmal ist leider NICHT möglich.

 

Zusätzlich gibt es Vorgefertigte Datenbank-Abfragen die mit [query:name] angegeben werden können.
Eine vollständige liste erhalten Sie mit fb_tools sqldb [Datenbank] query
Hinweis: Die Vorgefertigten Datenbank-Abfragen verhalten sich teilweise je nach Datenbank und PHP-Version unterschiedlich. - Da es nur Abfragen sind, halten sich meine Prioritäten diesbezüglich in Grenzen...

 

Alternativ können auch eigene Abfragen durchführen - Ich Empfehle es direkt über die Datenbank zu machen und nicht über fb_tools. (WICHTIG: IMMER ein Limit setzen!)
Beispiel:
fb_tools sqldb preset:lite query sql:'select * from [sqlite_master] limit 100'

 

Zusätzlich gibt einige Optionen, die das Verhalten beeinflussen:


fbtp_telefonbuch.php [func:list|export] <buch|save>

Zeigt ein Telefonbuch an, das mit dem Parameter buch übergeben wurde.
Oder exportiert sämtliche Telefonbücher aus der Fritz!Box in das Archiv/Verzeichnis, das mit dem Parameter übergeben save wurde.

 

Beispiele:


fbtp_websync.php [dir:Lokal-Dir] [web:HTTP-Dir] <web:HTTP-Dir> ... <Option>

Synchronisiert alle Firmware Versionen auf dem AVM-Server mit einen Lokalen-Verzeichnis.
Mit dem ersten Parameter dir wird das Lokale-Verzeichnis definiert. Der Parameter web ist ein Multiparameter. d.H. er darf mehrmals angegeben werden. Wenn mehrere Web-Verzeichnisse angegeben werden, brauchen weitere Parameter nicht den Protokoll und Domain-Angabe. Die Server-Adressen von AVM lauten: http://download.avm.de, http://service.avm.de/downloads/ und http://osp.avm.de und können wie folgt angegeben werden:

 

Beispiel: fb_tools websync d:/AVM http://download.avm.de/fritzbox/fritzbox-7490 /fritzbox/fritzbox-7590 -gm -d
Ich Empfehle, dass man den korrekten Pfad mit dem Browser vorher ausprobiert.
Zusätzlich gibt einige Optionen, die das Verhalten beeinflussen:


Bekannte Probleme:


Getestet:


Benutzte Bibliotheken:


Fragen & Antworten:

Ich habe mein Anmeldekennwort vergessen! - Kann man es mit fb_Tools hacken?

Nein! fb_Tools ist KEIN Hacking-Tool. Entweder Sie suchen weiter oder Sie setzen Ihre Fritz!Box zurück.
 

"Der Befehl ""php"" ist entweder falsch geschrieben oder konnte nicht gefunden werden."

Sie haben vergessen PHP zu installieren! - oder Sie haben fb_tools.bat nicht in das PHP-Verzeichnis kopiert.
 

Warum liegt PHP nicht im Archiv mit bei?

Erstens: fb_Tools wurde für mehrere Betriebssysteme Programmiert, wo man unmöglich alle entsprechende PHP-Versionen mit bei legen kann und zum anderen: Ich bin KEIN Download-Hoster! Für Windows-Benutzer habe ich ein Neben-Projekt PHP Batch, wo man verschiedene PHP-Binaries bei mir herunterladen kann.
 

Warum werden von Ihnen so alte PHP-Version empfohlen? Haben die nicht alle Sicherheitslücken?

Ja! Haben sie! ABER: In der CLI-Version greifen diese Lücken nicht, da Sie als Skript-Benutzer schon alle Rechte auf der Konsole haben. Cross-Site-Scripting funktioniert nicht, da die Konsole kein HTML oder JavaScript kann. (Okay: SQL-Injection wäre tatsächlich möglich, aber vor solchen Fehlern kann PHP nicht schützen - Da muss schon der Programmierer aufpassen)
Wenn man fb_Tools direkt mit einen Webserver betreiben möchte, dann sollte man in der Tat auf ältere PHP-Versionen verzichten, da dann die Sicherheitslücken sehr wohl Relevant werden. - Wer möchte, kann sich mein Projekt: Attack Forum mal genauer ansehen, dort habe ich mit Sicherheitslücken ein wenig herum gespielt ;-)
Auf der anderen Seite sind Programmierfehler oder Änderungen mit neueren PHP-Version viel wahrscheinlicher als mit älteren PHP-Versionen. z.B. Gibt es ein Problem mit PHP 7.0, wo auf einigen Betriebssystemen der UTF-8-Support unvollständig ist!
Daher Empfehle ich gerne für die CLI-Version ältere PHP-Versionen, da sich dort nichts mehr gravierendes ändern wird.
Zur Zeit nutze ich für die Entwicklung von fb_Tools für Windows 10: PHP 8.1 - Windows 7: PHP 7.1.33 - Linux: PHP 7.4 - Wine: PHP 5.4.45
 

Wird es eine GUI / Benutzeroberfläche kommen?

Nein! fb_Tools ist als Konsolen-Programm gedacht und es ist keine Oberfläche geplant.
Aber es gibt eine JavaScript-Version und für Windows eine Version in VBScript, die Teilweise eine GUI mitbringen.
 

Die Übergabeparameter für die Fritz!Box-Adresse sind Kryptisch - Warum?

Das Problem WAR die Windows-Version - Da waren eine ganze Zeit lang nur maximal 9 Parameter möglich und so musste ich etwas sparsam sein - Jetzt ist das Geschichte und man kann nun mit den Optionen: -fb:[fritz.box], -un:[Benutzername], -pw:[Kennwort] arbeiten.
Ich Empfehle die fb_config.php für die Zugangsdaten zu verwenden, da manche Betriebssysteme die Konsolen eingaben unverschlüsselt mit loggen.
 

Welche Funktionen sind noch zu erwarten?

Ereignisse, Telefonbuch, Smarthome, Internetstatus, TR064, Plugins, Konfig-Datei Entschlüsselung ohne Fritz!Box, usw.
 

Wird es von fb_Tools auch eine Internationale-Version geben?

Wenn sich jemand als Übersetzer Anbietet, lässt sich möglicherweise drüber reden...
 

"Telefoniert" fb_Tools nach Hause?

Ja! Die Funktion, die das tut, nennt man Update :-)
Es wird ca. 3.5 mal im Jahr eine Hash-Datei angefordert, und geprüft, ob es ein Update gibt. - Das eigentliche Update müssen sie Manuell auslösen.
Abschalten kann man es mit der Variable $cfg['upda'] = 0; und die Kommunikation mit "mengelke.de" kann mit $cfg['uplink'] = 0; unterbunden werden.
Wenn sie fb_Tools in einen Cron-Dienst eingebunden haben, dann können sie entweder mit der Variabel $cfg['cron'] = true; oder mit der Option -cm ausschalten.

Programmgeschichte:

V0.40 06.01.2024

  • BUG: Beim Login wurde nur das letzte Status-Flag gespeichert
  • NEU: Unterstützung für Fritz!DECT 350 (Fensterkontakt)
  • Weitere verbesserungen an der StrfTime-Ersatzfunktion
 

V0.39 20.12.2023 (Weihnachtsupdate)

  • BUG: Supportdaten wurden nicht korrekt als ZIP-Datei gespeichert
  • BUG: JSON-Enoder funktionierte nicht ganz korrekt
  • BUG: Wahlhilfe setzte die Varabeln bei TFA falsch
  • BUG: Vorgepackte GZip-Daten wurden ohne gz-Extension gespeichert
  • BUG: StrfTime-Ersatzfunktion hatte einige Formatierungen falsch berechnet
  • BUG: Der Filter wurde in Ereignisse falsch interpretiert
  • FIX: SystemStatus wurde bei einer Fiber-Box nicht korrekt erkannt
  • FIX: Bei Smarthome funktionierte der "Schalt"-Befehl nur bei AVM-Geräten
  • FIX: Gepackte ZIP-Daten ohne Inhalt wurden als Fehler erkannt
  • FIX: Die Checksum-prüfung bei TAR Archiven ist jetzt etwas tolleranter
  • Converter-Modus von Supportdaten überarbeitet

V0.38 01.04.2023 (10 jähriges Jubiläum)

10 Jahre Fritz!Box Tools

  • BUG: textTable wurde an einigen Stellen nicht korrekt aufgerufen
  • BUG: Wenn die DECT-Lampe offline war, wurden einige Werte nicht korrekt berechnet und ausgegeben
  • Tennung von Templates und Aktoren in Smarthome und es können infos von Templates angezeigt werden
  • Ausgabe kann anonymisiert werden
 

V0.37 23.03.2023

  • BUG: Konfig-Dateien ließen sich nur in existierene Verzeichnisse aufteilen
  • BUG: Beim Enschlüsseln von Konfig-Daten wurden Teile leer gelassen
  • FIX: Komfort-Liste enthielt keinen Abschluss LF
  • NEU: Unterstützung von Templates, die nicht Aktorbezogen sind
  • NEU: Wahlhilfe unterstützt Vanity-Codes und verschiedene Variabeln
 

V0.36 15.02.2023

  • BUG: Konfig-Verzeichnisse ließen sich nicht einlesen
  • FIX: SupportDaten Extrakt übernahm "'" oder "/" im Dateinamen
  • FIX: LogIn gab im Fehlerfall keine Fehlermeldung zurück
  • Für den Cron-Modus können über die Konfig eigene Werte gesetzt werden
  • textTable berechnete die sichtbaren Tabellen ein Zeichen zu lang
  • BoxInfo erkennt etwas mehr Flags
  • Beispielhilfe verbessert
 

V0.35 23.12.2022

  • BUG: "Login" und "Konfig JSON" führte zu einen PHP-Fehler
  • BUG: MD5-Content funktionierte nicht
  • NEU: JSON-Support für AnrufListe, Ereignisse, GetIP und Traffic
  • Touch-Verhalten geändert
 

V0.34 20.12.2022

  • BUG: Im Ersten Parameter konnten die OTP-Token nicht gematcht werden
  • BUG: Der Parameter "Check" von der Update-Funktion wurde ignoriert
  • NEU: Option -li:[Version] für Login-Version dazugekommen
  • PHP-Funktion json_encode mit eigenen JSON-Encoder ersetzt
  • Vereinfachte Übergabe von OTPAuth ermöglicht (Ohne Anführungszeichen)
  • OTPauth kann auch direkt als [mode] aufgerufen werden
  • Content-MD5 wurde nur per hexadezimal und nicht per Base64 überprüft
 

V0.33 10.12.2022

  • BUG: SmartHome hatte die HSV-Angaben nicht korrekt umgesetzt
  • BUG: BoxInfo hatte in zwei Fällen verkehrte Werte ausgegeben
  • FIX: request machte Fehler bei älteren PHP-Versionen
  • FIX: Pluginliste zeigte jedes Plugin auf dem Mac dreimal an
  • FIX: Verbesserte Tabellendarstellung bei Komfort & Smarthome
  • Kleine Verbesserungen an der Ausgabe
  • Ist der Dateiname gleich ":" wird nichts geschrieben
 

V0.32 01.12.2022

  • BUG: Es wurde zu spät geprüft, ob die Funktion hash_pbkdf2 vorhanden ist
  • BUG: Interne Funktion getArg konnte keine "0" als Argument finden
  • BUG: Der XML-Parser hatte beim Array in der ersten Kette, die Attribute falsch eingeordnet
  • FIX: Interne Funktion textTable entwertet jetzt Multibyte-Zeichen
  • FIX: Viele Anpassungen an PHP 8.x
  • FIX: System-Status an Fritz!OS 7.39+ angepasst
  • FIX: Ereignisse an Fritz!OS 7.39+ angepasst
  • FIX: Updates für die Windows-version konnten mit https fehlschlagen
  • FIX: Farbnamen für die Farblampe konnte nicht alle bei älteren PHP Versionen gesetzt werden
  • NEU: Unterstützung von Vorlagen in Smarthome (Werden mit SET gesetzt)
  • NEU: Das Plugin OTPAuth ist in fb_Tools eingeflossen (Info OTPauth)
  • NEU: Volle Unterstützung für Zwei-Faktor-Authentisierung mit Option -tf:<otp> (Danke an: Alexander-Palm.de)
  • NEU: WireGuard Zugangsdaten werden ab Fritz!OS 7.39+ (soweit vorhanden) mit angezeigt
  • NEU: Option -cm setzt die Variable $cfg['cron'] für den Cron-Modus
  • NEU: Option -px:[proxy.tld:port] Für Proxy-Requests OHNE Authentisierung
  • NEU: BoxInfo gibt zusätzlich Login-Informationen aus
  • NEU: BoxInfo und SystemStatus speichern die RAW-Daten mit der Option -rd:<path>
  • NEU: ZIP-Support mit Deflate/BZip2 und AES für im-/export von Archiven (ZIPCrypto nur import)
  • NEU: Komfort-Funktionen Schalten (WLAN / Anrufbeantworter / Rufumleitungen / Weckrufe)
  • NEU: Kurzschreibweise im 1. Parameter, um eine alternative Konfig nachzuladen: preset-name::/path/fb_config.php
  • Wahlhilfe an 2FA angepasst
  • Einfache Unterstützung der Benutzerrechte ab Fritz!OS 5.30+
  • Hasher hat nun einen eigenen Aufruf bekommen
  • Verbesserter gzdecode-Ersatz für PHP4
  • Eigener Ersatz für strftime, wenn irgendwann ab PHP 8.2+ die Funktion entfernt wird
  • WordWrap berücksichtigt Whitespaces am Anfang der Zeile
  • Drag'n'Drop-Modus verbessert (Es können verschiedene Dateiendungen definiert werden)
  • SID-Login (Option -s:sidfile) unterstützt jetzt auch das JSON-Format
 

V0.31 23.05.2021

  • FIX: Fritz!OS 7.24+ reagiert bei SmartHome "simpleonoff" nicht auf "2" (toggle) - Danke an: Klaus M.
  • BUG: AES-Bibliotheken wurden mit anderen Bibliotheken verwechselt
  • Force-Modus in SmartHome überarbeitet
  • Notfalls wird nun unter Linux auch "busybox ttysize" zu rate gezogen, wenn sich die Konsolenbreite nicht ermitteln lässt
  • Verbesserter Login Behandlung von Anmeldedaten ohne Benutzer ab Fritz!OS 7.24+
  • Boxinfo mit Benutzererkennung ab Fritz!OS 7.24+
  • Info-Funktion um weitere kleine Tools erweitert
  • Kleine Anpassungen an PHP 8
 

V0.30 30.03.2021

  • BUG: Es wurde keine Ereignisse gefunden, wenn nicht jede [Eckige] Klammer wieder korrekt geschlossen wurde
  • BUG: Option -o hat keine Tabellen erstellt
  • BUG: Auto-Update-Check hatte nicht die Versionsnummer geprüft und die Touch-Datei nicht korrekt angelegt
  • FIX: Traffic Anpassung an Fritz!OS 7.25
  • NEU: Option -ps:[Name] Übernimmt die Fritz!Box-Angaben aus der Preset-Liste
  • NEU: Fast alle Fehlermeldungen geben einen Error-Code zurück (7 verschiedene Gruppen)
  • fb_config.php kann auch in .fb_config.php umbenannt werden
  • Ist die Update-Funktion komplett deaktiviert, wird auch keine Hilfe dazu angezeigt
 

V0.29 16.11.2020

  • BUG: PHP4/5 Speicherzugriffsfehler bei fehlerhaften Regulären Ausdruck
  • FIX: realpath() unterscheidet bei Windows mit älteren PHP-Versionen nicht zwischen Groß/Kleinschreibung
  • Bei Logintest gibt es jetzt Debug-Infos
  • Aus allen Plugins, fb_config.php und history.txt das CR-Zeichen (\r) entfernt
 

V0.28 13.11.2020

  • ÄNDERUNG: getevent() gibt nun ein Array zurück
  • ÄNDERUNG: Optionen können mit den Argumenten vermischt werden
    (Zusammengeschriebene Optionen [Alte Schreibweise im letzten Parameter] werden jetzt nicht mehr erkannt)
  • FIX: Option -cs erkennt \t (Tabulator)
  • FIX: Umlaute in der Konfig wurden nicht decodiert
  • FIX: Hash() hatte im RAW-Modus fehlerhafte ausgaben erzeugt
  • NEU: Option -ft:[strftime] für Ereignisse und Anrufliste für eigene Datumsformate
  • NEU: Plugins können eigene Voreinstellungen bekommen $cfg['plugin'][<Plugin>] = array()
  • NEU: Interne Funktion file_stream() liest/schreibt Zeilenweise GZip/BZip2-Daten
  • NEU: Smarthome: Unterstützung für Fritz!DECT 500 und vermutlich auch andere Han-Fun Geräte
  • NEU: Zugangsdatenübersicht mit Apps, GoogleAuth und um Tickets erweitert
  • NEU: Traffic-Zähler kann ausgelesen werden
  • NEU: Unterstützung von PBKDF2-Login ab Fritz!OS 7.24
  • NEU: Unterstützung von weiteren Hash-Bibliotheken für PHP 4/5
  • Interne Funktionen ifset(), getArg() erweitert
  • PHP-Batch für Windows weiter optimiert (Benötigt keine Schleife mehr) - Danke an Peter G.
  • PHP-Datenbank Erweiterungen (mysqli|sqlite3) werden für das Plugin "SQLDB" erkannt
  • Der erste Parameter mit der Fritz!Box Angabe akzeptiert Benutzername/Kennwort in Anführungszeichen
 

V0.27 07.07.2020

  • FIX: Info-Hilfe
  • FIX: Konfig-Checksum Berechnung und Konfig <-> TAR für Fritz!OS 7.19+ angepasst
  • FIX: LED für Fritz!OS 7.19+ angepasst und mit weiteren Funktionen
  • BUG: Ereignis-Filter funktionierten nicht korrekt
  • BUG: "konfig file" hat TAR-Archive immer mit GZ Komprimiert
  • NEU: Eingeschränkter BZip-Support
  • Zugangsdatenübersicht für weitere WLAN-Daten erweitert
  • Kurzschreibweise $str{$offset} entfernt
  • Auto-Update Check verbessert (Speichert das Update-Datum entweder im Script, Plugins oder in fb_config.php)
 

V0.26 23.09.2019

  • BUG: Workaround unwirksam, wenn zlib nicht vorhanden ist
  • BUG: Benannte Argumente wurden trotz fehlgeschlagener Prüfung akzeptiert
  • BUG: Konfig File-DeCrypt sucht sich tot, wenn kein richtiges Kennwort angegeben wurde
  • NEU: Option -cc:[KonfigDatei] dazu gekommen, um eine alternative Benutzerkonfig nachzuladen
  • NEU: Option -pp:<PluginPath> dazu gekommen, um Plugins in einen alternativen Ordner zu benutzen
  • Es können jetzt auch einzelne Plugins installiert/aktualisiert werden
  • Info Extension zeigt jetzt auch zlib an (.gz-Support)
 

V0.25 11.09.2019

  • BUG: Lokale Benutzer-Konfig konnte nicht gefunden werden
  • BUG: cfgdecrypt konnte in bestimmen Fällen nicht den AES-Key finden
  • FIX: Anpassungen an PHP 5.2 und älter vorgenommen
  • NEU: Plugins: LED und AnrufListe (Call) sind nun Bestandteil von fb_tools
  • NEU: Plugins können nun ohne den Parameter "Plugin" aufgerufen und von fb_tools installiert/aktualisiert werden
  • NEU: SmartHome für Unterstützung für Schaltsteckdosen und Heizregler (Schalten und Daten ermitteln)
  • NEU: Unterstützung von benannten Argumenten in beliebiger Reihenfolge (pass:admin123 func:export mode:konfig)
  • NEU: Login über HTTPS mit älteren Fritz!Boxen ermöglicht (Funktioniert nur mit PHP 5.4 - 5.5 / OpenSSL 0.98)
  • NEU: Konfig File-DeCrypt akzeptiert Password-Listen (Als Datei oder direkt angegeben: pass[,]:foo,bar,admin)
  • NEU: Kontext basierte Optionen ermöglicht und Option -ua für User-Agent dazu gekommen und Option -dl umbenannt in -pe
  • Sämtliche Funktionen können nun GZip-Dateien mit stftime erstellen
  • Interne Funktionen request(), file_content(), preg_array(), ifset(), listDir() erweitert/ersetzt
  • Drag'n'Drop-Modus geändert ',' ersetzt durch '*'
  • Verbesserte Ausgabe von Text-Tabellen
  • Codepage-Tabellen erweitert und verbessert
  • Dial wurde in Wahlhilfe umbenannt und unterstützt Telefonbezeichnungen als Angabe für das Telefon
  • Zur Vereinfachung in fast allen Beispielen, die Login-Angabe durch fritz.box ersetzt
 

V0.24 10.04.2019

  • Bug: Plugins wurden nicht mit Absoluten Pfad gefunden
  • Bug: SupportDaten konnten ab Fritz!OS 6.8 nicht mit Telemetrie gespeichert werden
  • Funktion Dial an Fritz!OS 7.1 angepasst
 

V0.23 01.04.2019

  • Bug: Etliche Anpassungen an PHP 7.x
  • Bug: Ereignisse konnten ab OS.6.69 nicht gefiltert werden
  • Bug: Unsinnige Dateigröße wird im Debug-Modus ignoriert
  • Bug: konfig2array hat Strings, die nicht in Anführungszeichen waren, als Integer interpretiert
  • Plugin-Aufruf überarbeitet und vereinfacht
  • Konfig-Decrypt 0.23 ist End-Of-Service und wurde in ein Plugin verbannt (fbtp_konfigdecrypt.php)
  • Neue Entschlüsselungsfunktion implementiert, die keine Fritz!Box zum entschlüsseln benötigt
  • Zugangsdatenübersicht erweitert (Diagnose/Wartung, Netzwerkumgebung, TR-64, GUI-Unterordner)
  • Eigenen UTF-8 En/Decoder implementiert
  • SystemStatus verbessert (Jetzt mit Bootloader-Hash)
  • Boxinfo verbessert (Unterstützung von juis_boxinfo.xml)
  • Option -dl:[extension] dazu gekommen, um ohne Rückfrage PHP-Erweiterungen nachzuladen
  • HTTPS-Requests über die Option -p:https möglich, wenn die PHP-Erweiterung OpenSSL verfügbar ist
  • Updates werden, wenn möglich, über https abgefragt/heruntergeladen
 

V0.22 11.04.2017

  • Bug: date.timezone wird nun etwas früher gesetzt
  • Bug: Ereignisse machte bei deaktivierten wrap Probleme
  • Bug: Windows-Laufwerksbuchstaben wurden bei Pathangaben entwertet
  • Bug: SID-Option funktionierte nicht richtig
  • Neuer Parameter für Login (Speichert SID mit Firmware-Version und Host-Daten)
 

V0.21 01.04.2017

  • Bug in Anmeldung mit älteren Boxen behoben
  • Bug in Info StrfTime entfernt, die bei Windows 2000 / XP auftreten
  • Downloads können auch mit GZip gepackt werden
  • Erste Vorbereitungen getroffen, um fb_Tools außerhalb der Konsole zu betreiben
 

V0.20 20.03.2017

  • Char-Kodierung: cp65001 (utf8) hinzugefügt
  • Workaround für PowerShell Erkennung verbessert
  • GetIP: Filter implementiert
  • Konfig DeCrypt: Internationale Sprachen an OS 6.8 angepasst
  • Konfig Extract: pattern.txt in index.txt umbenannt
  • Konfig Extract/File/Import: Unterstützung von gz-Dateien / tar/tgz-Archiven
  • SupportDaten: Unterstützung von gz-Dateien
  • SupportDaten Extrakt: Unterstützung von tar/tgz-Archiven
  • pcre.backtrack_limit von 16 MB auf 64 MB erhöht
 

V0.19 29.01.2017

  • Bug in Auto-Update-Check beseitigt
  • Firmware wird nun auch bei Labor-Versionen korrekt erkannt
  • Ereignisse und Konfig-DeCrypt an OS 6.8 angepasst
  • Workaround für Konfig-DeCrypt an Fritz!Box 7312 implementiert
  • GetIP unterstützt nun auch DNS und IPv6
  • Info StrfTime implementiert
  • Workaround für HTTP-Fehler 503 implementiert
 

V0.18 20.08.2016

  • Bug: Downloads waren teilweise immer file.bin
  • Bug: Bei allen HTTP-Requests wurden fehlerhafte HTTP-Header geschickt
  • Zugangsdatenübersicht an Repeatern angepasst
  • PHP Extensions werden auch im Unterordner ext gesucht
  • Char-Kodierung: ASCII hinzugefügt
 

V0.17 06.08.2016

  • Bug: FRITZ!WLAN Repeater N/G machte Probleme beim Login und im Dateinamen
  • Bug: SID wird nur noch dann gesendet, wenn eine vorhanden ist
  • Bug: Beim Update unter Linux wurde chmod nicht korrekt gesetzt
  • Debug-Behandlung verbessert
  • Optionen-Erkennung etwas verbessert
  • Timeout für sehr langsame Fritz!Boxen von 3 auf 30 Sekunden erhöht (ist mit -t:<sec> veränderbar)
  • UpGrade in "info update" umbenannt
  • Konfig-DeCrypt verbessert (Entschlüsselt auch Kennwörter im Binaer-Bereich der Konfig - Danke für den Hinweis)
  • Zugangsdatenübersicht mit DECT-eMail erweitert
  • Supportdaten unterstützt nun ab OS6.5 Telemetrie
  • Alle Neu erstellen Ordner unterstützen strftime im Ordnernamen und können weitere Unterordner enthalten
 

V0.16 20.07.2016

  • Bug in Drag entfernt (Parameterzähler war falsch)
  • Bug: Ansi-Ausgabe war nicht Möglich - jetzt auch zusätzlich cp1252, iso8859
  • Kleine Bugs in Dial und Login/out entfernt
  • Windows-Version an die PowerShell angepasst und Einschränkung mit 9 Maximalen Parametern aufgehoben
  • Optionen erweitert - Jetzt können die Optionen auch einzeln übergeben werden
  • Option -s akzeptiert auch eine Datei, in der sich die SID befindet
  • Option Hilfe aufgeteilt (Beispiele und Optionen können zusätzlich ausgegeben werden)
  • Neue Optionen zum Einloggen (-fw, -fb, -un, -pw, -pt) implementiert
  • Konfig-DeCrypt verbessert (Entschlüsselt auch Konfigurationen mit mehreren Kennwörtern - Danke an Herby007)
  • Zugangsdatenübersicht für WLAN, VoIP und TR069 verbessert, unnötige Einträge werden in der Übersicht weggelassen
  • NEU: Ereignisse können ausgelesen und Synchronisiert werden
  • NEU: SupportDaten können ab OS 6.5 extrahiert werden
  • Interne Routinen zu Login, Optionen und Konfig geändert bzw. verbessert
  • Kleines EasterEgg versteckt
 

V0.15 07.07.2016

  • Bug in der UpGrade-Funktion entfernt (Das Umbenennen war fehlerhaft)
  • Option -s (sid) erweitert (Damit sind umfangreiche Batch-Dateien möglich)
  • Option -w (Wortumbruch) erweitert (Unter Windows wird ebenfalls die Konsolen-Breite automatisch ermittelt)
  • Zugangsdaten können auch bei einer Internationalen Fritz!Box (z.B. 4020) ausgelesen/entschlüsselt werden
  • Verbesserte Fehlermeldung
  • Auto-Update Check implementiert (Abschaltbar)
  • Konfig->JSON Konverter implementiert
  • Request-Download implementiert (z.Z. nur für SupportDaten und Konfig Export)
  • Debug-Ausgabe erweitert
  • Plugin-Schnittstelle eingebaut, damit können eigene Scripte in fb_Tools eingebunden werden (Mit Beispielscript)
 

V0.14 30.06.2016

  • Bug in der Import-Funktion entfernt
  • Workaround wenn PHP kein utf8 unterstützt (PHP 7.0 ohne php-xml unter Linux)
  • Option -c:7bit implementiert (Fallback auf 7Bit wenn PHP kein utf8 unterstützt)
  • UpGrade zeigt als Gag Cookies an ;-)
  • Drag'n'Drop-Modus implementiert
  • Suchfunktion für Zugangsdaten neu entwickelt (Leider auch nicht viel besser...)
 

V0.13 25.06.2016

  • Bugs mit größeren PHP-Versionen entfernt
  • Bug in der Konfig-Checksum Berechnung entfernt
  • Arbeitsgeschwindigkeit Optimiert (strtr)
  • Text-Ausgabe verbessert
  • Option -d verbessert (Mit Bit-Codierung)
  • Option -w (Wortumbruch) implementiert (Unter Linux wird die Konsolen-Breite automatisch ermittelt)
  • Option -o (File-Output) implementiert
  • Option -c:html implementiert
  • NEU: Fritz!Konfig kann als Ordner im/exportiert werden (Mit Checksum Berechnung)
  • NEU: Alle Zugangsdaten können OHNE Telnet aus der Fritz!Konfig ausgelesen und angezeigt werden
  • NEU: Die aktuelle Version kann mit dem Internet abgeglichen werden (mit automatischen Update)
 

V0.12 16.06.2014

  • UPnP-Funktionen ermitteln den Link-Pfad selber
  • Erste Anpassungen für PHP 5.5 (preg_replace -> preg_replace_callback)
  • Unterstützung von CRYPTEDBINFILE bei Powerline-Konfig
 

V0.11 17.02.2014

  • Config in Konfig umbenannt
  • Konfig akzeptiert auch DOS/Windows Dateien
  • Konfig File implementiert
  • Keine Trennung mehr zwischen Modes mit und ohne Login
  • Script läuft immer bis zu ende durch (Kein DIE oder EXIT mehr)
  • Bug in Dial behoben (Das Telefon könnte nicht ausgewählt werden)
 

V0.10 07.01.2014

  • Config Export/Import implementiert (Mit CheckSum Berechnung)
  • Boxinfo implementiert (Jason_Boxinfo.xml)
  • Interne Request-Funktion erweitert
  • Weitere kleine Hilfs-Unterfunktionen implementiert
  • Anpassung an PHP 5 für große RegEx-Ergebnisse
 

V0.09 22.10.2013

  • Info-Option erkennt auch Kurzschreibweise
  • Bug im Dialer behoben: # lässt sich nicht wählen
  • Externe IP Ermittlung der aktuellen Firmware angepasst
 

V0.08 01.04.2013

  • Hilfe-Ausgabe verbessert
 

V0.0 - 0.07 19.01 - 30.03.2013 (Interne Releases)

  • Interne Request Funktion implementiert
  • Login & Logout Funktion implementiert
  • Einfache Hilfeausgabe implementiert
  • SystemStatus implementiert
  • Fehlerverarbeitung verbessert
  • Interne UPnP-Request Funktion implementiert
  • GetIP implementiert
  • Reconnect implementiert
  • Option -c (Kodierung für die Konsole) implementiert
  • Option-übergabe implementiert
  • Hilfeausgabe verbessert
  • Kleiner Bug in SystemStatus behoben
  • Optionen -d (Debug) und -t (Timeout) implementiert
  • Hilfeausgabe weiter verbessert
  • Interne Request Funktion überarbeitet (POST/Multipart)
  • SupportDaten implementiert
  • Option -b (Buffergröße) implementiert
  • Programmablauf für Login-Funktionen überarbeitet
  • Automatische ermittung der Kodierung von der Konsole implementiert
  • Info implementiert
  • Dial implementiert
  • Hilfeausgabe weiter verbessert


Kategorie: 7-Zip, AVM, Fritz!Box, Konsole, PHP, PHPBatch, Video


 << Links | Home | Serien >> << Fritz!Box JSTool | Projekte | Fritz!Box VBScripte >>

Inhalt

 



Menü Ausschalten