Server Logon Challenge

From ArcEmu-Wiki
Jump to: navigation, search
uint8   cmd;
uint8   error;
uint8   unk2;
uint8   B[32];
uint8   g_len;
uint8   g;
uint8   N_len;
uint8   N[32];
uint8   s[32];
uint8   unk3[16];
uint8   unk4;


serverauthchallenge0u0nn.jpg


Contents

Description

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.

Fields

cmd

Cmd is the command/operation code of the packet. Always 0 for this message.

error

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


unk2

Unknown, always 0 in Arcemu

B

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

NOTE:

v is the SRP6 Verification value.

b is the SRP6 Server secret value.

N is a safe-prime.

s is the salt, a random value.

I is the Identity ( username ).

P is the Password.


NOTE:

N in Arcemu is statically set as 894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7 serverside.

g in Arcemu is statically set as 7.

k in Arcemu is statically set as 3.


g_len

Length of the SRP6 g value we send the client in bytes. Always 1 in Arcemu.

g

The SRP6 g value we send the client. Always 7 in Arcemu.

N_len

Lenght of the SRP6 N value we send the client. Always 32 in Arcemu.

N

The SRP6 N value we send the client. Always 894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7 in Arcemu.

s

The SRP6 s value.

unk3

Unknown. Arcemu sends a randomly generated 16 byte value.

unk4

Unknown. Arcemu sends a single byte 0.

Personal tools