Funktionierende Scripts für FRITZ!OS 05.50 7390

Hallo zusammen,

neulich bin ich zufällig auf „Tamper Data“ gestoßen, das ist ein Add On für den Firefox. Damit kann man alles sichtbar machen, was im Hintergrund auf einer Webseite alles so ab geht. Und das ist natürlich genial, wenn man wissen möchte was die Fritz Box für Befehle absendet, so das wir diese in IPS verwenden können. Damit habe ich bisher eigentlich alles in IPS basteln können.

Deshalb wollte ich es an dieser Stelle mal vorbringen, vielleicht hilft es dem einen oder anderen neue Fritz Box Befehle zu finden. Man braucht dann nicht mehr in dem Quellcode der Box zu suchen… Einige kennen das bestimmt schon, für mich als nicht Programmierer war das eine große Entdeckung.

Ihr geht wie folgt vor:

  • Im Firefox das Add On „Tamper Data“ installieren
  • Nach Neustart dann mit der Alt-Taste das Menü im Firefox einblenden und mit „Extras - Tamper Data“ auswählen.
  • in dem dann geöffneten Fenster „Tamper beginnen“ auswählen.
  • jetzt wird alles protokolliert was ihr im Web macht. hier kann man als Neuling wie ich viel entdecken…

Ihr startet dann Tamper erst bevor ihr in der Fritz Box Oberfläche, z.B. wo ihr WLAN aktiviert, den OK bzw. Übernehmen Button drückt, oder vor dem Button Drücken die Liste löschen auswählen. Dann steht im ersten Protokolleintrag der gesendete Befehl, darin findet ihr dann die Benötigte URL und den POSTDATA Befehl denn ihr dann nur noch in die vorhandenen und bekannten Skripte übernehmen müßt. Ggf. mit Variablen ergänzen und schon habt ihr die Fritz Box voll unter Kontrolle von IPS.

Ich hoffe es kann dem einen oder anderen weiterhelfen…
Viel Spaß damit.
Grüße Helmut

Hallo Peter,

ich habe gerade auf FRITZ!OS 06.00 geupdatet und es funktioniert kein Fritzbox-Skript mehr bei mir. Ich kann das Wlan nicht mehr per Skript EIN/AUS-schalten. Es wird aber auch keine Fehlermeldung geschmissen.
Hat eventuell jemand schon einen FIX dafür?

Ich habe auch auf 6.0 umgestellt, meine Fritz-Scripte angetestet und nichts Aufälliges festgestellt. Dein Posting hat mich daher aufgeschreckt und ich habe daher den WLAN-Switch nochmal explizit getestet. Alles ok.
Hier mein Script:

	IPS_SemaphoreEnter("Fritz",2000);
	include_once (IPS_GetScriptFile(37226 /*[01 Zentralfuktionen\Scripte\Includes\logonFritzbox]*/));
	$nachruhe=getValue(30553 /*[01 Zentralfuktionen\Nachtruhe\Schlafen]*/);
	$abwesend=getValue(54043 /*[01 Zentralfuktionen\AnAbwesenheit\V_Abwesend]*/);
	if ($_IPS['SENDER']=="Designer") {
	   $status=!getValue(21749 /*[04 Installationen\Schrankraum\Fritz\WLAN-Status]*/);
		if ($status) {
		   $einAus=$ein;
		} else {
		   $einAus=$aus;
		}
	} else {
		if ($nachruhe or $abwesend) {
			$einAus=$aus;
			$status=false;
		} else {
	                $einAus=$ein;
			$status=true;
	   }
 	}
