Fritzbox Anrufliste mit PHP auslesen?

tommo

Neuer User
Mitglied seit
9 Jan 2012
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Hallo

Ich habe den Apache von Radislav installiert.

Wie kann ich denn mittels PHP die Anruferliste der Fritzbox auslesen?

Ich habe es mit folgendem Script probiert, jedoch scheinen bei PHP ein paar Pakete zu fehlen (z.B. CURL). Hab leider keine Ahnung, wie ich die nachinstallieren kann.

Code:
<?php

$ip = '192.168.178.1';
$passwd = 'YOURPASS';

// get Challenge
$response = file_get_contents("http://" . $ip . "/cgi-bin/webcm?getpage=../html/login_sid.xml");




$xml = new SimpleXMLElement($response);
$challange = $xml->Challenge;

$str = $challange . '-' . $passwd;

// hash challange + pass and encode to UTF-16LE
$md5 = md5( iconv('ISO8859-1', 'UTF-16LE', $str) );

$response = $challange . '-' . $md5;


$data = array(
   "getpage"                => "../html/de/menus/menu2.html",
   "login:command/response" => $response
);


$response =  post_to_url("http://" . $ip . "/cgi-bin/webcm?", $data);

// get SessionID
preg_match('/value="(w+)" id="uiPostSid">/', $response, $matches);

$sid = $matches[1];

// refresh data
$tmp = file_get_contents("http://" . $ip . "/cgi-bin/webcm?sid=" . $sid . "&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=foncalls&var%3Aerrorpagename=foncalls&var%3Amenu=home&var%3Apagemaster=&var%3Aactivtype=pppoe&var%3AtabInetstat=0&var%3Aweckernr=&logger%3Asettings%2Ffilter=2");


// get CSV :)
$csv = file_get_contents("http://" . $ip . "/cgi-bin/webcm?sid=" . $sid . "&getpage=..%2Fhtml%2Fde%2FFRITZ%21Box_Anrufliste.csv");


// weiterverarbeitung der CSV ... -> file_put_contents etc ...
echo $csv;



function post_to_url($url, $data) {
   $fields = '';
   foreach($data as $key => $value) { 
      $fields .= $key . '=' . $value . '&'; 
   }
   rtrim($fields, '&');
   
   
   $post = curl_init();
   
   curl_setopt($post, CURLOPT_URL, $url);
   curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
   curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($post, CURLOPT_FOLLOWLOCATION, 1);
   
   $result = curl_exec($post);
   
   curl_close($post);
  
   return $result;
  
}
Meine Box: FRITZ!Box Fon WLAN 7270 v2, Firmware-Version 54.05.05

Danke,
Tom
 
Zuletzt bearbeitet:
hallo,

ich schreibe mal hier, weil es hier ausführlicher ist...
für curl muss das php-binary glaub ich neu kompiliert werden. wie es geht, kann ich allerdings auf die schnelle nicht sagen.

[EDIT]
ich habe nun mal statisches binary für curl kompiliert, ob es allerdings kein schwachsinn war, kann ich nicht sagen. somit anbei curl für 7270 v2. bitte um rückmeldung, ob es funktioniert und wie man es einbindet.
[/EDIT]
 

Anhänge

  • curl.zip
    315.7 KB · Aufrufe: 22
Zuletzt bearbeitet:
Hallo Radislav,

wie kann ich denn Dein binary in die bestehende Apache Umgebung einbauen?

Muss ich die Dateien einfach in ein Verzeichnis kopieren und eine Config-Datei des Apache anpassen/erweitern?

Gruß,
Tom
 
hallo,

das weis ich leider nicht.. vielleicht kann apache-forum weiterhelfen.

gruß
 
Das curl Binary wird nichts bringen. Entweder Du erstellst selbst ein PHP mit curl Unterstützung, oder Du machst den Post von Hand.
 
@RalfFriedl:
ich habe php mit curl kompiliert (mit freetz). was muss ich denn alles zusammenpacken, damit es genutzt werden kann? muss man dann auch apache.conf anpassen?
 
Wenn curl in PHP enthalten ist, muss man wahrscheinlich gar nichts mehr anpassen, erst recht nicht in der Apache Konfiguration.
Wenn curl in PHP dynamisch ist, muss man dem PHP sagen, dass es das curl Modul laden soll.
 
@radislav: Hat's geklappt? Wenn ja, kannst Du Deine Dateien bitte zur Verfügung stellen?

Gruß,
Tom
 
@tommo, es hat geklappt, ich kann aber nicht sagen, ob es wirklich funktioniert.
das anhängen wird hier allerdings immer schwiriger: es funktioniert nicht mal im explorer mehr :( hier der link
 
Das wäre ia Super!
Was muss ich denn machen, einfach die php-cgi Datei gegen die vorhandene php Datei im Verzeichnis apache/cgi-bin tauschen? Oder muss ich da noch in irgendwelchen config-Dateien Anpassungen machen?

Gruß,
Tom
 
ja, einfach ersetzten (evtl. umbennen) und probieren! bitte um rückmeldung ob php und curl funktionieren :)
 
also wenn ich die "php" datei einfach umbenenne und die "php-cgi" einfüge, dann findet er den Pfad nicht.

Wenn ich die "php-cgi" in "php" umbenenne, dann kommt ein Internal Server Error beim Aufruf einer php-Datei.

Tom
 
ok, dann funktioniert es so nicht: ich kann leider nicht mehr weiterhelfen, sorry
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.