| Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a. |
Diskussion: Javascript Passwortabfrage mit MD5 knacken? im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige Hallo - ich habe hier eine Passwortabfrage, allerdings keine Ahnung ob bzw. wie ich hier draus das Passwort lesen ...
![]() |
| | #1 (permalink) |
| Registriert seit: 11.03.08 ![]() Likes: 0 | Anzeige Hallo - ich habe hier eine Passwortabfrage, allerdings keine Ahnung ob bzw. wie ich hier draus das Passwort lesen kann. Es wäre nett, wenn mir jemand behilflich sein könnte. # <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; } var interval = 60 ; //sec setInterval("window.location.reload();", interval * 1000); // --> </SCRIPT> # |
| | |
| | #2 (permalink) |
| Registriert seit: 03.03.08 ![]() Likes: 0 | Ich kann kein JavaScript, aber das sieht so aus, als ob nur eine Eingabe verschlüsselt wird und dann vermute ich mal blind, dass man so nicht direkt an das PW kommt. Aber das soll vielleicht noch jmd kommentieren, der den Code besser versteht als ich. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Registriert seit: 02.06.07 ![]() Likes: 2 | Wäre noch ganz interessant die HTML-Datei zu sehen in der das Script steht... Darf ich fragen wo das herkommt? Ansonsten stimm ich Knoxx zu, der nimmt die Eingabe, verschlüsselt die (berechnet den MD5 Hash, wenn man den function Namen trauen kann) und speichert das Ergebniss in einem versteckten Feld auf der Seite. -->ab jetzt reine Vermutung aus Dummheit/Unerfahrenheit ?( Der Wert der dann in dem hiddenPassword Feld steht wird mit einem gespeicherten MD5-Hash verglichen. Wenn du den hättest könntest du evtl. eine Eingabe zurückrechnen die denselben Wert ergibt wenn sie durch das Javascript gedreht wird und damit den Login machen. Aber eigentlich kann man den vorigen Absatz getrost in Frageform umwandeln ![]() Ist das so wie ich mir das denke? |
| | |
| | #4 (permalink) |
| Registriert seit: 17.02.06 ![]() Likes: 0 | Geht's um sowas? http://secunia.com/product/147/?task=advisories Ansonsten: MD5 wird zwar des öfteren als "gebrochen" bezeichnet. Aber das bezieht sich nur auf sehr spezielle Spezialfälle, wo man einen Klartext hat und den zu zwei geringfügig (in genau einem Block) unterschiedlichen Varianten erweitern möchte, die denselben MD5 erzeugen. - WENN ich das richtig verstanden habe (ich bin leider kein Mathematiker)... Den besten Kommentar dazu (verständlich formuliert ohne höhere Mathematik) hat Elderan hier im HaBo geschrieben (Mathe-Studenten und -Profs sollten sich an seiner Ausdrucksweise ein Beispiel nehmen!): MD5 entgueltig gebrochen |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Passwortabfrage | Lemon | (Web-) Design und webbasierte Sprachen | 6 | 06.05.08 23:02 |
| Javascript - Passwortabfrage | Machine | Code Kitchen | 5 | 05.09.07 10:41 |
| Windows XP - Passwortabfrage | Shunmai | Die Problemzone | 4 | 05.05.07 14:05 |
| Passwortabfrage in C++ | reaLInsanity | Code Kitchen | 29 | 11.01.06 16:30 |
| unbekannte Passwortabfrage | Reboot | Windows | 17 | 08.02.05 15:18 |