Fritzbox Anmeldung funktioniert nicht mehr

Hallo,

ich setze zum kurzen Anklingeln einer Nebenstelle folgendes Skript ein:


<?php
declare(strict_types=1);
require_once '_Global_functions.ips.php';

$FritzBox = IP_FRITZBOX;
$Password = FRITZBOX_PWD;

$ch = curl_init('http://' . $FritzBox . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login                    = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);

if ($session_status_simplexml->SID !== '0000000000000000') {
    $SID = $session_status_simplexml->SID;
} else {
    $challenge = $session_status_simplexml->Challenge;
    $response  = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $Password, 'UCS-2LE', 'UTF-8'));

    curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
    $sendlogin                = curl_exec($ch);
    $session_status_simplexml = simplexml_load_string($sendlogin);
    var_dump($session_status_simplexml);

    if ($session_status_simplexml->SID !== '0000000000000000') {
        $SID = $session_status_simplexml->SID;
    } else {
        IPSLogger_Wrn(basename(__FILE__, '.ips.php'), 'Login fehlgeschlagen');
        return;
    }
}

curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:command/Dial=**612"); // Simones interne Nummer
curl_exec($ch);

sleep(6);
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:command/Dial=''");
curl_exec($ch);

curl_close($ch);


Nun hat mein Provider (Unitymedia) vorgestern meine Fritzbox auf 7.01 aktualisiert und seitdem klappt die Anmeldung nicht mehr („Login fehlgeschlagen“) :frowning:

Hat jemand für mich einen Tipp, wie ich die Anmeldeprozedur ergänzen/ändern muss?

Viele Grüße

Burkhard

EDIT 98: Einloggen kann ich mich jetzt erfolgreich (FritzOS 7.01) und bekomme eine SID, aber keine Ahnung, wie ich danach „was anstellen kann“ :smiley:
Hab bisher alles über SOAP gemacht.

EDIT 99: Musst du dich vlt. bei der FritzBox mittlerweile auch mit User + PW anmelden und nicht mehr nur mit PW? Wie ist das denn, wenn du die Webseite der FritzBox aufrufst? Nur PW Eingabe?

Login funktioniert bei mir mit User + PW wie folgt:

<? 
$fritzbox_ip = 'xxxxxxxxxxx'; 
$username = 'xxxxxxx';
$password    = 'xxxxxxxx'; 

$ch = curl_init($fritzbox_ip.'/login_sid.lua?username='.$username); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$login = curl_exec($ch); 
$session_status_simplexml = simplexml_load_string($login);

if ($session_status_simplexml->SID != '0000000000000000') 
{ 
   $SID = $session_status_simplexml->SID; 
} 
else
{ 
   $challenge = $session_status_simplexml->Challenge; 
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8")); 

   curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."&response={$response}&page=/login_sid.lua"); 
   $sendlogin = curl_exec($ch); 
   $session_status_simplexml = simplexml_load_string($sendlogin); 

   if ($session_status_simplexml->SID != '0000000000000000') 
   { 
   		$SID = $session_status_simplexml->SID; 
   } 
   else 
   { 
      echo "Fehler: Login fehlgeschlagen"; 
      return; 
    } 
} 
curl_close($ch);

echo "SID = ".$SID;

Besten Dank. Das war der richtige Stupser :slight_smile: Der User fehlte.

Auch hat sich wohl die Schnittstelle zum Wählen geändert.

Mit folgendem Skript funktioniert es nun:


<?php
declare(strict_types=1);
require_once '_Global_functions.ips.php';

//Daten anpassen
$FritzBox   = IP_FRITZBOX;
$Username   = FRITZBOX_USER;
$Password   = FRITZBOX_PWD;
$dialNumber = '**611'; //Simone interne Nummer

//$ch = curl_init('http://' . $FritzBox . '/login_sid.lua?username=' . $Username);
$ch = curl_init('http://' . $FritzBox . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login                    = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);

if ((string) $session_status_simplexml->SID !== '0000000000000000') {
    $SID = $session_status_simplexml->SID;
} else {
    $challenge = $session_status_simplexml->Challenge;
    $response  = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $Password, 'UCS-2LE', 'UTF-8'));

    curl_setopt($ch, CURLOPT_POSTFIELDS, "username=$Username&response={$response}");
    $sendlogin                = curl_exec($ch);
    $session_status_simplexml = simplexml_load_string($sendlogin);

    if ((string) $session_status_simplexml->SID !== '0000000000000000') {
        $SID = $session_status_simplexml->SID;
    } else {
        IPSLogger_Wrn(basename(__FILE__, '.ips.php'), 'Login fehlgeschlagen');
        return;
    }
}
curl_close($ch);

$dial = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?sid=$SID&dial=$dialNumber");

sleep(6);

$hangup = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?sid=$SID&hangup=");

$logout = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?logout=1&sid=$SID");