FritzBox Passwort in URL übergeben

Dass die Strings UTF16-LE kodiert sein müssen war nach Lektüre des zweiten Links schon bewusst ... gescheitert bin ich an der Kodierung, weil ich zwei Dinge falsch verstanden habe:
Die Formulierung "ohne abschließene 0-Bytes" schien sich mir auf die einzelnen LE-Bytes des Strings zu beziehen, obgleich mir das schon seltsam vorkam, und md5-kodiert hab ich wie man oben sieht nur das Klartextpasswort statt Challenge und Passwort 8)

Danke für das erhellende Beispiel, offenbar war ich zu dem Zeitpunkt noch im Halbschlaf :p
 
"Paßwort", "Challange"... :noidea:
 
Siehe zweiter Link von RalfFriedl, wie gesagt!



Allerdings komme ich selbst auch immer noch nicht weiter, denn wenn ich von
"31003200330034003500360037007a002d00e40062006300" (die Lücke bastelt
die dumme Forensoftware da rein!) den md5-Hash kalkulieren lasse, erhalte ich
sowohl hier als auch hier das Ergebnis
"93d024706923804409f8bcec11d0f493" statt
"9e224a41eeefa284df7bb0f26c2913e2".

Entweder hab ich schon wieder einen dummen Fehler gemacht, oder md5 ist nicht gleich md5 :]
 
Zuletzt bearbeitet:
Hallo,

Hier: http://www.ip-phone-forum.de/showthread.php?t=172088&p=1694622&viewfull=1#post1694622
hatte ich es doch schon geschrieben und hier:
http://www.ip-phone-forum.de/showthread.php?t=226605&p=1644253&viewfull=1#post1644253
steht es auch noch, es hat mit UniCode zu tun und mit 16 statt 8 Chars bei der übergabe,
wenn du die java test zip benutzt damit geht es oder mit der VBScribt version.

oder suche im Forum hier mal nach einer VBA Funktion wurde auch mal gepostet sowie Dot.Net.

Gruß Erwin
 
Danke für deine schnelle Antwort, doch leider werde ich aus ihr nicht schlau ;)
Warum ohne die 3 vorne, und warum mit Backslash vor der 0? *kopf kratz*

EDIT: Die Antwort von Pikachu kam dazwischen, die schaue ich mir jetzt erst mal an ...
 
So, jetzt wird die Sache endlich klarer.

@Pikachu: Ich habe deinen Post #19 nicht überlesen, doch da die Links scheinbar direkt zu einem ZIP-File und zu einer VB-Script-Funktion führten, und du auch geschrieben hast "wenn du es brauchen solltest", habe ich die erst mal nicht weiter verfolgt. Nach dem Hinweis von Ralf wurde mir ja schon mein grundsätzlicher Fehler klar, dass ich nur den Hash aus dem Passwort statt aus Challenge plus Passwort gebildet hatte, weshalb ich eben dachte, ich bräuchte sie nicht ;)

Nun bin ich deinem ersten Link gefolgt, und stieß dort unerwartet auf einen Post, über dem sich wiederum ein Post von stasikz befindet, der enthält was ich brauchte und nicht fand: Einen Online-md5-Kalkulator, der nicht den String Hash sondern den Binary Hash berechnet (worauf Ralf wahrscheinlich hinauswollte). Damit klappt es nun.

@Ralf: Ohne ein Wort der Erläuterung schwer möglich, doch mit Hilfe von Pikachus Links habe ich es inzwischen begriffen.

P.S.: ... oder um es genauer auszudrücken: Was die "31" bedeutet war mir zwar schon klar, doch dass der md5-Hash binär über die Byte-Folge gebildet werden soll statt über den String der Bytefolge eben nicht. Das ging für mich aus dem PDF nicht hervor.
 
Zuletzt bearbeitet:
In dem PDF stand auch nichts davon, daß man den String erstmal in Hex schreiben soll und von den Hex-Ziffern die MD5 Summe bilden soll.

Das einfachste wäre, direkt den String 1234567z-äbc zu nehmen. AVM hat aber beschlossen, dazwischen noch jeweils 0-Bytes einzufügen. In C ist "\0" die Schreibweise für ein 0-Byte. Der einzige Nutzen von UTF16-LE ist, daß man damit auch Unicode-Zeichen ab 256 nutzen kann. Genau das wird aber dadurch verhindert, daß solche Zeichen durch einen Punkt ersetzt werden. Dann hätte man auch gleich darauf verzichten können.

Code:
# 
1234567z-äbc
# Kodierung Latin-1
31 32 33 34 35 36 37 7a  2d e4 62 63
# Kodierung UTF16-LE
31 00 32 00 33 00 34 00  35 00 36 00 37 00 7a 00 2d 00 e4 00 62 00 63 00
 
In C ist "\0" die Schreibweise für ein 0-Byte.
Ah – irgendwie kam es mir zwar bekannt vor, hat aber nicht geklingelt ;)
Mein C ist ca. 15 Jahre her, von daher ...
Die weggelassene 3 am Anfang hatte mich oben halt noch zusätzlich irritiert :p

Also war die md5-Berechnung über 310032003300... schon richtig, nur eben nicht über "310032003300..." sondern über 0x31 0x00 0x32 0x00 0x33 0x00 ... (wie es im PDF durch eine kleine Randbemerkung zumindest angedeutet wird, hab mir aber nix dabei gedacht).

