SO I'm looking at evo client source and seeing this (137 source)
- void CSendPACKET::Send_cli_JOIN_SERVER_REQ (DWORD dwLSVID, bool bWorldServer)
- {
- #ifdef __VIRTUAL_SERVER
- ;
- _ASSERT( 0 );
- ;
- #else
- m_pSendPacket->m_HEADER.m_wType = CLI_JOIN_SERVER_REQ;
- m_pSendPacket->m_HEADER.m_nSize = sizeof( cli_JOIN_SERVER_REQ );
- m_pSendPacket->m_cli_JOIN_SERVER_REQ.m_dwID = dwLSVID;
-
- #ifdef __AUTOLOGIN
- if( g_GameDATA.m_dwSeq && g_GameDATA.m_szSessionKey )
- ::CopyMemory( m_pSendPacket->m_cli_JOIN_SERVER_REQ.m_MD5Password, g_GameDATA.m_PasswordMD5, sizeof(BYTE)*32);
- else
- ::CopyMemory( m_pSendPacket->m_cli_JOIN_SERVER_REQ.m_MD5Password, m_pMD5Buff, sizeof(BYTE)*32);
- #else
- ::CopyMemory( m_pSendPacket->m_cli_JOIN_SERVER_REQ.m_MD5Password, m_pMD5Buff, sizeof(BYTE)*32);
- #endif
-
-
- #endif
-
- this->Send_PACKET( m_pSendPacket, bWorldServer );
- }
basically it's sending an 0X70B packet containing client id as a DWORD followed by password as an MD5 hash
It's not sending the character name at all in this code.
The charserver receives this packet in PakDoIdentify (From RoseZA evo client)
- bool CCharServer::pakDoIdentify( CCharClient* thisclient, CPacket* P )
- {
- if (thisclient->isLoggedIn) return false;
- MYSQL_RES *result;
- MYSQL_ROW row;
- thisclient->userid = GETDWORD((*P), 0x00);
- memcpy( thisclient->password, &P->Buffer[4], 32 );
-
- //LMA: checking is password is ok.
- if(!CheckEscapeMySQL(thisclient->password,33,true))
- {
- Log(MSG_WARNING,"A password contains incorrect caracters or is too long (see warnings above)");
- return false;
- }
-
- result = DB->QStore("SELECT username,lastsvr,accesslevel,platinum FROM accounts WHERE id=%i AND password='%s'", thisclient->userid, thisclient->password);
- if(result==NULL) return false;
- if (mysql_num_rows( result ) != 1)
- {
- Log( MSG_HACK, "Someone tried to connect to char server with an invalid account" );
- DB->QFree( );
- return false;
- }
- else
- {
- row = mysql_fetch_row(result);
- strncpy(thisclient->username, row[0],16);
- thisclient->channel = atoi(row[1]);
- thisclient->accesslevel = atoi(row[2]);
- thisclient->platinum = atoi(row[3]);
- DB->QFree( );
-
- if(!CheckEscapeMySQL(thisclient->username,-1,true))
- {
- Log(MSG_WARNING,"A username contains incorrect caracters (see warnings above)");
- return false;
- }
-
- }
This code is only reading in the client id and password
The character name is being loaded in from the database
It seems as if this code is already doing it the right way or am i missing something?
Need to lookup information on NARose items, skills, quests?
Now featuring a newly completed skill tree for all classesFormatting fixed for different resolutions"A Gazelle is nothing but a giraffe plotted logarithmicaly"