PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Passwort zusammensetzung


Hotstepper13
23.05.2004, 01:14
Hallo zusammen,

ich arbeite nach wie vor an meinem Single Site Login und bin auch schon ein ganzes Stück weiter.

Der Login funktioniert reibungslos doch nun möchte ich eine weitergehende Prüfung der Userdaten vornehmen.

Ich möchte auf der Seite die Userid und das Passwort mit den in der Datenbank gespeicherten Werten vergleichen und scheitere an der Zusammensetzung des Passwortes.

In der Login PHP habe ich das ganze so verstanden das das bereits md5 verschlüsselte Passwort um den Inhalt des Feldes SALT ergänzt wird um dann nochmal mit MD5 verschlüsselt zu werden.

Ich habe das ganze dann auch so nachgebaut, bekomme aber vollkommen unterschiedliche Werte.

Wie wird das Passwort das in der DB steht zusammengesetzt damit ich es per SQL abfragen kann ?

*EDIT*
Vergesst das erstmal, so wie es aussieht habe ich einen fehler in der Verschlüsselung.

*EDIT2*
Ich hab gerade nichmal getestet und die Verschlüsselung funkt einwandfrei. Also setze ich wohl doch den String falsch zusammen der dann Verschlüsselt wird. Hilfääää...

Hotstepper13
24.05.2004, 21:06
*schieb*

Hilfäääääää....

Mystics
24.05.2004, 21:24
In der Login PHP habe ich das ganze so verstanden das das bereits md5 verschlüsselte Passwort um den Inhalt des Feldes SALT ergänzt wird um dann nochmal mit MD5 verschlüsselt zu werden.
Richtig, genauso wird es gemacht.

Also user.password = md5(md5($password) . $bbuserinfo['salt']). Warum das bei dir nicht übereinstimmt, kann ich nicht sagen.

Hotstepper13
24.05.2004, 21:43
Richtig, genauso wird es gemacht.

Also user.password = md5(md5($password) . $bbuserinfo['salt']). Warum das bei dir nicht übereinstimmt, kann ich nicht sagen.


*Hmpf*

ich habe mir gerade noch ne kleine Testseite geschrieben die einen übergebenen String mit MD5 verschlüsselt und ausliest.

Mein Schlüssel ist 8"G und mein verschlüsseltes Passwort in diesem Fall 22f118f1256678d0a44d663c8bb9a72a.

Also ist der gesamte String 22f118f1256678d0a44d663c8bb9a72a8"G.

Dabei sollte dann 4db54cffe3b76391088bd0b3e8263687 rauskommen.

Wenn ich den Kram nun bei mir eingebe bekomme ich aber e7024b6751088c59c9ed095e18e921bc.

Hier mal der Code zu meinem Testscript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form name="test" action="./testhost.php" METHOD="POST">
<input type="text" name="sec"><BR>
<input type="submit">
</form>

<?php
if($sec)
{
$getit = md5($sec);
echo $getit;
} ?>

</body>
</html>


Das script läuft hier: http://www.gunarena.de/testhost.php

Ist md5 irgendwie noch unterschiedlich im Bezug auf die PHP version ?

EDIT: Über mein JSP Script bekomm ich sogar noch nen anderen Wert...

Mystics
24.05.2004, 21:57
Ich bekomme mit diesem Skript genau den gleichen Hash raus, der bei meinem Testboard als password gespeichert ist:<?php
$pass = 'admin';
$salt = 'Uz9';
echo md5(md5($pass) . $salt);
?>
Benutzername: admin
Passwort: admin
user.salt = Uz9
user.password = e89c5653411c08dfd1ba95b0d792e679

Mein Skript liefert mir den mit user.password identischen Wert. Mit der PHP-Version hat dies zwar nichts zu tun, aber testest du dein Skript nicht auf dem Server, auf dem auch dein Forum läuft?

Für die MD5-Verschlüsselung in Java verwendet vBulletin clientscript/vbulletin_md5.js.

Bei md5('22f118f1256678d0a44d663c8bb9a72a8"G') kommt übrigens 9b3022344281e07e0e27b7bdbfde960b raus....ich schätze mal, du hast einen Fehler wegen dem Anführungszeichen in deinem salt....also wahrscheinlich falsch escaped.

Hotstepper13
24.05.2004, 22:07
*Räusper* Ich benutze Java, nicht JavaScript.

Das PHP Testscript liegt auf dem gleichen Server wie das Forum. Ich hab zwar noch eine Entwicklungsumgebnug bei mir zu hause doch da läuft das Testscript nicht.

Ich werde nochmal die Daten hart eincodieren und dann mal schauen.

