Skocz do zawartości

Porównywanie haseł


Rekomendowane odpowiedzi

Gość pziemczyk
Opublikowano

Przymierzam się wielkimi krokami do kupna licencji i będę chciał zintegrować serwer gry (GTA) z IPB. To znaczy konta w grze to konta z forum IPB. Gra nie jest pisana w PHP gdyż to nie jest grą na przeglądarkę. I ja mam pytanie, w jaki sposób IPB porównuje hasła czy są prawidłowe? Chcę przepisać funkcję porównywania haseł z PHP do PAWN.

  • Manager
Opublikowano

Generalnie to sprawdza, jak zwykle się to robi.. Fragmencik:

	/**
 * Check supplied password with database
 *
 * @access	public
 * @param	string		Key: either member_id or email
 * @param	string		MD5 of entered password
 * @return	boolean		Password is correct
 */
static public function authenticateMember( $member_key, $md5_once_password )
{
	/* Load member */
	$member = self::load( $member_key );

	if ( ! $member['member_id'] )
	{
		return FALSE;
	}

	if ( $member['members_pass_hash'] == self::generateCompiledPasshash( $member['members_pass_salt'], $md5_once_password ) )
	{
		return true;
	}
	else
	{
		return false;
	}
}

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Gość pziemczyk
Opublikowano

Da radę jakoś objaśnić mniejwięcej jak to wygląda w praktyce?

Bo rozumiem że to nie jest czyste MD5 tylko połączone z saltem.

Co to jest $member_key?

Opublikowano

jeżeli nie chcesz analizować w jaki sposób są kodowane hasła itd to możesz np. stworzyć plik do którego poprzez GET będzie przekazywany login i hasło a zwracał będzie 1/0 (true/false). wartość tą będziesz mógł pobrać socket'em.

a jeżeli tylko sql to trudno... czeka cię analiza kodu(danego przez DawPi'ego)

  • 1 rok później...
Opublikowano

Przepraszam, że tak się podepnę pod temat, ale nie orientuje się czy powinienem robić nowy.

Otóż, mam ten sam problem co kolega, jednakże mam już mikroskopijne rozwiązanie, ale nie mogę go wykorzystac. Tzn. gdy je wykorzystuje i tak nie mam żadnego rekordu pokazywanego w bazie danych:

format(query, sizeof(query), "SELECT * FROM serv_konta sk LEFT JOIN forum_members fm ON (fm.member_id=sk.pUID) WHERE sk.pNick='%s' AND fm.members_pass_hash=CONCAT(MD5(fm.members_pass_salt),'', MD5('%s'))", P[playerid][pNick], pass);

Teraz moje pytanie jest takie, jak za pomocą (nawet PHP) najprostszego algorytmu i znając salt stworzyć hash hasła wykorzystywanego w IPB?

  • Manager
Opublikowano

Teraz moje pytanie jest takie, jak za pomocą (nawet PHP) najprostszego algorytmu i znając salt stworzyć hash hasła wykorzystywanego w IPB?

Nie możesz tego wykonać. Hash jest generowany z hasła (w postaci jawnej). To tzw. szyfrowanie jednostronne. Nie ma opcji odwrócenia tej operacji.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano (edytowane)

Dziękuje za szybką odpowiedź!

Jednakże wiem, i tak napisałem, że chcę z HASŁA I SALTU wygenerować hash i porównać go z tym z bazy danych ;)

mój powyższy kod przepisany na php:


$blebleble = sprintf("SELECT * FROM serv_konta sk LEFT JOIN forum_members fm ON (fm.member_id=sk.pUID) WHERE sk.pNick='%s' AND fm.members_pass_hash=CONCAT(MD5(fm.members_pass_salt),'', MD5('%s'))", $NickGracza, $Haslo);

mysql_query($blebleble);

Edytowane przez Cirasean
Opublikowano

Widziałem to, ale jaki to jest dokładnie plik , lub gdzie znajdę funkcje self::generateCompiledPasshash ?

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.