XIV Dev Wiki
Search…
Welcome
Community Projects
Game Data
Visual Effects
File Formats
Character Data Files
Data Files
ZiPatch
SqPack
Network
Packet Structure
Channels
Game Internals
Actions
World
RSV
RSF
SqexArg
Powered By
GitBook
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!
Game Internals - Previous
RSF
Last modified
1yr ago
Export as PDF
Copy link
Edit on GitHub
Contents
Encoded Process Argument
Encoding Process
Checksum