login per hex_md5 challenge

xunreal

Neuer User
Mitglied seit
16 Nov 2006
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Weiß schon jemand wie ich mein internes Script (Anmeldung bis AVM .70 Software per POST Request ) wieder in der neuen Software .76 zum laufen kriege.
Im Quelltext steh was mit Challenge der von der Box jedesmal neu errechnet wird

Quelltext der FBF 7270 hier


.................
function setResponse(pw) {
var challenge = "5531b1b3"; //Dieser Wert ist jedesmal anders
var str = challenge + "-" + makeDots(pw);
var response = challenge + "-" + hex_md5(str);
var frm = document.forms["uiPostForm"].elements["login:command/response"];
frm.value = response;
frm.disabled = false;
}
</script>
</head>
<body onload="uiDoOnLoad()">
<form method="POST" action="../cgi-bin/webcm" target="_self" id="uiPostForm" name="uiPostForm">
<input type="hidden" name="sid" value="0000000000000000" id="uiPostSid">
<input type="hidden" name="getpage" value="../html/de/menus/menu2.html" id="uiPostGetPage">

<input type="hidden" name="errorpage" value="../html/de/menus/menu2.html" id="uiPostErrPage">
<input type="hidden" name="var:pagename" value="home" id="uiPostPageName">
<input type="hidden" name="var:menu" value="home" id="uiPostMenu">
<input type="hidden" name="var:pagemaster" value="" id="uiPostPageMaster">
<!--<input type="hidden" id="uiPostVarName" name="">-->
........................
 
Was genau ist jetzt die Frage? Was hex_md5 tut? Oder sollte jeder wissen, was Dein internes Skript ist?
Nach dem Namen ebenso wie nach etwas Googlen würde ich sagen, daß diese Funktion den MD5 Wert berechnet. Ebenfalls aufgrund von Google würde ich sagen, daß es sich dabei nicht um eine eingebaute Funktion handelt, sondern um eine, die irgendwo in den vorhandenen Skripts definiert wird.
 
Hallo

habe folgendes Skript, welches meine Rufumleitung aktiviert bzw deaktiviert
(Auszug)

Code:
#!/bin/bash

PASSWORD="Passwort"
eventadd 1 "Rufumleitung gestartet" //Eintrag ins Systemevent


i=1
while [ $i -le 5 ]

do
YM_DAY=`date '+%w'`
HOUR=`date '+%H'`
MINUTEN=`date '+%M'`

if [ $HOUR -eq 07 ] && [ $MINUTEN -ge 30 ] && [ $MINUTEN -le 35 ] && [ $YM_DAY -ge 1 ] && [ $YM_DAY -le 5 ]

then
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=$PASSWORD"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
sleep 5
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="telcfg:settings/CallerIDActions1/Active=1"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
/sbin/eventadd 1 'Rufumleitung ein'

fi
.
.
done
---------------------------------------
seit der Version AVM .76 geht der login nicht mehr mit der POST Methode und ich kann nichts mehr über mein Script konfigurieren.

im neuen Quelltext bekommt die Seite vorher einen zufälligen "Challenge"-Wert aus dem sich dann ein Passwort-Key in der Form 2896783d-92b59288ff75c687954f56aae4e35746
errechnet um eingeloggt zu werden.


Quelltext der .76 Firmware
Code:
function uiDoSave() {
var pw = jslGetValue("uiViewPassword");
setResponse(pw);
document.uiPostForm.submit();
}
function makeDots(str) {
var newStr = "";
for (var i = 0, len = str.length; i < len; i++) {
if (str.charCodeAt(i) > 255) {
newStr += ".";
}
else {
newStr += str.charAt(i);
}
}
return newStr;
}
function setResponse(pw) {
var challenge = "2896783d";
var str = challenge + "-" + makeDots(pw);
var response = challenge + "-" + hex_md5(str);
var frm = document.forms["uiPostForm"].elements["login:command/response"];
frm.value = response;
frm.disabled = false;
}

Wie kann ich mich über mein Script wieder einloggen da der "Challenge Wert jedesmal ein anderer ist ???

Danke
 
Zuletzt bearbeitet:
Wie wäre es mit CODE-Tags für die Code-Teile und schwarzer Schrift für den normalen Text? Oder ist das ein Test, ob ich farbenblind bin?

Letztlich will AVM damit ja unterbinden, daß jemand unberechtigt auf die Box zugreift.
Zunächst einmal, hast Du schon überprüft, ob Du wirklich den richtigen Challange-Wert brauchst? Und wenn ja, dann mußt Du eben irgendwie an den Wert drankommen.
 
Login Fritzbox x.x.76 mit challenge Code und SID

Hab es selbst rausgefunden und mir ein script geschrieben mit dem ich mich über mein Script automatisch einloggen kann.
Das selbstgeschriebene Programm 'fillmd5' in "c geschrieben" liegt bei mir auf dem USB-Stick im selben Verzeichnis wie dieses bash Programm.
Dies wird benötigt da das Passwortfile in einen md5-hash umgerechnet wird und nach jedem Zeichen ein Nullbyte hängen muss.
Mit der Busybox ist kein echo ${variable:3} möglich um z.B. nur 3 Zeichen zu "echoen" d.h. tr und sed um variablen zu füllen.