Ich habe das " nicht escaped da ich nicht weiss ob der Escape-Char dann mit eingeschlüsselt wird oder nicht. (ich hasse Zeichensätze und Kryptographie)

Hotstepper13
24.05.2004, 22:17
*Räusper* Ich benutze Java, nicht JavaScript.

Das PHP Testscript liegt auf dem gleichen Server wie das Forum. Ich hab zwar noch eine Entwicklungsumgebnug bei mir zu hause doch da läuft das Testscript nicht.

Ich werde nochmal die Daten hart eincodieren und dann mal schauen.

Ich habe das " nicht escaped da ich nicht weiss ob der Escape-Char dann mit eingeschlüsselt wird oder nicht. (ich hasse Zeichensätze und Kryptographie)

Ok, das Script rechnet nun richtig, dann muss ich wohl wirklich mal schauen wegen dem escapen :(

danke schonmal für die Hilfe.

Hotstepper13
30.05.2004, 22:52
Sooo.. neuer Sachstand.. ich habe das nunmal auf dem Server getestet und damit verifziert das der Algorythmus shconmal richtig ist.

Nu habe ich noch das Problem mit dem String im Cookie.
Wenn ich mein Passwort umrechne müsste es
303ae67cc4c4b17928234d7adfa83fed
lauten.
Im Cookie steht aber
d1894975c9b9874b81d22278b323b4c2

Also wird doch da noch irgendwas mit dem Passwort bzw. dem String im dem Cookie angestellt bevor das ganze dann mit dem SALT String versehen wird und dann nochmal encryptet wird ?!

Weiss da jemand mehr drüber ?

Mystics
30.05.2004, 23:24
Siehe login.php. Dem Passwort wird die Lizenznummer angehängt und dann nochmal md5() verschlüsselt.

vbsetcookie('password', md5($bbuserinfo['password'] . 'xxxxxxxx'));

Hotstepper13
31.05.2004, 11:34
Siehe login.php. Dem Passwort wird die Lizenznummer angehängt und dann nochmal md5() verschlüsselt.

vbsetcookie('password', md5($bbuserinfo['password'] . 'xxxxxxxx'));

Hmm.. jo die passage hatte ich auch schon gefunden, wusste aber nicht das das die Lizenznummer ist die da angehängt wird :)

Wird das passwort nicht mehr überprüft wenn ich das Forum besuche ?
Ich dachte bisher das bei jedem Seitenaufruf der Benutzername und das Passwort noch mit den daten in der DB verglichen werden.

Die Geschichte mit dem verschlüsseln funkt aber nur wenn ich das Passwort ohne den Lizenzkey verschlüssele. Wofür wird dann das Passwort im Cookie benutzt ?

Mystics
31.05.2004, 15:00
Wird das passwort nicht mehr überprüft wenn ich das Forum besuche ?
Doch, natürlich.

sessions.php: if (!empty($_COOKIE[COOKIE_PREFIX . 'userid']) AND !empty($_COOKIE[COOKIE_PREFIX . 'password']))
{
$useroptions = 0 + iif(defined('IN_CONTROL_PANEL'), 16, 0) + iif(defined('AVATAR_ON_NAVBAR'), 2, 0);
$bbuserinfo = fetch_userinfo($_COOKIE[COOKIE_PREFIX . 'userid'], $useroptions);
if (md5($bbuserinfo['password'] . 'xxxxxxxx') == $_COOKIE[COOKIE_PREFIX . 'password'])

h75
08.08.2004, 18:51
Also könntet ihr an einem Cookie theoretisch rausfinden, ob das Board ne echte Lizenz hat? Wenn die Lizenz-Nr da mit einfliesst? :confused:
Wenn ja dann finde ich das Saugeil. Noch ein Grund mehr, jedes Jahr zu aktualisieren. :cool:

Mystics
08.08.2004, 19:30
Also könntet ihr an einem Cookie theoretisch rausfinden, ob das Board ne echte Lizenz hat? Wenn die Lizenz-Nr da mit einfliesst? :confused:
Wenn ja dann finde ich das Saugeil. Noch ein Grund mehr, jedes Jahr zu aktualisieren. :cool:
Auch wenn das jetzt einige erschüttert, aber auch wir können keinen MD5 Hash knacken ;)

h75
08.08.2004, 19:41
Achso klar. soweit hätte ich ja auch mal denken können. Naja irgendwann wird es wohl jemandem gelingen, den zu knacken. Aber bis dahin gibts bestimmt wieder was neues. Md10 oder so :)
Aber gut. Sicher ist Sicher!