DO Join Request Message - zeroKilo/GROBackendWV GitHub Wiki

DO Join Request Message

Type Name
uint8 doMsgType (0)
ProcessAuthentication pAuth
StationIdentification sInfo

Quazal::ProcessAuthentication

Type Name Example value
uint8 structVersion 2
uint8 libraryProtoVersion 2
uint8 unknown 10
uint32 quazalMajorVersion 0x10004
uint32 quazalMinorVersion 0x1CA2B
uint32 titleChecksum 0x6BD
uint32 protocolFlags 0

Quazal::StationIdentification

Type Name
string m_strIdentificationToken
string m_strProcessName
uint32 m_uiProcessType
uint32 m_uiProductVersion

Title Checksum Algorithm

The checksum is simply the sum of all ascii chars in the game title; for example:

  1. String of game title: Ghost.Recon.Online
  2. Hex bytes of string: 47 68 6F 73 74 2E 52 65 63 6F 6E 2E 4F 6E 6C 69 6E 65
  3. Sum: 0x6BD

Example Message

13.05.2020 22:07:20 : [05][UDP Dedicated Server] received : UDPPacket { DATA ( R WS )}
13.05.2020 22:07:20 : [10][UDP Dedicated Server] received : 11 11 72 25 78 56 34 12 03 00 00 21 00 02 78 9C 53 62 00 02 26 26 2E 16 06 46 06 ED 53 8C 0C 7B D9 18 C0 80 11 8C 60 E0 23 00 33 65 02 E2 A6 
13.05.2020 22:07:20 : [10][UDP Dedicated Server] received : UDPPacket {
	From         : VPort[port=01 type=DO]
	To           : VPort[port=01 type=DO]
	Flags        : [FLAG_RELIABLE][FLAG_NEED_ACK][FLAG_HAS_SIZE]
	Type         : DATA
	Session ID   : 0x25
	Signature    : 0x12345678
	Sequence ID  : 0x0003
	Part Number  : 0x00
	Payload Size : 0x0027
	PayLoad      : 22 00 00 00 00 02 02 0A 04 00 01 00 2B CA 01 00 BD 06 00 00 00 00 00 00 01 00 00 01 00 00 00 00 00 00 00 00 00 00 F1 
	Checksum     : 0xA6
}

BYTE  00 		// DO method = JoinRequest
//Quazal::ProcessAuthentication
BYTE  02 		// Structure Version
BYTE  02 		// Library Protocol
BYTE  0A 		// unknown, should be 0xA
DWORD 04 00 01 00	// Quazal Major Version
DWORD 2B CA 01 00	// Quazal Minor Version
DWORD BD 06 00 00	// Title Checksum
DWORD 00 00 00 00	// Protocol Flags
//Quazal::StationIdentification
DWORD 01 00 00		// m_strIdentificationToken
DWORD 01 00 00		// m_strProcessName
DWORD 00 00 00 00	// m_uiProcessType
DWORD 00 00 00 00	// m_uiProductVersion