# RouterPasswort Java+Php



## invulnerabilis (14. Apr 2005)

Hallo, ich habe ienen Router, zu welchem ich mein PW vergessen habe. Ich könnte zwar das Passwort zurücksetzen, aber dann hätte ich alle meine einstellungen nicht mehr.
Ich hab mir mal das LogIn-Script angeschaut werde aber nicht ganz schlau. Ich kann zwar kein Java aber ich verstehe es ungefähr.

LogIn:

```
<script language="JavaScript">
<!--
    if(top.location != self.location) {
		top.location.href = "rpAuth.html";
		top.location.pathname = "rpAuth.html";
    }

	var hex_chr = "0123456789abcdef";
	function rhex(num)
	{
		var str = "";

  		for(var j = 0; j <= 3; j++)
	    	str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + hex_chr.charAt((num >> (j * 8)) & 0x0F);

  		return str;
	}

	function str2blks_MD5(str)
	{
  		var nblk = ((str.length + 8) >> 6) + 1;
  		var blks = new Array(nblk * 16);

  		for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
  		for(i = 0; i < str.length; i++)
    		blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);

  		blks[i >> 2] |= 0x80 << ((i % 4) * 8);
  		blks[nblk * 16 - 2] = str.length * 8;

  		return blks;
	}

	function add(x, y)
	{
  		return ((x&0x7FFFFFFF) + (y&0x7FFFFFFF)) ^ (x&0x80000000) ^ (y&0x80000000);
	}

	function rol(num, cnt)
	{
  		return (num << cnt) | (num >>> (32 - cnt));
	}

	function cmn(q, a, b, x, s, t)
	{
  		return add(rol(add(add(a, q), add(x, t)), s), b);
	}

	function ff(a, b, c, d, x, s, t)
	{
  		return cmn((b & c) | ((~b) & d), a, b, x, s, t);
	}

	function gg(a, b, c, d, x, s, t)
	{
  		return cmn((b & d) | (c & (~d)), a, b, x, s, t);
	}

	function hh(a, b, c, d, x, s, t)
	{
  		return cmn(b ^ c ^ d, a, b, x, s, t);
	}

	function ii(a, b, c, d, x, s, t)
	{
  		return cmn(c ^ (b | (~d)), a, b, x, s, t);
	}

	function calcMD5(str)
	{
  		var x = str2blks_MD5(str);
  		var a = 0x67452301;
  		var b = 0xEFCDAB89;
  		var c = 0x98BADCFE;
  		var d = 0x10325476;

  		for(var i = 0; i < x.length; i += 16)
  		{
    		var olda = a;
    		var oldb = b;
    		var oldc = c;
    		var oldd = d;

    		a = ff(a, b, c, d, x[i+ 0], 7 , 0xD76AA478);
    		d = ff(d, a, b, c, x[i+ 1], 12, 0xE8C7B756);
    		c = ff(c, d, a, b, x[i+ 2], 17, 0x242070DB);
    		b = ff(b, c, d, a, x[i+ 3], 22, 0xC1BDCEEE);
    		a = ff(a, b, c, d, x[i+ 4], 7 , 0xF57C0FAF);
    		d = ff(d, a, b, c, x[i+ 5], 12, 0x4787C62A);
    		c = ff(c, d, a, b, x[i+ 6], 17, 0xA8304613);
    		b = ff(b, c, d, a, x[i+ 7], 22, 0xFD469501);
    		a = ff(a, b, c, d, x[i+ 8], 7 , 0x698098D8);
    		d = ff(d, a, b, c, x[i+ 9], 12, 0x8B44F7AF);
    		c = ff(c, d, a, b, x[i+10], 17, 0xFFFF5BB1);
    		b = ff(b, c, d, a, x[i+11], 22, 0x895CD7BE);
    		a = ff(a, b, c, d, x[i+12], 7 , 0x6B901122);
    		d = ff(d, a, b, c, x[i+13], 12, 0xFD987193);
    		c = ff(c, d, a, b, x[i+14], 17, 0xA679438E);
    		b = ff(b, c, d, a, x[i+15], 22, 0x49B40821);

    		a = gg(a, b, c, d, x[i+ 1], 5 , 0xF61E2562);
    		d = gg(d, a, b, c, x[i+ 6], 9 , 0xC040B340);
    		c = gg(c, d, a, b, x[i+11], 14, 0x265E5A51);
    		b = gg(b, c, d, a, x[i+ 0], 20, 0xE9B6C7AA);
    		a = gg(a, b, c, d, x[i+ 5], 5 , 0xD62F105D);
    		d = gg(d, a, b, c, x[i+10], 9 , 0x02441453);
    		c = gg(c, d, a, b, x[i+15], 14, 0xD8A1E681);
    		b = gg(b, c, d, a, x[i+ 4], 20, 0xE7D3FBC8);
    		a = gg(a, b, c, d, x[i+ 9], 5 , 0x21E1CDE6);
    		d = gg(d, a, b, c, x[i+14], 9 , 0xC33707D6);
    		c = gg(c, d, a, b, x[i+ 3], 14, 0xF4D50D87);
    		b = gg(b, c, d, a, x[i+ 8], 20, 0x455A14ED);
    		a = gg(a, b, c, d, x[i+13], 5 , 0xA9E3E905);
    		d = gg(d, a, b, c, x[i+ 2], 9 , 0xFCEFA3F8);
    		c = gg(c, d, a, b, x[i+ 7], 14, 0x676F02D9);
    		b = gg(b, c, d, a, x[i+12], 20, 0x8D2A4C8A);

    		a = hh(a, b, c, d, x[i+ 5], 4 , 0xFFFA3942);
    		d = hh(d, a, b, c, x[i+ 8], 11, 0x8771F681);
    		c = hh(c, d, a, b, x[i+11], 16, 0x6D9D6122);
    		b = hh(b, c, d, a, x[i+14], 23, 0xFDE5380C);
    		a = hh(a, b, c, d, x[i+ 1], 4 , 0xA4BEEA44);
    		d = hh(d, a, b, c, x[i+ 4], 11, 0x4BDECFA9);
    		c = hh(c, d, a, b, x[i+ 7], 16, 0xF6BB4B60);
    		b = hh(b, c, d, a, x[i+10], 23, 0xBEBFBC70);
    		a = hh(a, b, c, d, x[i+13], 4 , 0x289B7EC6);
    		d = hh(d, a, b, c, x[i+ 0], 11, 0xEAA127FA);
    		c = hh(c, d, a, b, x[i+ 3], 16, 0xD4EF3085);
    		b = hh(b, c, d, a, x[i+ 6], 23, 0x04881D05);
    		a = hh(a, b, c, d, x[i+ 9], 4 , 0xD9D4D039);
    		d = hh(d, a, b, c, x[i+12], 11, 0xE6DB99E5);
    		c = hh(c, d, a, b, x[i+15], 16, 0x1FA27CF8);
    		b = hh(b, c, d, a, x[i+ 2], 23, 0xC4AC5665);

    		a = ii(a, b, c, d, x[i+ 0], 6 , 0xF4292244);
    		d = ii(d, a, b, c, x[i+ 7], 10, 0x432AFF97);
    		c = ii(c, d, a, b, x[i+14], 15, 0xAB9423A7);
    		b = ii(b, c, d, a, x[i+ 5], 21, 0xFC93A039);
    		a = ii(a, b, c, d, x[i+12], 6 , 0x655B59C3);
    		d = ii(d, a, b, c, x[i+ 3], 10, 0x8F0CCC92);
    		c = ii(c, d, a, b, x[i+10], 15, 0xFFEFF47D);
    		b = ii(b, c, d, a, x[i+ 1], 21, 0x85845DD1);
    		a = ii(a, b, c, d, x[i+ 8], 6 , 0x6FA87E4F);
    		d = ii(d, a, b, c, x[i+15], 10, 0xFE2CE6E0);
    		c = ii(c, d, a, b, x[i+ 6], 15, 0xA3014314);
    		b = ii(b, c, d, a, x[i+13], 21, 0x4E0811A1);
    		a = ii(a, b, c, d, x[i+ 4], 6 , 0xF7537E82);
    		d = ii(d, a, b, c, x[i+11], 10, 0xBD3AF235);
    		c = ii(c, d, a, b, x[i+ 2], 15, 0x2AD7D2BB);
    		b = ii(b, c, d, a, x[i+ 9], 21, 0xEB86D391);

    		a = add(a, olda);
    		b = add(b, oldb);
    		c = add(c, oldc);
    		d = add(d, oldd);
  		}

  		return rhex(a) + rhex(b) + rhex(c) + rhex(d);
	}

	function passwordMD5(str)
	{
		var MDstring = calcMD5(str);

		return MDstring;
	}

	function LoginClick(hiddenPassword, loginPassword)
	{
		var passwordStr = passwordMD5(loginPassword.value);

		hiddenPassword.value = passwordStr;
		loginPassword.value = "ZyXEL ZyWALL Series";
		return; //Was passiert hier? "return"?
	}

// -->
</script>
```
Der anfang ist nicht so wichtig, hier wird es einfach mit MD5 verschlüsselt, jedoch sind die zwei letzten functions wichtig:
LoginClick, dies wird ausgeführt wenn man auf LogIn Klickt, und zwar lautet dieses PHP-form so:

