Hello, I was wondering if anyone here could explain to me the steps in networking that happens before the player logs in. For example is the protocol SRP-6 or SRP-6a, does it use the RC4 algorithm, what's the proper way to generate the fields used in the process, etc. Afterwards, once i figure this all out, I"ll publicly document it for all to learn from, and use.
Here's what I have for the first packet sent by the client(3.3.5):
Code:
uint8 cmd;
uint8 err;
uint16 remainingBytes;//Little endian
char[4] gameName;
//The following 3 bytes are the client version. (ie ver1.ver2.ver3 == 3.3.5)
uint8 ver1;
uint8 ver2;
uint8 ver3;
uint16 build;//Little endian
//The following char[]'s are reversed(ie 68x == x86, niW == Win, SUne == enUS)
char[4] processor;
char[4] os;
char[4] region;
//The following field is the GMT representation of the client's timezone.(ie -480 / 60 == -8, which is where I'm from, PST)
uint32 timezoneGMT;//Little endian
//To calculate the string representation of the ip, take the following field:
//(connectingIP >> 24).(connectingIP >> 16).(connectingIP >> 8).connectingIP
//ie. 127.0.0.1
uint32 connectingIP;//Big endian
uint8 nameLength;
char[nameLength] username;
Maybe that might help some people.