//   $einAus=$aus; //Test
//   print_r("einAus=".$einAus."
");
	$ch = curl_init("http://{$fritzbox_ip}/wlan/wlan_settings.lua?sid={$SID}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   $rc1=curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "active=on&SSID=BITNIT_FB&active_24=on&SSID_24=BITNIT_FB&active_5=on&SSID_5=BITNIT_FB5&hidden_ssid=on&isolate=on&macfilter=close" : "") ."&sid=" . $SID. "&apply=");
   $rc2=curl_exec($ch);
   curl_close($ch);
   IPS_SemaphoreLeave("Fritz");
   setValue(21749 /*[04 Installationen\Schrankraum\Fritz\WLAN-Status]*/,$status);

Vielleicht kannst Du ja funktionale Unterschiede zu Deinem Script entdecken.

Gruß
BONOX

neulich bin ich zufällig auf „Tamper Data“ gestoßen, das ist ein Add On für den Firefox. Damit kann man alles sichtbar machen, was im Hintergrund auf einer Webseite alles so ab geht. Und das ist natürlich genial, wenn man wissen möchte was die Fritz Box für Befehle absendet, so das wir diese in IPS verwenden können. Damit habe ich bisher eigentlich alles in IPS basteln können.

Hallo Helmut,

danke für den TIP. Mit Firebug kommt man zwar auch an alle Informationen ran, aber Tamper Datat serviert einem ja die Post-Parameter auf dem Tablett. Gutes Tool.

Gruß BONOX

Hallo Helmut und Bonox,

nachdem ich nun wieder am heimischen PC taste, habe ich mir das Add-on gleich installiert und war überrascht, was da so alles angezeigt wird. Somit musste ich feststellen, dass die Abfrage ein ganz andere ist als ich noch im Script hatte. Das habe ich nun wie auch im Beitrag von Bonox angepasst und WLAN Schalten GEHT JETZT! Danke euch beiden. Super Tool!

Offene Fragen:

  1. Habt ihr eine Idee, wie ich den AB (die AB) via IPS ein- und wieder ausschalten kann? Da kommt bei mir keine POST-Meldung, deren Daten man schön übernehmen kann.

  2. Wie kann ich die aktuellen Einstellungen wie Status AB oder WLAN nur auslesen, ohne sie zu ändern. Als Workaround ist hier beim Ändern in der Fritzbox eine IPS-Variable zu setzen. Geht doch sicherlich auch anders, oder?

PS: GET-Requests scheint das Tool nicht zu liefern, daher auch keine Anzeige für das / beim Auslesen. Hier (https://www.owasp.org/index.php/Category:OWASP_WebScarab_Project) etwas gefunden, aus Zeitmangel noch nicht getestet.

Hallo Andreas,
ich habe mal auf die Schnelle ein Script für den AB zusammengebastelt. Funktioniert bei mir. Das ganze läuft über einen Ajax-Get Request. Der wird auch in Tamper Data angezeigt.
Hier das Script:

<?
IPS_SemaphoreEnter("Fritz",2000);
	include_once (IPS_GetScriptFile(37226 /*[01 Zentralfuktionen\Scripte\Includes\logonFritzbox]*/));

	$ch = curl_init("http://{$fritzbox_ip}/fon_devices/tam_list.lua?sid={$SID}&useajax=1&TamNr=0&switch=toggle&xhr=1&t1384129162155=nocache");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $rc2=curl_exec($ch);
   curl_close($ch);
IPS_SemaphoreLeave("Fritz");
?>

Ob es für den Parameter „switch“ noch andere Werte als toggle gibt, konnte ich noch nicht herausfinden (das Bett ruft).
Das Auslesen der Stati für den AB müsste über den WWW-Reader mit Cutter und TextParser oder eigenem Parser über die zurückgegebenen Daten möglich sein. Ich nutze IPS-Variablen ohne Rückmeldung der Fritzbox - das reicht mir und hat bislang immer richtig funktioniert. Die Fritz-Box ist ja keine FS20-Device :).

Viel Erfolg
BONOX

Hallo Andreas,

auch ich arbeite bisher nicht mit Rückmeldungen der FritzBox und kann deshalb wenig dazu sagen. Das Skript von BONOX funktioniert bei mir ebenfalls.

Bezüglich dem toggle Befehl, konnte ich nichts anderes finden. Aber wenn man im Skript die Zeile

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

weglässt, wird wenn man das Skript manuell startet eine Info in der Skriptausgabe ausgegeben ob ein oder ausgeschalten wurde: {„switch_on“:false,„cur_idx“:1} oder {„switch_on“:true,„cur_idx“:1}

Ich weis aber nicht wie man das abfangen kann und entsprechend auswerten… aber ggf. ist das ja ein Ansatz wie man den Status dann ordentlich in IPS darstellen kann.

Grüße Helmut

Moin,

@hrahlers: aber gerade dieser Threat ist doch voll mit Beispielen zu Deinen Problemstellungen, oder laufen diese nicht mehr auf 6.0 ?

Gruß
Walter

Tach zusammen,

nun geht es bei mir auch wieder. Diese Syntax hatte ich auch schon probiert. Mein Fehler war allerdings die Aufsplittung der zu sendenden URL in curl_init und curl_setopt. Das klappte gar nicht. Alles zusammengezogen und damit Funktion. Hängt vermutlich damit zusammen, dass es hier kein POSTDATA gibt und somit curl_setopt nich benutzt werden kann.

Bezüglich dem toggle Befehl, konnte ich nichts anderes finden. Aber wenn man im Skript die Zeile
PHP-Code:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
weglässt, wird wenn man das Skript manuell startet eine Info in der Skriptausgabe ausgegeben ob ein oder ausgeschalten wurde: {„switch_on“:false,„cur_idx“:1} oder {„switch_on“:true,„cur_idx“:1}

Ich weis aber nicht wie man das abfangen kann und entsprechend auswerten… aber ggf. ist das ja ein Ansatz wie man den Status dann ordentlich in IPS darstellen kann.

Die Auswertung habe ich jetzt mal so gelöst:

<?

include "fritzboxlogin.php"; // Fritzbox-Login - IPS-ID 37048
IPS_SetHidden($_IPS['SELF'], true);
$ab = 56452 /*[EDV\Fritzbox\AB\AB Familie]*/;

// -----------------------------------------------------------------------------

//Anrufbeantworter 0 ein/ausschalten
$ch = curl_init("http://{$fritzbox}/fon_devices/tam_list.lua?sid={$SID}&useajax=1&TamNr=0&switch=toggle&xhr=1&t1384129162155=nocache");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);