```
<form method="post" action="/Forms/rpAuth_1" onsubmit="LoginClick(document.forms[0].hiddenPassword, document.forms[0].LoginPassword);">  

&</p> //onSubmit: Es wird LoginClick ausgeführt

  

&</p>
  <table valign="middle" name="Authentication" align="center" bgcolor="#c4d3fd" border="0" cellpadding="0" cellspacing="0" height="180" width="420">
    <tbody><tr align="center"> 
      <td colspan="4" class="Auth" height="40">Prestige 660HW-61</td></tr><tr> 
      <td class="Auth" height="50">&</td><td colspan="2" class="AuthDesc" height="50"><div align="center">
        Enter Password and click Login.</div></td><td class="Auth" height="50">&</td></tr><tr> 
      <td class="Auth" height="40" width="40">&  </td><td class="Auth" height="40" width="84">Password:</td><td class="Auth" height="40" width="274">

<input name="LoginPassword" size="30" maxlength="30" value="1234" type="password">  //eingegebenes Passwort

<input name="hiddenPassword" value="" type="hidden"></td><td class="Auth" height="40" //Passwort mit MD5 verschlüsselt

width="10">&</td></tr><tr> 
      <td colspan="4" align="center" height="40"> <input name="Prestige_Login" value="Login" type="submit">& &<input name="Cancel" value="Cancel" type="reset"></td></tr><tr> 
      <td colspan="2" align="center" height="10">&</td></tr></tbody></table></form>
```
Kann mir jemand helfen?


