Seite 1 von 2

phpbb3 RC7 password hash

Verfasst: 16.10.2007 15:29
von EvilMoe
Hi ich habe auf meiner Hauptseite ein Loginformular das ich mit der DB von phpbb überprüft habe aber nun hat sich ab der RC6 der hash geändert und vom sehen her ist der mir nicht bekannt, md5 sha oder so.

Wie kann ich diesen hash erstellen welche funktion(nen) brauche ich dafür?

Verfasst: 16.10.2007 16:13
von gn#36
Ich würde an deiner Stelle statt des "echten" Logins einen Login mit Redirect einsetzen. Das hat den klaren Vorteil, dass du dir um Sicherheitsupdates keine großen Sorgen machen musst.

Du schickst die Daten (username, password, ggf. autologin und viewonline) einfach statt an dein eigenes Formular an ucp.php?mode=login und übergibst in Versteckten Feldern sid und redirect, wobei du in redirect den relativen Pfad zur gewünschten Datei einträgst.

Verfasst: 16.10.2007 18:13
von EvilMoe
Ich möchte schon gerne mein eigenes Login verwenden.. ich glaube kaum das ihr nochmal den hash ändern werdet..

Verfasst: 16.10.2007 18:31
von gn#36
Dann schau doch einfach in der includes/auth/auth_db.php in der Funktion login_db() nach wie das gemacht wird.

Du könntest auch in der Funktion phpbb_hash in der includes/functions.php schauen ;)

Verfasst: 16.10.2007 19:53
von EvilMoe
gn#36 hat geschrieben: Du könntest auch in der Funktion phpbb_hash in der includes/functions.php schauen ;)
Die Funktion gibts da nicht bei mir..

Ich finde zwar in auth zwar die Zeilen aber ich verstehe das nicht ich finde da keine Funktion die den neues Hash erstellt

Verfasst: 16.10.2007 20:18
von gn#36
Version meiner Datei:

Code: Alles auswählen

@version $Id: functions.php,v 1.640 2007/10/09 21:04:21 kellanved Exp $
ist also schon ein paar Tage her dass die geändert wurde.

Darin findet sich eine Funktion phpbb_hash($password)

Code: Alles auswählen

/**
*
* @version Version 0.1 / $Id: functions.php,v 1.640 2007/10/09 21:04:21 kellanved Exp $
*
* Portable PHP password hashing framework.
*
* Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
* the public domain.
*
* There's absolutely no warranty.
*
* The homepage URL for this framework is:
*
*	http://www.openwall.com/phpass/
*
* Please be sure to update the Version line if you edit this file in any way.
* It is suggested that you leave the main version number intact, but indicate
* your project name (after the slash) and add your own revision information.
*
* Please do not change the "private" password hashing method implemented in
* here, thereby making your hashes incompatible.  However, if you must, please
* change the hash type identifier (the "$P$") to something different.
*
* Obviously, since this code is in the public domain, the above are not
* requirements (there can be none), but merely suggestions.
*
*
* Hash the password
*/
function phpbb_hash($password)
{
...
}
Dem ganzen folgt ein ganzer Block mit krypto-Funktionen.

Verfasst: 17.10.2007 06:34
von EvilMoe
Ja hab sie jetzt gefunden.. ich hab irgetnwie ein problem wenn ich die funktion anwende. Ich bekomme immer nen anderen hash..

Ich benutz die Funktionen auf den eingegebenen String ist das richtig ? Muss ich den vorher noch verändern?

Verfasst: 18.10.2007 18:37
von gn#36
Nur weil ich gesagt habe dass du dir das mal ansehen sollst wird der Rest nicht zwangsläufig ungültig...

Du solltest dir wirklich die Funktion in der auth_db.php ansehen. Hier wird u.a. berücksichtigt, dass die Passwörter noch nicht von allen Usern konvertiert werden konnten (das PW kann nur konvertiert werden, wenn man es kennt denn die Zurückrechnung von md5 auf das Passwort ist ja mit erheblichem Aufwand verbunden). Du gibst ihr einen Namen und ein Passwort und sie prüft ob der Login geklappt hat oder nicht. Die Funktion prüft im Prinzip nur das Passwort (und nebenbei konvertiert sie es bei Erfolg und liefert False wenn die Max. Loginversuche überschritten wurden ...), die Session wird hier nicht gestartet, das muss an anderer Stelle passieren.

Verfasst: 18.10.2007 22:37
von EvilMoe
Nun hab ich glaub ich...
Du hättest mir ruhig sagen können da sich die Funktion phpbb_hash garnicht brauche sondern phpbb_check_hash damit überprfüt man das Passwort obs stimmt

Habs nun so gemacht (alle was mit $data-> anfängt kommt aus der db mit mysql_fetch_object):

Code: Alles auswählen

if( strlen($data->user_password) == 32 && $data->user_password == md5($table_password) )
			{ 
				// alte login methode
				$dologin = true;
			}
			elseif(phpbb_check_hash($table_password, $data->user_password))
			{
				// neue login methode
				$dologin = true;
			}
			else 
			{ $dologin = false; }


Verfasst: 20.10.2007 10:32
von gn#36
Sorry. Ich hatte da nur kurz draufgeschaut und gesehen dass die Funktion verwendet wird. Als ich dann erst später nochmal drauf geschaut habe ist mir dann aufgefallen dass die Funktion für die Umwandlung verwendet wird :oops: