it:linux:fritzbox_rufliste

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
it:linux:fritzbox_rufliste [2013/09/28 15:27] – Page moved from fritzbox_rufliste to it:linux:fritzbox_rufliste adminit:linux:fritzbox_rufliste [2015/12/24 14:26] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Fritz!Box Rufliste ======
 +===== Sinn und Zweck =====
 +Die Rufliste der Fritzbox soll auf einer Dedizierten HTML Seite dargestellt werden, die auch auf IPhone/IPad funktioniert und kein Passwortlogin erfordert.
 +===== Vorraussetzungen =====
 +  * FRITZ!OS 05.21 oder höher
 +===== Nachforschungen =====
 +  * Unter <code>http://fritzbox/cgi-bin/webcm?getpage=../html/de/home/foncallsdaten.xml&sid=<hier kommt die SID></code> gibt ein XML von der Rufliste
 +  * Die Struktur des XML ist:<code xml>
 +<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>
 +</code> wobei: 
 +
 +^ Type ^ Bedeutung ^
 +|  1    | Ankommender Anruf     |
 +|  2    | Anruf in Abwesenheit  |
 +|  3    | Ausgehender Anruf     |
 +
 +===== Anmelden an der Fritzbox =====
 +Beim Anmelden an der Fritzbox will man nur den "sid" Parameter herausknobeln, den man Url mitgeben muss, damit die Fritzbox akzeptiert, dass man angemeldet ist.\\
 +Die Anmeldung an der FritzBox läuft folgendermaßen ab:
 +  - Fritzbox sendet eine "challenge" beim anzeigen der Loginseite z.B.: <code>  ["security:status/challenge"] = "1fe918cd", </code>
 +  - Die Challenge wird zusammen mit dem Passwort in einen String verwandelt, der folgendes Format hat:<code><Challenge>-<Passwort></code>
 +  - 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": <code python>
 +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()
 +</code>
 +  - Dieser Hash wird wieder zu einem String kombiniert: <code><Challenge>-<Hash></code> und an die Adresse <code>http://fritzbox/login.lua</code> als POST Parameter mit dem Namen "response" gesendet.
 +  - 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.
 +  - Fertig!
 +
 +===== Aktualisieren der Daten =====
 +Ruft man immer nur (wie oben angegeben) die foncallsdaten.xml ab, wird man feststellen, dass die Daten dort nicht aktualisiert werden. 
 +Dies passiert nur, wenn man die FritzBox Seite besucht. \\
 +Man kann dies allerdings auch mit dem Aufruf der URL
 +<code>http://fritzbox/home/home.lua?sid={0}&comfort=0&useajax=1&xhr=1</code>
 +machen.
 +Hierbei ist "{0}" mit der aktuellen sid zu ersetzen.
 +
 +
 +
 +
 +
 +
  
  • it/linux/fritzbox_rufliste.txt
  • Zuletzt geändert: 2015/12/24 14:26
  • von 127.0.0.1