XIV Dev Wiki
Search…
SqexArg

Encoded Process Argument

Upon launching the game, the retail launcher passes handful of information (e.g. login token, client language, etc...) to the game that usually looks like this:
1
//**sqex0003VGhpcyBpcyBqdXN0IGZvciBleGFtcGxlIHB1cnBvc2U7IGl0IGFjdHVhbGx5IG5ldmVyIGxvb2sgbGlrZSB0aGlzA**//
Copied!

Encoding Process

  • Encrypt UTF-8 plain text using Blowfish; you need to pad the buffer with zero as needed
    • Key is GetTickCount() & 0xFFFF_0000
    • Block cipher mode of operation is ECB (yes, you read it right.)
  • Convert encrypted bytes to Base64URL
  • Format it as //**sqex0003{base64}{checksum}**//

Checksum

Pseudocode

1
char[] ChecksumTable = {
2
'f', 'X', '1', 'p', 'G', 't', 'd', 'S',
3
'5', 'C', 'A', 'P', '4', '_', 'V', 'L'
4
};
5
6
char GetChecksum(uint key) {
7
// mask the nibble we're looking for
8
var value = key & 0x000F_0000;
9
10
return ChecksumTable[value >> 16];
11
}
Copied!
Last modified 1yr ago