-
This page aims to explain the current two cryptation algorithms known to be used by M2 for encrypting and decrypting network data.
Keys are reported as two 64-bit integers (first number, second number) in hexadecimal.
NOTE: The encryption will start after a Phase packet once the Handshake is finished, therefore both the first Phase packet and the Handshake packets are not encrypted.
XTEA Encryption
This encryption is divided in two phases, Auth Phase and Game Phase.
Every packet that uses this encryption gets encrypted and decrypted with the TEA algorithm and a TEA key.
This encryption was used starting from 2004 to 2011/2013. (Before revision 34k was introduced)
The encryption works by having two XTEA keys, the first one (Referred as Auth phase key) is a static 16 bytes key used in the first stage of the communication, this key will be used until a Client has attempted to log in into a Channel (any core that is not an Auth one) with the login key method. Once the client sends a Login packet to a channel, it will also send it's encryptation keys where the server's encryptation keys will be computed. The keys will be changed IMMEDIATLY, no extra packet or data is needed to change the keys. This generated second keys are referred as Game phase keys.
The client computes it's decryptation key (likewise, the server computes it's encryptation key) by performing an XTEA of the encryptation key (decryptation key for the server) with a Special key.
Key list
Auth phase keys (Both for encrypting and decrypting)
Usage
First number
Second number
Notes
Worldwide
0x7473657474736574
0x7473657474736574
ASCII: testtesttesttest
European servers
0x6867666538373635
0x6463626134333231
ASCII: 1234abcd5678efgh
Special keys
The Special key was generated by the Client and the Server during the login into the Game core, it is known that in very old version of M2 (such as the Korean 2003 beta) the following hardcoded key might be used rather than a random generated one.
Special keys
Usage
First number
Second number
Notes
Korean server
0x6a6c48747854794a
0x726f484a566c4a48
ASCII: JyTxtHljHJlVJHor
Diffie-Hellman key exchange
The improved packet cryptation is performed by choosing a suitable cipher based from the shared secret that is exchanged with Diffie-Hellman.
This encryption is used from 2011/2013 to today.
NOTE: The handshake phase is not encrypted.
Unified Diffie-Hellman key exchange
Initialize RFC 5114's 1024-bit MODP standarized parameters (p, g, q)
Randomly generate a Static and Ephemeral public and private keys with Unified Diffie-Hellman.
Pass the shared secret length and public keys to the network and perform an agreement with the received public keys and shared secret length.
Cipher choose
Takes the remained of the first byte in the shared secret block with the shared secret size. This number will determine where the first cipher number that is stored in the shared secret block.
Takes the remained of the second byte in the shared secret block with the shared secret size. This number will determine where the second cipher number that is stored in the shared secret block.
Takes the remained of this two bytes generated from the secret block with the max algorithms supported and pick an algorithm.
The shared secret block contain the algorithm's keys and a block data (a random block is being used because some algorithms do not support IV), that will be used to crypt the packets.
The selected cipher will be processed with CTR Mode and the generated IV
If the keys are generated by the server, the first cipher will be the encryptation cipher. the second will be the decryptation cipher. The keys are inverted in client side.
(The lengths are the default lengths assigned to the algorithm)
Appendix
Secret block content:
Start of shared data
first key
second key
non important data
second IV
first IV
End of shared data
List of known algorithms:
RC6
MARS
Twofish
Serpent
CAST256
IDEA
DES-EDE2 (Triple DES)
Camellia
SEED
RC5
Blowfish
TEA
SHACAL2
-
This page aims to explain how packets are handled in terms of structure and functionality
Properties
A packet has several data properties, them being game and networking information as:
Header - A byte that identifies the packet
Data - The data that is being sent/received
Sequence - A byte that signs if the packet is sequenced
On sending/receiving packets may be encrypted, check Network Encryption for more information
Structure
The packets have two different structures, constant and dynamic The goals of each type is predefined by the type of data handled
Note: The sequence byte is always the last byte in a packet, no matter the structure and its optional
Constant
The constant packet structure follows the expected order of data:
Structure
Type
Size (bytes)
Description
Header
1 Byte
The number identifier of the packet
Data
X Bytes
The expected constant data values
Sequence
1 Byte
The sequence value which defines if this packet is sequenced (optional)
Dynamic
The dynamic packet structure follows the expected order of data:
Structure
Type
Size (bytes)
Description
Header
1 Byte
The number identifier of the packet
Size
2 Bytes
The size of the entire packet, Header + Size + Data (excluding sequence)
Data
? Bytes
The expected dynamic data values
Sequence
1 Byte
The sequence value which defines if this packet is sequenced (optional)
Flow/Direction
The packets have different type denominations of directions regarding from who to who they are sent:
CG(Client Game) - Client to Server
GC(Game Client) - Server to Client
GG(Game Game) - Server to Server
GD(Game Database - Server to Database
DG(Database Game) - Database to Server
Note: The meaning of 'Server' in this case is a server core such authentication/game core and the meaning of 'Database' is the database core
Known Packets
Here is a list table of the known packets and its directions:
Client to Server
Client to Game - CG
Header Identification - Byte (Hex)
Description
Sequenced
Structure
1 (0x01)
Holds account credentials to perform a login
True
#CG Packet Login
2 (0x02)
Holds target, attack and cube information to perform several actions
True
#CG Packet Attack
3 (0x03)
Holds length and type of a chat string to perform a chat command
True
#CG Packet Chat
4 (0x04)
Holds information to create a new character
True
#CG Packet Player Create
5 (0x05)
Holds an index and a key to delete an existing character
True
#CG Packet Player Destroy
6 (0x06)
Holds an index to select an existing character
True
#CG Packet Player Select
7 (0x07)
Holds movement, positional and duration information to move the main character
True
#CG Packet Player Move
8 (0x08)
Holds identification and positional information of entities to perform synchronization
True
#CG Packet Sync Position
9 (0x09)
Holds account credentials and character index to perform a direct entrance in the game
True
#CG Packet Direct Enter
10 (0xA)
Signals the server to enter the game world
True
#CG Packet Enter Game
11 (0xB)
Holds inventory position to perform an item use
True
#CG Packet Item Use
12 (0xC)
Holds inventory position and Elk(game currency) to perform an item/elk drop in the game world
True
#CG Packet Item Drop
13 (0xD)
Holds source, target position and count to perform a item move inside the inventory
True
#CG Packet Item Move
15 (0xF)
Holds position of game world item to perform a pickup
True
#CG Packet Pickup
16 (0x10)
Holds position and quickslot information to perform a quickslot addition
True
#CG Packet Quickslot Add
17 (0x11)
Holds position to perform a quickslot removal
True
#CG Packet Quickslot Delete
18 (0x12)
Holds source and target position to perform a quickslot swap
True
#CG Packet Quickslot Swap
19 (0x13)
Holds a chat string to perform a whisper action
True
#CG Packet Whisper
20 (0x14)
Holds inventory position and Gold(game currency) to perform an item/gold drop in the game world
True
#CG Packet Item Drop 2
26 (0x1A)
Holds entity information to perform a click action
True
#CG Packet On Click
28 (0x1C)
Holds character position information (undefined reason)
True
#CG Packet Character Position
29 (0x1D)
Holds answer information for a script/quest
True
#CG Packet Script Answer
30 (0x1E)
Holds an input string for a quest response
True
#CG Packet Quest Input String
31 (0x1F)
Holds answer information for a quest confirmation
True
#CG Packet Quest Confirm
-
A list of the known Server to Client packets aka Game Client(GC
Structures
Here are the following packet content regarding the list:
GC Packet Character Add
Header: 1 (0x01) Type: Constant
Sequenced: True
Description: A packet used to add a character instance
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
angle
float
8
The angle of the character
x
long
8
The X position of the character
y
long
8
The Y position of the character
z
long
8
The Z position of the character
type
unsigned char
8
The type of the character
race
unsigned short
8
The race/sex of the character
movementSpeed
unsigned char
8
The movement speed of the character
attackSpeed
unsigned short
8
The attack speed of the character
stateFlag
unsigned short
1
The state flag of the character
affectFlags
unsigned long[2]
16
The affect flags of the character
GC Packet Character Delete
Header: 2 (0x02) Type: Constant
Sequenced: True
Description: A packet used to delete a character instance by virtual id
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
GC Packet Character Move
Header: 3 (0x03) Type: Constant
Sequenced: True
Description: A packet used to move a character instance
Structure
Name
Type
Size (bytes)
Description
function
unsigned char
1
The function of the movement
argument
unsigned char
1
The argument to the function
rotation
unsigned char
1
The rotation of the character
vid
unsigned long
8
The virtual id of the character
x
long
8
The X position of the movement
y
long
8
The Y position of the movement
time
unsigned long
8
The time of the movement
duration
unsigned long
8
The duration of the movement
GC Packet Chat
Header: 4 (0x04) Type: Constant
Sequenced: True
Description: A packet used to handle a new chat message
Structure
Name
Type
Size (bytes)
Description
size
unsigned short
2
The size of the message
type
unsigned char
1
The type of the message
vid
unsigned long
8
The virtual id of the sender(?)
empire
unsigned char
1
The empire from where the message was sent
message
char
1012 (up to)
The chat message
GC Packet Sync Position
Header: 5 (0x05) Type: Constant
Sequenced: True
Description: A packet used to sync position
Structure
Name
Type
Size (bytes)
Description
vid (ordered, repeatable)
unsigned long
8
The virtual id of the entity
x (ordered, repeatable)
long
8
The X position of the entity
y (ordered, repeatable)
long
8
The Y position of the entity
-
This page aims to list the Client to Server packet information.
A list of the known Client to Server packets aka Client Game(CG)
Structures
Here are the following packet content regarding the Packets list:
CG Packet Login
Header: 1 (0x01) Type: Constant
Sequenced: True
Description: A packet used to send basic account credentials to the server in order to make login
Structure
Name
Type
Size (bytes)
Description
name
char
31
The account username characters
password
char
17
The account password characters
CG Packet Attack
Header: 2 (0x02) Type: Constant
Sequenced: True
Description: A packet used to send attack and magic cube information to the server
Structure
Name
Type
Size (bytes)
Description
type
unsigned char
1
The type of attack to perform
victim
unsigned long
4
The account password characters
magicCubeProcessPieceCRC
unsigned char
1
The CRC of the magic cube process procedure
magicCubeProcessFileCRC
unsigned char
1
The CRC of the magic cube process file
CG Packet Chat
Header: 3 (0x03) Type: Constant
Sequenced: True
Description: A packet used to send a chat message to the server
Structure
Name
Type
Size (bytes)
Description
length
unsigned short
2
The length of the message
type
char
1
The type of the message
message
char
length
The message to send
CG Packet Player Create
Header: 4 (0x04) Type: Constant
Sequenced: True
Description: A packet used to create a new character
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
The slot index in the account
name
char
24
The name of the character
job
unsigned short
2
The race and sex of the character
shape
unsigned char
1
The model index of the character
con
unsigned char
1
The CON stat attribute of the character
int
unsigned char
1
The INT stat attribute of the character
str
unsigned char
1
The STR stat attribute of the character
dex
unsigned char
1
The DEX stat attribute of the character
CG Packet Player Destroy
Header: 5 (0x05) Type: Constant
Sequenced: True
Description: A packet used to delete an existing character
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
The slot index in the account
name
char
8
The character deletion code
CG Packet Player Select
Header: 6 (0x06) Type: Constant
Sequenced: True
Description: A packet used to select a character
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
The slot index in the account
CG Packet Character Move
Header: 7 (0x07) Type: Constant
Sequenced: True
Description: A packet used to delete an existing character
Structure
Name
Type
Size (bytes)
Description
function
unsigned char
1
The action/function to perform
argument
unsigned char
1
The argument for the action/function
x
long
8
The X target position to move into
y
long
8
The Y target position to move into
time
unsigned long
8
The current time of the server
CG Packet Sync Position
Header: 8 (0x08) Type: Dynamic
Sequenced: True
Description: A packet used to synchronize the position of entities
Structure
Name
Type
Size (bytes)
Description
vid (ordered, repeatable)
unsigned long
8
The virtual id of the entity
x (ordered, repeatable)
long
8
The X position of the entity
y (ordered, repeatable)
long
8
The Y position of the entity
CG Packet Direct Enter
Header: 9 (0x09) Type: Constant
Sequenced: True
Description: A packet used to synchronize the position of entities
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
username
char
31
password
char
17
CG Packet Enter Game
Header: 10 (0xA) Type: Constant
Sequenced: True
Description: A packet used to synchronize the position of entities
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
username
char
31
password
char
17
CG Packet Item Use
Header: 11 (0xB) Type: Constant
Sequenced: True
Description: A packet used to use an item from an inventory
Structure
Name
Type
Size (bytes)
Description
windowType
unsigned char
1
The type of window
cell
unsigned short
2
The cell of the window
CG Packet Item Drop
Header: 12 (0xC) Type: Constant
Sequenced: True
Description: A packet used to drop an item from an inventory
Structure
Name
Type
Size (bytes)
Description
windowType
unsigned char
1
The type of window
cell
unsigned short
2
The cell of the window
money
unsigned long
8
The money/gold currency to drop (if any)
CG Packet Item Move
Header: 13 (0xD) Type: Constant
Sequenced: True
Description: A packet used to move an item within inventories
Structure
Name
Type
Size (bytes)
Description
sourceWindowType
unsigned char
1
The type of window
sourceCell
unsigned short
2
The cell of the window
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
amount
unsigned char
1
The amount of the stacked item to move
CG Packet Item Pickup
Header: 15 (0xF) Type: Constant
Sequenced: True
Description: A packet used to move an item within inventories
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the item in the game world
CG Packet Quickslot Add
Header: 16 (0x10) Type: Constant
Sequenced: True
Description: A packet used to add an item into a quickslot
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The global position of the item
position
unsigned char
1
The global position of the item
quickslotType
unsigned char
1
The type of quickslot
quickslotPosition
unsigned char
1
The position in the quickslot
CG Packet Quickslot Delete
Header: 17 (0x11) Type: Constant
Sequenced: True
Description: A packet used to delete an item from the quickslot
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The global position of the item
CG Packet Quickslot Swap
Header: 18 (0x12) Type: Constant
Sequenced: True
Description: A packet used to delete an item from the quickslot
Structure
Name
Type
Size (bytes)
Description
sourcePosition
unsigned char
1
The global position of the item to swap
targetPosition
unsigned char
1
The global position to swap into
CG Packet Whisper
Header: 19 (0x13) Type: Dynamic
Sequenced: True
Description: A packet used to send a whisper message
Structure
Name
Type
Size (bytes)
Description
name
char
25
The name of who to send the whisper message to
message
char
255 (up to)
The message to whisper
CG Packet Item Drop 2
Header: 20 (0x14) Type: Constant
Sequenced: True
Description: A packet used to drop an item amount from an inventory
Structure
Name
Type
Size (bytes)
Description
windowType
unsigned char
1
The type of window
cell
unsigned short
2
The cell of the window
money
unsigned long
8
The money/gold currency to drop (if any)
amount
unsigned char
1
The amount of the item to drop
CG Packet On Click
Header: 26 (0x1A) Type: Constant
Sequenced: True
Description: A packet used to click on a entity
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the entity
CG Packet Exchange
Header: 27 (0x1B) Type: -
Sequenced: True
Description: A packet used to make exchange operations with another player
Structure
Name
Type
Size (bytes)
Description
subHeader
unsigned char
1
The sub header
Subheader Exchange Start
SubHeader: 0 (0x0) - Type: Constant
Description: Starts an exchange with a player
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
Subheader Exchange Item Add
SubHeader: 1 (0x1) - Type: Constant
Description: Adds an item to the exchange
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The position of the item in the exchange
windowType
unsigned char
1
The type of window
cell
unsigned short
2
The cell of the window
Subheader Exchange Item Delete
SubHeader: 2 (0x2) - Type: Constant
Description: Removes an item from the exchange
Structure
Name
Type
Size (bytes)
Description
position
unsigned long
1
The position of the item in the exchange
Subheader Exchange Elk Add
SubHeader: 3 (0x3) - Type: Constant
Description: Adds elk/gold/money currency to the exchange
Structure
Name
Type
Size (bytes)
Description
elk
unsigned long
1
The amount of elk/gold/money to add
Subheader Exchange Accept
SubHeader: 4 (0x4) - Type: Constant
Description: Accepts the current exchange
empty
Structure
Name
Type
Size (bytes)
Description
Subheader Exchange Cancel
SubHeader: 5 (0x5) - Type: Constant
Description: Cancels the current exchange
empty
Structure
Name
Type
Size (bytes)
Description
CG Packet Character Position
Header: 28 (0x1C) Type: Constant
Sequenced: True
Description: Undefined
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The position of a character (?)
CG Packet Script Answer
Header: 29 (0x1D) Type: Constant
Sequenced: True
Description: A packet used to answer a script(quest)
Structure
Name
Type
Size (bytes)
Description
answer
unsigned char
1
The index of the answer
CG Packet Quest Input String
Header: 30 (0x1E) Type: Constant
Sequenced: True
Description: A packet used to send a quest input string
Structure
Name
Type
Size (bytes)
Description
string
char
64
The input string
CG Packet Quest Confirm
Header: 31 (0x1F) Type: Constant
Sequenced: True
Description: A packet used to confirm/answer a quest
Structure
Name
Type
Size (bytes)
Description
answer
unsigned char
1
The index of the answer
request
unsigned long
8
The id of the request
CG Packet Shop
Header: 50 (0x32) Type: -
Sequenced: True
Description: A packet used to make interaction with the Shop system
Structure
Name
Type
Size (bytes)
Description
subHeader
unsigned char
1
The sub header
Subheader Shop End
SubHeader: 0 (0x0) - Type: Constant
Description: Closes the active shop
Structure
Name
Type
Size (bytes)
Description
empty
Subheader Shop Buy
SubHeader: 1 (0x1) - Type: Constant
Description: Buys an item from the shop
Structure
Name
Type
Size (bytes)
Description
amount
unsigned char
1
The amount to buy (default 1)
position
unsigned char
1
The position of the item
Subheader Shop Sell
SubHeader: 2 (0x2) - Type: Constant
Description: Sells an item to the shop
Structure
Name
Type
Size (bytes)
Description
position
unsigned long
1
The position of the item in the inventory
Subheader Shop Sell 2
SubHeader: 3 (0x3) - Type: Constant
Description: Sells an item to the shop
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The position of the item
amount
unsigned char
1
The amount to buy
Subheader Exchange Elk Add
SubHeader: 3 (0x3) - Type: Constant
Description: Adds elk/gold/money currency to the exchange
Structure
Name
Type
Size (bytes)
Description
elk
unsigned long
1
The amount of elk/gold/money to add
Subheader Exchange Accept
SubHeader: 4 (0x4) - Type: Constant
Description: Accepts the current exchange
empty
Structure
Name
Type
Size (bytes)
Description
Subheader Exchange Cancel
SubHeader: 5 (0x5) - Type: Constant
Description: Cancels the current exchange
empty
Structure
Name
Type
Size (bytes)
Description
CG Packet Fly Target
Header: 51 (0x33) Type: Constant
Sequenced: True
Description: A packet used to send a fly target into a position
Structure
Name
Type
Size (bytes)
Description
target
unsigned long
8
The target virtual id
x
long
8
The X global position of the target
y
long
8
The Y global position of the target
CG Packet Use Skill
Header: 52 (0x34) Type: Constant
Sequenced: True
Description: A packet used to use a skill onto a target in the game world
Structure
Name
Type
Size (bytes)
Description
vnum
unsigned long
8
The virtual number index of the skill
target
unsigned long
8
The target virtual id
CG Packet Add Fly Target
Header: 53 (0x35) Type: Constant
Sequenced: True
Description: A packet used to add a fly target into a position
Structure
Name
Type
Size (bytes)
Description
target
unsigned long
8
The target virtual id
x
long
8
The X global position of the target
y
long
8
The Y global position of the target
CG Packet Shoot
Header: 53 (0x35) Type: Constant
Sequenced: True
Description: A packet used to shoot a target with a skill
Structure
Name
Type
Size (bytes)
Description
type
unsigned char
1
The type/vnum of the skill
CG Packet My Shop
Header: 55 (0x37) Type: Constant
Sequenced: True
Description: A packet used to create a private shop
Structure
Name
Type
Size (bytes)
Description
name
unsigned char
33
The type/vnum of the skill
count
unsigned char
1
The amount of items to sell
vnum (repeatable, ordered)
unsigned long
8
The vnum of the item
amount (repeatable, ordered)
unsigned char
1
The amount to buy
windowType (repeatable, ordered)
unsigned char
1
The type of the window
windowCell (repeatable, ordered)
unsigned short
2
The cell of the window
price (repeatable, ordered)
unsigned long
8
The sell price of the item
position (repeatable, ordered)
unsigned char
1
The position of the item
CG Packet Item Use Into Item
Header: 60 (0x3C) Type: Constant
Sequenced: True
Description: A packet used to use an item into another item
Structure
Name
Type
Size (bytes)
Description
sourceWindowType
unsigned char
1
The type of window
sourceCell
unsigned short
2
The cell of the window
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
CG Packet Target
Header: 61 (0x3D) Type: Constant
Sequenced: True
Description: A packet used to target an entity
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the entity
CG Packet Script Button
Header: 66 (0x42) Type: Constant
Sequenced: True
Description: A packet used to click a script/quest button
Structure
Name
Type
Size (bytes)
Description
index
unsigned int
4
The index of the button
CG Packet Messenger
Header: 67 (0x43) Type: -
Sequenced: True
Description: A packet used to perform actions with the messenger system
Structure
Name
Type
Size (bytes)
Description
subHeader
unsigned char
1
The sub header
Subheader Messenger Add By Vid
SubHeader: 0 (0x0) - Type: Constant
Description: Adds a player ot the messenger by virtual id
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
Subheader Messenger Add By Name
SubHeader: 1 (0x1) - Type: Constant
Description: Adds a player to the messenger by name
Structure
Name
Type
Size (bytes)
Description
name
char
24
The name of the player
Subheader Messenger Remove
SubHeader: 2 (0x2) - Type: Constant
Description: Removes a player in the messenger by name
Structure
Name
Type
Size (bytes)
Description
name
char
24
The name of the player
CG Packet Mall Checkout
Header: 69 (0x45) Type: Constant
Sequenced: True
Description: A packet used to move an item from the mall into an inventory
Structure
Name
Type
Size (bytes)
Description
mallPosition
unsigned char
1
The slot index of the mall position
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
CG Packet Safebox Checkin
Header: 70 (0x46) Type: Constant
Sequenced: True
Description: A packet used to move an item from the safebox into an inventory
Structure
Name
Type
Size (bytes)
Description
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
safeboxPosition
unsigned char
1
The slot index of the mall position
CG Packet Safebox Checkout
Header: 71 (0x47) Type: Constant
Sequenced: True
Description: A packet used to move an item from the safebox into an inventory
Structure
Name
Type
Size (bytes)
Description
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
safeboxPosition
unsigned char
1
The slot index of the mall position
CG Packet Party Invite
Header: 72 (0x4😎 Type: Constant
Sequenced: True
Description: A packet used to send a party invite to a player
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the player
CG Packet Party Invite Answer
Header: 73 (0x49) Type: Constant
Sequenced: True
Description: A packet used to send a response to a given party invite
Structure
Name
Type
Size (bytes)
Description
inviterVid
unsigned long
8
The virtual id of the player
response
unsigned char
1
The response to the invite
CG Packet Party Set State
Header: 75 (0x4B) Type: Constant
Sequenced: True
Description: A packet used to set the state of a party member
Structure
Name
Type
Size (bytes)
Description
memberVid
unsigned long
8
The virtual id of the party member
state
unsigned char
1
The state of the party member
flag
unsigned char
1
The flag of the state
CG Packet Party Use Skill
Header: 76 (0x4C) Type: Constant
Sequenced: True
Description: A packet used to use a party skill
Structure
Name
Type
Size (bytes)
Description
skill
unsigned char
1
The party skill index
targetVid
unsigned char
1
The virtual id of the target
CG Packet Safebox Item Move
Header: 77 (0x4D) Type: Constant
Sequenced: True
Description: A packet used to use move an item from the safebox
Structure
Name
Type
Size (bytes)
Description
sourceWindowType
unsigned char
1
The type of window
sourceCell
unsigned short
2
The cell of the window
amount
unsigned char
1
The amount to move
targetWindowType
unsigned char
1
The type of window
targetCell
unsigned short
2
The cell of the window
CG Packet Party Parameter
Header: 78 (0x4E) Type: Constant
Sequenced: True
Description: A packet used to change the party parameter
Structure
Name
Type
Size (bytes)
Description
parameter
unsigned char
1
The party distribution mode/parameter
CG Packet Guild
Header: 79 (0x4F) Type: -
Sequenced: True
Description: A packet used to interact with the guild system
Structure
Name
Type
Size (bytes)
Description
subHeader
unsigned char
1
The sub header
Subheader Guild Add Member
SubHeader: 0 (0x0) - Type: Constant
Description: Adds a member to the Guild by virtual id
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
Subheader Guild Remove
SubHeader: 1 (0x1) - Type: Constant
Description: Removes a member from the Guild by virtual id
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the character
Subheader Guild Change Grade Name
SubHeader: 2 (0x2) - Type: Constant
Description: Changes member grade name definition in the Guild
Structure
Name
Type
Size (bytes)
Description
grade
unsigned char
1
The grade number to change
name
char
8
The grade name
Subheader Guild Change Grade Authority
SubHeader: 3 (0x3) - Type: Constant
Description: Changes member grade authority in the Guild
Structure
Name
Type
Size (bytes)
Description
grade
unsigned char
1
The grade number to change
authority
unsigned char
1
The authority to change into
Subheader Guild Offer
SubHeader: 4 (0x4) - Type: Constant
Description: Offers current experience to the Guild
Structure
Name
Type
Size (bytes)
Description
experience
unsigned long
8
The amount of experience to offer
Subheader Guild Post Comment
SubHeader: 5 (0x5) - Type: Constant
Description: Posts a commentary in the Guild
Structure
Name
Type
Size (bytes)
Description
length
unsigned char
255 (up to)
The length of the post message to send
message
unsigned char
length
The post message to send
Subheader Guild Delete Comment
SubHeader: 6 (0x6) - Type: Constant
Description: Deletes a commentary in the Guild
Structure
Name
Type
Size (bytes)
Description
index
unsigned long
8
The length of the post message to send
Subheader Guild Refresh Comments
SubHeader: 7 (0x7) - Type: Constant
Description: Requests a comments refresh
Structure
Name
Type
Size (bytes)
Description
empty
Subheader Guild Change Member Grade
SubHeader: 8 (0x8) - Type: Constant
Description: Changes a given member's grade
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the player
grade
unsigned char
8
The grade to set
Subheader Guild Use Skill
SubHeader: 9 (0x9) - Type: Constant
Description: Uses a guild skill
Structure
Name
Type
Size (bytes)
Description
skill
unsigned long
8
The virtual id of the player
target
unsigned long
8
The entity target virtual id to use the skill
Subheader Guild Change Member General
SubHeader: 10 (0x10) - Type: Constant
Description: Changes a member general role state
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the player
flag
unsigned char
8
The general role flag to set
Subheader Guild Invite Answer
SubHeader: 11 (0x11) - Type: Constant
Description: Gives an answer to a Guild invitation
Structure
Name
Type
Size (bytes)
Description
guildId
unsigned long
8
The id of the guild
answer
unsigned char
1
The answer to the invite
Subheader Guild Charge GSP
SubHeader: 12 (0x12) - Type: Constant
Description: Charges the Guild Skill Power
Structure
Name
Type
Size (bytes)
Description
guildId
unsigned long
8
The amount of money/currency used to charge
Subheader Guild Deposit Money
SubHeader: 13 (0x13) - Type: Constant
Description: Deposits an amount of money/currency in the Guild
Structure
Name
Type
Size (bytes)
Description
money
unsigned long
8
The amount of money/currency to deposit
Subheader Guild Withdraw Money
SubHeader: 14 (0x14) - Type: Constant
Description: Withdraws an amount of money/currency from the Guild
Structure
Name
Type
Size (bytes)
Description
money
unsigned long
8
The amount of money/currency to withdraw
CG Packet Answer Make Guild
Header: 81 (0x51) Type: Constant
Sequenced: True
Description: A packet used to answer a guild creation prompt
Structure
Name
Type
Size (bytes)
Description
name
char
13
The name of the guild
CG Packet Fishing
Header: 82 (0x52) Type: Constant
Sequenced: True
Description: A packet used to start fishing
Structure
Name
Type
Size (bytes)
Description
rotation
unsigned char
1
The rotation to fish
CG Packet Give Item
Header: 83 (0x53) Type: Constant
Sequenced: True
Description: A packet used to give an item to a player
Structure
Name
Type
Size (bytes)
Description
vid
unsigned long
8
The virtual id of the player
WindowType
unsigned char
1
The type of window
cell
unsigned short
2
The cell of the window
amount
unsigned char
1
The amount of the item
CG Packet Empire
Header: 84 (0x54) Type: Constant
Sequenced: True
Description: A packet used to select an empire
Structure
Name
Type
Size (bytes)
Description
empire
unsigned char
1
The index of the empire
CG Packet Refine
Header: 84 (0x54) Type: Constant
Sequenced: True
Description: A packet used to refine an item
Structure
Name
Type
Size (bytes)
Description
position
unsigned char
1
The position of the item in the inventory
type
unsigned char
1
The type of refinement to perform
CG Packet Mark Login
Header: 100 (0x64) Type: Constant
Sequenced: True
Description: A packet used to login into the mark server
Structure
Name
Type
Size (bytes)
Description
handle
unsigned long
8
The current mark handle
randomKey
unsigned long
8
The random key
CG Packet Mark CRC List
Header: 100 (0x64) Type: Constant
Sequenced: True
Description: A packet used to send the current image index for the CRC List
Structure
Name
Type
Size (bytes)
Description
imageIndex
unsigned char
1
The current image index
CG Packet Mark Upload
Header: 101 (0x65) Type: Constant
Sequenced: True
Description: A packet used to upload an image into the mark server
Structure
Name
Type
Size (bytes)
Description
guildId
unsigned long
1
The current image index
image
unsigned char
768
The image to upload
CG Packet Mark Index List
Header: 102 (0x66) Type: Constant
Sequenced: True
Description: A packet used to increment an index(?)
Structure
Name
Type
Size (bytes)
Description
empty
CG Packet Hack
Header: 105 (0x68) Type: Constant
Sequenced: True
Description: A packet used to report hack messages to the server
Structure
Name
Type
Size (bytes)
Description
message
char
256
The message of the hack to report
CG Packet Change Name
Header: 106 (0x69) Type: Constant
Sequenced: True
Description: A packet used to change the name of a character
Structure
Name
Type
Size (bytes)
Description
index
unsigned char
1
The index of the character
name
char
25
The new name of the character
CG Packet SMS
Header: 107 (0x6A) Type: Dynamic
Sequenced: True
Description: A packet used to use the SMS(short message service) to send a message
Structure
Name
Type
Size (bytes)
Description
name
char
25
The name of the player to send the message to
message
char
4294967295 (up to)
The "short" message to send
CG Packet China Matrix Card
Header: 108 (0x6B) Type: Constant
Sequenced: True
Description: A packet used to send the china matrix card answer
Structure
Name
Type
Size (bytes)
Description
answer
char
9
The answer to the china matrix card
CG Packet Login 2
Header: 109 (0x6C) Type: Constant
Sequenced: True
Description: A packet used to login into the server(second version)
Structure
Name
Type
Size (bytes)
Description
name
char
31
The username of the account
loginKey
unsigned long
8
The login key
encryptionKey
unsigned long
32
The current encryption key
CG Packet Login 3
Header: 111 (0x6F) Type: Constant
Sequenced: True
Description: A packet used to login into the server(third version)
Structure
Name
Type
Size (bytes)
Description
name
char
31
The username of the account
password
char
17
The password of the account
encryptionKey
unsigned long
32
The current encryption key
CG Packet Guild Symbol Upload
Header: 112 (0x70) Type: Dynamic
Sequenced: True
Description: A packet used to upload a guild symbol
Structure
Name
Type
Size (bytes)
Description
symbol
unsigned long
4294967295 (up to)
The symbol of the guild
CG Packet Guild Symbol CRC
Header: 113 (0x71) Type: Constant
Sequenced: True
Description: A packet used to send the CRC of each symbol listed
Structure
Name
Type
Size (bytes)
Description
guildId
unsigned long
8
The guild id
crc
unsigned long
8
The CRC of the symbol
size
unsigned long
8
The size of the symbol
CG Packet Script Select Item
Header: 114 (0x72) Type: Constant
Sequenced: True
Description: A packet used to select an item from a script/quest
Structure
Name
Type
Size (bytes)
Description
selection
unsigned long
8
The index selection of the item
CG Packet Login 4
Header: 115 (0x73) Type: Constant
Sequenced: True
Description: A packet used to login into the server (forth version)
Structure
Name
Type
Size (bytes)
Description
empty
CG Packet Login 5 Open Id
Header: 116 (0x74) Type: Constant
Sequenced: True
Description: A packet used to login into the server with Open Identification (fifth version)
Structure
Name
Type
Size (bytes)
Description
authKey
char
33
The Open Id authentication key
encryptionKey
unsigned long
32
The current encryption key
CG Packet Runup Matrix Answer
Header: 201 (0xC9) Type: Constant
Sequenced: True
Description: A packet used to answer the matrix card runup
Structure
Name
Type
Size (bytes)
Description
answer
char
5
The matrix card answer
CG Packet NewCIBN Passpod Answer
Header: 202 (0xCA) Type: Constant
Sequenced: True
Description: A packet used to send the Passpod anwser (used in NewCIBN)
Structure
Name
Type
Size (bytes)
Description
answer
char
9
The passpod answer
CG Packet Hackshield Hack
Header: 203 (0xCB) Type: Constant
Sequenced: True
Description: A packet used to report a hack detected by HackShield(?)
Structure
Name
Type
Size (bytes)
Description
buffer
unsigned char
400
Undefined
length
unsigned short
2
The length of the buffer
CG Packet Xtrap Hack
Header: 204 (0xCC) Type: Constant
Sequenced: True
Description: A packet used to verify given Xtrap data(?)
Structure
Name
Type
Size (bytes)
Description
data
unsigned char
128
The received Xtrap data to verify
CG Packet Dragon Soul Refine
Header: 204 (0xCC) Type: Constant
Sequenced: True
Description: A packet used to refine a dragon soul item
Structure
Name
Type
Size (bytes)
Description
refineType
unsigned char
1
The type of the refine method
windowType
unsigned char
1
The type of window
windowCell
unsigned short
2
The cell of the window
CG Packet State Checker
Header: 204 (0xCE) Type: Constant
Sequenced: True
Description: A packet used to check the state of the server channels
Structure
Name
Type
Size (bytes)
Description
empty
CG Packet Key Agreement
Header: 251 (0xFB) Type: Constant
Sequenced: True
Description: A packet used to check the state of the server channels
Structure
Name
Type
Size (bytes)
Description
empty
CG Packet Time Sync
Header: 252 (0xFC) Type: Constant
Sequenced: True
Description: A packet used to synchronize the time with the server
Structure
Name
Type
Size (bytes)
Description
handshake
unsigned long
8
The current handshake
time
unsigned long
8
The handshake time + (handshake delta * 2)
delta
long
8
The delta (default 0)
CG Packet Client Version
Header: 253 (0xFD) Type: Constant
Sequenced: True
Description: A packet used to send the current client version to the server
Structure
Name
Type
Size (bytes)
Description
filename
char
33
The current process filename
timestamp
char
33
The current process timestamp
CG Packet Client Version 2
Header: 241 (0xF1) Type: Constant
Sequenced: True
Description: A packet used to send the current client version to the server (second version)
Structure
Name
Type
Size (bytes)
Description
filename
char
33
The current process filename
timestamp
char
33
The current process timestamp (constant default "1215955205")
CG Packet Pong
Header: 254 (0xFE) Type: Constant
Sequenced: True
Description: A packet used to send a pong response
Structure
Name
Type
Size (bytes)
Description
empty