fritzbox_rufliste

Dies ist eine alte Version des Dokuments!


Fritz!Box Rufliste

Die Rufliste der Fritzbox soll auf einer Dedizierten HTML Seite dargestellt werden, die auch auf IPhone/IPad funktioniert und kein Passwortlogin erfordert.

  • FRITZ!OS 05.21 oder höher
  • Unter
    http://fritzbox/cgi-bin/webcm?getpage=../html/de/home/foncallsdaten.xml&sid=<hier kommt die SID>

    gibt ein XML von der Rufliste

  • Die Struktur des XML ist:
    <Foncalls>
     <Calls id="0">
      <Type>2</Type>
      <Date>21.12.12 11:47</Date>
      <Number>0XXXXXX</Number>
      <Port/>
      <Duration>0:00</Duration>
      <Route>1</Route>
      <RouteType>1</RouteType>
      <Name></Name>
      <FonbookType/>
      <PortName></PortName>
      <Path></Path>
     </Calls>
    </Foncalls>

    wobei:

Type Bedeutung
1 Ankommender Anruf
2 Anruf in Abwesenheit
3 Ausgehender Anruf

Die Anmeldung an der FritzBox läuft folgendermaßen ab:

  1. Fritzbox sendet eine „challenge“ beim anzeigen der Loginseite z.B.:
      ["security:status/challenge"] = "1fe918cd", 
  2. Die Challenge wird zusammen mit dem Passwort in einen String verwandelt, der folgendes Format hat:
    <Challenge>-<Passwort>
  3. Dieser String wird zu einem md5 hex hash verwandelt. Da der Hash-Algo der Fritzbox immer von Unicode-Zeichenketten (also 16 bit pro Zeichen) ausgeht, war dieser Schritt nicht sofort offensichtlich. Folgendes Pyhton Schnipsel berechnet den hash von „string“:
    def digest(self, string):
      """Calculate the md5 digest like fritzbox does.
      """
      d=[]
      for i in unicode(string):
      d.append(ord(i))
      m = md5.new()
      m.update(struct.pack('h'*len(d), *d))
      return m.hexdigest()
  4. Dieser Hash wird wieder zu einem String kombiniert:
    <Challenge>-<Hash>

    und an die Adresse

    http://fritzbox/login.lua

    als POST Parameter mit dem Namen „response“ gesendet.

  5. Von dieser Seite („/login.lua“) bekommt man im Erfolgsfall den HTML Statuscode 303 zurück und als Headereintrag „location“ bekommt man eine Url, welche den gesuchten Parameter „sid“ als GET Parameter enthält.
  6. Fertig!
  • fritzbox_rufliste.1356205080.txt.gz
  • Zuletzt geändert: 2015/12/24 14:25
  • (Externe Bearbeitung)