XIV Dev Wiki

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:

  • 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}**//

char[] ChecksumTable = {
'f', 'X', '1', 'p', 'G', 't', 'd', 'S',
'5', 'C', 'A', 'P', '4', '_', 'V', 'L'
char GetChecksum(uint key) {
// mask the nibble we're looking for
var value = key & 0x000F_0000;
return ChecksumTable[value >> 16];
Last modified 2yr ago
Export as PDF
Copy link
Edit on GitHub
On this page
Encoded Process Argument
Encoding Process