Server Logon Challenge
uint8 cmd; uint8 error; uint8 unk2; uint8 B; uint8 g_len; uint8 g; uint8 N_len; uint8 N; uint8 s; uint8 unk3; uint8 unk4;
This message is the response to the Client_Logon_Challenge message sent by the client, when initiating the logon process. This is the second step in the Logon_Process This messages gives the client some SRP6 values that were generated using the username the client sent and the password found in the server database.
Cmd is the command/operation code of the packet. Always 0 for this message.
Error is the code identifying the error that occured during processing the Client_Logon_Challenge message.
Possible error codes:
CE_SUCCESS = 0x00, CE_IPBAN= 0x01, //2bd -- unable to connect (some internal problem) CE_ACCOUNT_CLOSED = 0x03, // "This account has been closed and is no longer in service -- Please check the registered email address of this account for further information."; CE_NO_ACCOUNT= 0x04, //(5)The information you have entered is not valid. Please check the spelling of the account name and password. If you need help in retrieving a lost or stolen password and account CE_ACCOUNT_IN_USE = 0x06, //This account is already logged in. Please check the spelling and try again. CE_PREORDER_TIME_LIMIT= 0x07, CE_SERVER_FULL= 0x08, //Could not log in at this time. Please try again later. CE_WRONG_BUILD_NUMBER= 0x09, //Unable to validate game version. This may be caused by file corruption or the interference of another program. CE_UPDATE_CLIENT= 0x0a, CE_ACCOUNT_FREEZED= 0x0c
Unknown, always 0 in Arcemu
B is an SRP6 value. It is the server's public value.
Formulas for generating B is:
x = SHA1(s | SHA1(I | ":" | P)) v = g^x % N b = random() B = k*v + g^b % N
Length of the SRP6 g value we send the client in bytes. Always 1 in Arcemu.
The SRP6 g value we send the client. Always 7 in Arcemu.
Lenght of the SRP6 N value we send the client. Always 32 in Arcemu.
The SRP6 N value we send the client. Always 894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7 in Arcemu.
The SRP6 s value.
Unknown. Arcemu sends a randomly generated 16 byte value.
Unknown. Arcemu sends a single byte 0.