Das Script steuert bei mir die Rufumleitung zu bestimmten Zeiten ein oder aus dieser Part ist hier nicht drin.

Vielleicht hat jmd einen einfacheren Weg.

[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]
Code:
#!/bin/bash

eventadd 1 "Rufumleitung gestartet"						#Programmstart ins Ereignisprotokoll der FritzBox eintragen

#---Variablen und Files------------------------------------------
WEBCM="/usr/www/html/cgi-bin/webcm "
LOGINPAGE="getpage=/usr/www/html/html/login.html"
SIDPAGE="getpage=/usr/www/html/html/login_sid.xml"
PWFILE="/var/media/ftp/SanDisk-Cruzer-01/System/pwfile"
TMPFILE="/var/media/ftp/SanDisk-Cruzer-01/System/tmpfile"
SIDFILE="/var/media/ftp/SanDisk-Cruzer-01/System/sidfile"
PW="Passwort" #hier das Passwort für die Fritzbox Oberfläche eintragen
CHALLENGE=""
SID=""
#Beispiel  fff4ace2-ab21ef8418ed8741e078b10cadd0c81a
#CHALLENGE="fff4ace2" # zum Testen

#---Daten lesen--------------------------------------------------
$WEBCM$SIDPAGE > $PWFILE 										#Challenge anfordern
CHALLENGE=`grep "Challenge" $PWFILE`				#Challenge Code auslesen
echo $CHALLENGE > $PWFILE										#nur Challengeteil behalten
CHALLENGE=`sed 's/<Challenge>//g' $PWFILE` 	# ersten Teil des Strings entfernen
echo $CHALLENGE > $PWFILE
CHALLENGE=`sed 's/<\/Challenge>//g' $PWFILE` # 2ten Teil des Strings entfernen
echo $CHALLENGE-$PW > $PWFILE
cat $PWFILE |tr -d '\015\012'	> $PWFILE	 		#LF und CR entfernen

./makemd5 $PWFILE   												# eigenes Programm welches nach jedem zeichen eine 0 anhaengt damit Md5summe OK ist
cat $PWFILE |tr -d '\012\'	> $PWFILE	 			#LF und \0 entfernen

md5sum $PWFILE > $TMPFILE  								  #Passwort hashen 2.File da ins selbe nicht geschrieben werden kann -> dann falsche Md5Sum		
mv $TMPFILE $PWFILE                                   #Daten umkopieren und Temp löschen

cat $PWFILE |tr -d '\012' > $PWFILE	        #LF aus File entfernen

PW=`sed 's/  \/var\/media\/ftp\/SanDisk-Cruzer-01\/System\/pwfile//g' $PWFILE` #2Spaces + Dateiname aus md5sum datei entfernen  
echo $CHALLENGE-$PW > $PWFILE
cat $PWFILE |tr -d '\015\012'	> $PWFILE	    #LF und CR entfernen
PW=`sed 's/ //g' $PWFILE`

#Passwort senden und SID besorgen
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/response=$PW&$SIDPAGE"
export CONTENT_LENGTH=${#POST_DATA}
echo "$POST_DATA" | /usr/www/html/cgi-bin/webcm > $SIDFILE

SID=`grep "SID" $SIDFILE`			#SID aus Datei lesen
echo $SID > $SIDFILE					#nur SID-Teil behalten
SID=`sed 's/<SID>//g' $SIDFILE` # ersten Teil des Strings entfernen
echo $SID > $SIDFILE
SID=`sed 's/<\/SID>//g' $SIDFILE` # 2ten Teil des Strings entfernen
echo $SID > $SIDFILE
cat $SIDFILE |tr -d '\015\012'	> $SIDFILE	 #LF und CR entfernen
SID=`sed 's/ //g' $SIDFILE`       #SID in Variable kopieren

#Nun kann man konfigurieren --> &sid=$SID an jedes Post hängen
#Rufumleitung ein
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="telcfg:settings/CallerIDActions0/Active=1&sid=$SID"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null

export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="telcfg:settings/CallerIDActions1/Active=1&sid=$SID"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm >  /dev/null

#Abmelden
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="security:command/logout=1&sid=$SID"
export CONTENT_LENGTH=${#POST_DATA}
echo "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null

sleep 200
done
 
Zuletzt bearbeitet:
Wie wäre es mit CODE-Tags für die Code-Teile und schwarzer Schrift für den normalen Text? Oder ist das ein Test, ob ich farbenblind bin?

Letztlich will AVM damit ja unterbinden, daß jemand unberechtigt auf die Box zugreift.
Zunächst einmal, hast Du schon überprüft, ob Du wirklich den richtigen Challange-Wert brauchst? Und wenn ja, dann mußt Du eben irgendwie an den Wert drankommen.
bin ja lernfähig wenn ich weiß wie es geht ;-)
 
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.