// Status umschalten
SetValue($ab, !GetValue($ab));

// Optional: Rückmeldung der Ausführung auswerten
preg_match_all('(false|true)', $return, $zustand);
if ($zustand[0][0] == "false")
	{
	echo "AB ist aus.";
	// Status in IPS weiterverarbeiten ...
	}
if ($zustand[0][0] == "true")
	{
	echo "AB ist ein.";
	// Status in IPS weiterverarbeiten ...
	}

?>

Danke für eure Hilfe!

Hallo,

bei mir läuft auch fast kein Script mehr für die Fritzbox :frowning:

Was muss denn angepasst werden?

Script zum schalten des Gastzugangs sieht bei mir so aus:



include "fritzbox.php";
$Lan = GetValue(14517 /*[Allgemein\FritzBox\Variablen\Gast]*/);

If ($Lan == true)
    {
    $wert = "0";
    }
    else
    {
    $wert = "1";
    };

$StatusPage = file_get_contents('http://192.168.*.*/wlan/wlan_settings.lua?sid='.$SID);

$ch = curl_init('http://192.168.*.*/wlan/wlan_settings.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&wlan:settings/guest_ap_enabled={$wert}");
curl_exec($ch);
curl_Close($ch);

Hallo Gemeinde,

  1. Ich hoffe, ich habs nicht überlesen, aber gibt es eine Lösung um alte Nachrichten (AB) von der Fritzbox per IPS zu löschen ?

  2. Gibt es eine Lösung um die Anruferliste zu löschen ? Hatte mal ein Script von RNW probiert…aber seitdem hat IPS und AVM wohl zu viel geändert :frowning:

FB 7390 6.0
IPS 3.0

LG
Sascha

Moin Sascha,
zu Punkt 2. gibt es hier die Lösung!

Gruß,
Peter

Hallo bin auf FritzBox 7490 umgestiegen Aktuelle Firmware 05.59 seit dem läuft das
Verbindungsstatus Script nicht mehr, von hier.

Mit der 7390 lief noch alles.
Es kommt ein Socket Error 10061 an Port 1012

Zufall oder anderer Port bei der 7490?

Hat jemand eine Ahnung ?

Der Port ist er gleiche lt. kurzer Suche bei Google, hast Du ihn freigeschaltet?

In IPS ist der Clientsocket eingerichtet kommt natürlich die gleiche Fehlermeldung.

Wo muss dann noch der Port freigeschaltet werden?

Nur eigenartig vor Wechsel lief das alles.

Im Voraus besten Dank

Auf der Box … wenn es vorher lief hast Du den Port auf der 7390 eben freigeschaltet … das überträgt die Box aber nicht auf die neue

Wird der Port mit einem Telefon mit Code #95 freigeschaltet ?
Ist wohl solange her das ich dies nicht mehr wusste.
Ansonsten finde ich keine Möglichkeit in der FritzBox den Port frei zu schalten.

Danke

Ziffernfolge zur Aktivierung #965

OK Danke werds heute Abend testen.
Problem nur ich hab keine Telefone dran.
Werd wohl noch ein altes finden.

Wenn Du einen entsprechenden Telefonbucheintrag erstellst geht das auch ohne Telefon über die Wählhilfe.

Hallo,

also da hat alles nix gebracht.
Vielen Dank für die Antworten.

Aber hab es dann doch noch hinbekommen.

Hab die FritzBox TAPI Anwendung auf dem IPS-Server installiert und siehe da hat es sofort gefunkt.

Nehme an das TAPI den Sockel auf/frei macht.