----------



## KSG9|sebastian (14. Apr 2005)

1. Java != JavaScript
2. Du bist dir ganz sicher dass das ganze mit PHP gemacht wird? Deine ersten Scripts sind alles JavaScripts, und das:



> action="/Forms/rpAuth_1"



weißt eher auf ein Java Servlet als auf ein PHP-Skript hin.

3. was willst du jetzt genau wissen? Wie dein altes Passwort lautet? Das steht in dem JavaScript sicherlich nicht drin sondern in den RouterConfigs oder sonstwo! Aber sicher NICHT im JavaScript


----------



## Bleiglanz (14. Apr 2005)

nein

das passwort wurde md5 verschlüsselt, kann "praktisch" nicht rekonstruiert werden!


----------



## invulnerabilis (14. Apr 2005)

@KSG9|plak
Schon klar ist alles Java, ausser das Form, das was auf der Website ist, ist php, es steht ja auch, dass es ein PHP-Form ist.
@Bleiglanz:
Mir ist klar dass das Passwort in MD5 vorliegt, die Frage ist nur, wo fragt dieses Skript ab, ob das eingegebene Passwort=RouterPasswort ist.
Diese Stelle suche ich.


----------



## stev.glasow (14. Apr 2005)

Mit dem richtigen Tool guter WordLliste und einfachem Passwort soll das recht fix gehen. Mit dem Tool CAIN zum Beispiel. 
Habs nie gemacht aber mein Kollege - das aktuelle Password für meinen Forum Acount hat er zwar nicht damit rausbekommen, aber ein Password wie "glasow" hat CAIN ruck zuck raus.
Und an die Trollos die jetzt los legen meinen Account zu knacken, das PW ist 12 Zeichen lang und enthält sowohl Zahlen und Buchstaben(klein und gross) als auch Sondernzeichen.


----------



## stev.glasow (14. Apr 2005)

@invulnerabilis du holst dir den hash von dem genrierten passwort und vergleichst ihn mit dem hash deines router passwortes.
Das machst du solange bis du tot bist oder die beiden hashs den gleichen wert haben, wenn das der fall ist hast du das passwort raus, aber vorsicht das kann bei guten passwörtern ewig dauern.


----------



## Bleiglanz (14. Apr 2005)

das skript ist doch uninteressant, der md5hash liegt bestimmt irgendwo "fest" im router...


----------



## stev.glasow (14. Apr 2005)

Ich würd auch die Finger davon lassen die zu vergleichenden hashs selber zu generieren - der übliche Weg, sprich
aaaa
aaab
aaac
usw
dauert 200 Jahre. Diese Passwortknacker wie cain arbeiten mit irgendwelchen riesigen Hashtabellen, k.A. wie das genau funktioniert.
aber besorg dir lieber den hashwert und ein gutes Tool  
Oder Installier gleich alles neu, macht doch eh viel mehr Spass


----------



## invulnerabilis (14. Apr 2005)

Mir ist schon klar dass ich den HashWert brauche, nur wo steht dieser?
es ist ein Zyxel Adsl Router.


----------



## invulnerabilis (15. Apr 2005)

bzw, wo ist der im router gespeichert?


----------



## Destiny1985 (15. Apr 2005)

Mal aus reinem Interesse .. wie funktioniert das mit diesem CAIN...

Wollte gestern mal aus Fun versuchen mein eigenes PW hier im Forum zu knacken, aber komme null mit dem Proggie klar  Wie soll sowas gehen ? Kann ja mal wer PM schicken oder das offen hier erläutern.

mfg Dest


----------



## stev.glasow (15. Apr 2005)

son forum passwort zu knacken funktioniert etwas anderes, du hast ja keinen haswert den du vergleichen kannst, als ich das mit ihm getestet habe habe ich ihm den hashwert meinen passwortes mitgegeben.

Und Fingerweg vom Forum, wenn ich hier 1 000 000 oder mehr zugriffe sehe gibt's ne Anzeige, versprochen.


----------



## Destiny1985 (15. Apr 2005)

Wie funzt es denn  *neugier*

hack the planet  ach was, ich tu dem Forum nichts, udn auch keinem anderen...bin doch nur neugierig... und wenn dann höre ich 980.000 Versuchen auf


----------



## stev.glasow (15. Apr 2005)

Na du versuchst dich 980.000 mal einzuloggen.


----------