Inzwischen kann ich das komplette Prozedere auch bis zum fertigen Response-Wert durchspielen, doch so oder so hat sich nun das Thema "Login-Bookmark" tatsächlich endgültig erledigt, denn wie schon von Anfang an befürchtet ist diese "Challenge" ja nicht statisch sondern dynamisch, d.h. ändert sich bei jedem Login-Vorgang. Wahrscheinlich sagt das die Bezeichnung an sich auch schon aus, doch da ich weder beruflicher noch enthusiastischer Hobby-Programmierer bin und alles in der Richtung wie gesagt auch schon ewig her ist, war ich mir da nicht ganz sicher und wollte es wenigstens mal ausprobiert haben.

Fazit: Außer Spesen nix gewesen, aber wieder das eine oder andere dazugelernt 8)

Vielen Dank für eure Hilfe und Erläuterungen.
 
Ja, es ist der Zweck dieser Änderung, daß man nicht so einfach auf die Box kommt.

Wenn Du unbedingt willst, kannst Du das aber in JavaScript implementieren, letztlich muß AVM das ja auch irgendwie mit JavaScript lösen, um die Anmeldung im Browser durchzuführen. Wenn dieses Skript das Paßwort enthält, könnte es theoretisch eine Anmeldung durchführen, indem es den Challenge-Wert ausliest, den Response-Wert generiert und an die Box sendet. Das Skript kannst Du auf dem PC oder auf der Box ablegen.
 
Ja, es ist der Zweck dieser Änderung, daß man nicht so einfach auf die Box kommt.

Dass die das nicht zum Spaß implementiert haben ist logisch :D Mit einem lokalen statischen Key, der sich von außen nicht auslesen lässt, wäre es ja auch schon erschwert, aber mit einem dynamischen wird's natürlich noch erheblich schwieriger.

Könnte also eine interessante Fingerübung werden, falls ich tatsächlich wie geplant im Sommer die JavaScript-Fortbildung mache ...
 
Der dynamische Wert für Challange sichert auch die unverschlüsselte Anmeldung im Lokalen Netzwerk ab. Auch wenn jemand die Anmeldung abhören kann, nützt es nichts, weil man daraus nicht (einfach) das Passwort ermitteln kann, und der Hash ist bei der nächsten Anmeldung nutzlos, weil dann der Challange-Wert vermutlich anders sein wird. Gegen einen aktiven Man-in-the-Middle Angriff ist man damit aber nicht geschützt.
 
Mit "von außen" meinte ich alle, die nicht sowieso per root Zugriff auf den Router haben ... was ja wiederum auch nur ein rein Passwort-geschützer Zugang ist. Irgendwie ist es widersinnig, dass man nur die Möglichkeit hat das Webinterface per Konfiguration entweder komplett ungeschützt zu lassen oder aber derart abzusichern, dass man selbst als Eigner der Box Hindernisse in den Weg geräumt bekommt, die man wenn überhaupt nur mit großem Aufwand umgehen kann (siehe Ursprung des Threads bzw. dessen weiterer Verlauf).

Ich finde, es sollte wie z.B. bei XAMPP einfach noch weitere Möglichkeiten geben, die den Router nach außen hin zwar relativ gut absichern, einem als Administrator aber dennoch einen komfortablen und direkten Zugriff ermöglichen.
 
Glaube ich weniger, denn da wäre ich sicher nicht der erste 8)
 
Du glaubst doch nicht ernsthaft, daß AVM alles umsetzt, nur weil einer (der Erste) das schreibt?
Wenn aber viele Anfragen kommen (von verschiedenen Leuten), besteht zumindest die Chance, daß es umgesetzt wird.
 
"sicher nicht der erste" = wohl auch nicht der zweite oder dritte
 
Ich habe den Login mal als Bookmarklet implementiert. Natürlich läuft es nur, wenn die aktuelle Seite irgendwo auf "http://fritz.box/..." steht (auch ausgeloggt).
Code:
javascript:(function(){var x=new XMLHttpRequest(),d=document,s=d.createElement('script');s.type='text/javascript';s.src='http://fritz.box/js/md5.js';d.body.appendChild(s);x.open('GET','http://fritz.box/login_sid.lua',false);x.send();c=x.responseXML.getElementsByTagName("Challenge")[0].firstChild.nodeValue;c=c+"-"+hex_md5(c+"-"+"PASSWORT");s=d.createElement('form');s.method='POST';s.action='http://fritz.box/login.lua';s2=d.createElement('input');s2.type='hidden';s2.name='response';s2.value=c;s.appendChild(s2);d.body.appendChild(s);s.submit();})();

PS: Ebenso ist PASSWORT mit dem WebIF-Passwort auszutauschen.
 
Funktioniert perfekt, vielen Dank! :)

Bin mal gespannt, ob ich das (ohne mir deine Lösung näher anzuschauen) dann auch so hinbekommen werde.

Darf ich dich bis dahin noch bitten mir dabei zu helfen, mittels des Bookmarklets direkt auf eine bestimmte Seite zuzugreifen, wie z.B. http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:pagename=foncalls ?
Bei oberflächlicher Betrachtung des Codes weiß ich nicht auf Anhieb, wo ich die Adresse einfügen bzw. ob ich ggf. noch weiteren Code ergänzen muss ...


P.S.: Der Link oben steht korrekt in meinem Post, wird aber selbst bei einfachem Kopieren aufgrund des "p" nach dem ":" mit irgendwelchem Smiley-Kram verunreinigt 8)
 
Zuletzt bearbeitet:
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.