Kurz vor der Lösung (MD5)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    Ja ich bin kurz vor der lösung wir haben nun mal ein print gemacht um zu sehen was genau
    rauskommt bei der ganzen sache. Wir konnten feststellen das wenn man das pw eingibt der hash
    rauskommt dies sollte funktionieren das problem liegt an der auslesung. Es zeigt einen 0 Wert in der
    Log an. Ich denke wir sind nun dem Fehler auf den Versehn nun brauch ich eure Hilfe da ich nicht der
    MySQL Profi bin.


    new val2[256];
    format(val2,sizeof(val2),MD5_Hash(inputtext));
    format(string,sizeof(string),"SELECT `Key` FROM `users` WHERE `Name` = '%s' AND `Key` = '%s'",sendername,pKey);
    mysql_query(string);
    mysql_store_result();
    print(val2);
    print(inputtext);
    if(!strcmp(string, val2, true))
    {
    if(NotJoin == 1)
    {
    format(string, sizeof(string), "Du musst warten bis dein Logout Pickup weg ist. {0087FF}(%d Sekunden)", OffPickup[StepID][OffZeit]);
    ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", string,"Login","Abbruch");
    return 1;
    }
    //strmid(PlayerInfo[playerid][pKey], MD5_Hash(inputtext), 0, strlen(inputtext), 255);
    OnPlayerLogin(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
    return 1;
    }
    else
    {
    //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
    ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", "Das eingegebene Passwort ist Falsch, bitte versuche es erneut.","Login","Abbruch");
    return 1;
    }



    - Bitte um eure Hilfe
    JasoN

  • Warum nicht die built-in MySQL Funktionen dafür nutzen?
    format(string,sizeof(string),"SELECT xyz FROM users WHERE Name = '%s' AND Key = MD5('%s')", sendername, inputtext);
    Wenn kein (= leeres) Ergebnis -> Passwort falsch

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • So hatten wir das voher
    printf("Spieler loggt sich ein: %s",sendername);
    format(string, sizeof(string),"SELECT * FROM `users` WHERE `Name` = '%s'", sendername); // ggf kann man hier auch nur das Passwort selektieren
    print(string);
    mysql_query(string);
    mysql_store_result();
    new val[256];
    while(mysql_fetch_row_format(string))
    {
    self_mysql_get_field("Key", val);
    }
    printf("strcmp | %s",strcmp(val,MD5_Hash(inputtext),true));
    if(strcmp(val,MD5_Hash(inputtext),true) == 0)
    {
    if(NotJoin == 1)
    {
    format(string, sizeof(string), "Du musst warten bis dein Logout Pickup weg ist. {0087FF}(%d Sekunden)", OffPickup[StepID][OffZeit]);
    ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", string,"Login","Abbruch");
    return 1;
    }
    //strmid(PlayerInfo[playerid][pKey], MD5_Hash(inputtext), 0, strlen(inputtext), 255);
    OnPlayerLogin(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
    return 1;
    }
    else
    {
    //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
    ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", "Das eingegebene Passwort ist Falsch, bitte versuche es erneut.","Login","Abbruch");
    return 1;
    }

  • Nun haben wir Folgendes Problem:
    Das Registrieren Funktioniert nicht. Könnte uns jemand eventuell helfen, wir wollen machen das man beim Registrieren das Passwort MD5 hasht & dann in die datenbank unter users in die spalte key reinschreibt.
    else if(dialogid == Register)
    {
    if(response == 0)
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast den Vorgang abgebrochen und wurdest automatisch gekickt.");
    TogglePlayerControllable(playerid, 0);
    Kick(playerid);
    }
    if(response == 1)
    {
    if(!strlen(inputtext) || strlen(inputtext) < 7 || strlen(inputtext) > 32)
    {
    ShowPlayerDialog(playerid, Register, DIALOG_STYLE_PASSWORD, "Registrieren", "Dein Passwort muss mindestens 6 und maximal 15 Bustaben haben\nUnd darf nur auch Bustaben von A-Z und Zahlen von 0-9 Bestehen.", "Registrieren", "Abbruch");
    return 1;
    }
    new ForbiddenCharactersExist = 0;
    for(new ac = 0; ac < sizeof(ForbiddenCharacters); ac++)
    {
    if(strfind(inputtext, ForbiddenCharacters[ac], true) != -1)
    {
    ForbiddenCharactersExist = 1;
    break;
    }
    }
    if(strlen(inputtext) > 32 || ForbiddenCharactersExist == 1)
    {
    ShowPlayerDialog(playerid, Register, DIALOG_STYLE_PASSWORD, "Registrieren", "Dein Passwort muss mindestens 7 und maximal 32 Bustaben haben\nUnd darf nur auch Bustaben von A-Z und Zahlen von 0-9 Bestehen.", "Registrieren", "Abbruch");
    return SendClientMessage(playerid, COLOR_ERRORTEXT, " Dein Passwort darf maximal 10 Zeichen haben und darf nur aus A-Z bzw. a-z und 1-9 inkl. 0 bestehen !");
    }
    new tmppass[64];
    strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
    //Encrypt(tmppass);
    OnPlayerRegister(playerid, MD5_Hash(tmppass));
    //SendClientMessage(playerid, COLOR_YELLOW, "Du hast dich erfolgreich registriert, Bitte logge dich ein '/login [Passwort]'!");
    ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", "Bitte logge dich ein indem du dein Passwort unten eingibst.", "Login", "Abbruch");
    }
    return 1;
    }
    public OnPlayerRegister(playerid, password[])
    {
    StuffInfo[sNeuUser] += 1;
    if(IsPlayerConnected(playerid))
    {
    new string[128],
    playername[MAX_PLAYER_NAME];


    GetPlayerName(playerid, playername, sizeof(playername));


    format(string, sizeof(string), "%s", password);
    strmid(PlayerInfo[playerid][pKey], MD5_Hash(string), 0, strlen(string), 255);
    //PlayerInfo[playerid][pCash] = PlayerInfo[playerid][pCash];
    //#if defined MySQLSpeicherung
    format(string, sizeof(string), "INSERT INTO `users` (`Name`, `Key`) VALUES ('%s', '%s')", playername, PlayerInfo[playerid][pKey]);
    self_mysql_query(string);
    format(string, sizeof(string), "UPDATE `users` SET `RegisterDatum`='%d' WHERE `Name`='%s'", Time(), playername);
    self_mysql_query(string);
    PlayerUpdate(playerid);
    //PlayerCarUpdate(playerid);
    ps: das Login system Funtzt nun

  • Um euch mal kurz auf was anderes hinzuweisen, falls ihr die Script-Zeile von dead benutzt:


    Ich habe es jetzt öfter probiert und mir ist bei der MD5 Include folgendes aufgefallen:


    Der Hash ist vollständig in Kleinbuchstaben bei der Include.
    Bei der md5()-Funktion von PHP / MySQL ist aber alles in Großbuchstaben!


    Von daher.. :<