This section goes through the individual packets that the server can send.
The error message packet is sent back to the client to inform the client that an error has occurred.
Table 11. ERROR_MESSAGE contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 02 | MARK_ERROR | A marker to indicate that this block contains an error string. |
4 bytes | xx xx xx xx | ERROR_LEN | The length of the error string. |
variable | ERROR_STRING | The error string. | |
2 bytes | 00 01 | MARK_UNKNOWN | Unknown. |
4 bytes | 00 00 00 02 | UNKNOWN_LEN | Unknown |
2 bytes | 00 01 | UNKNOWN | Unknown. |
Login notify message to inform client that server is experiencing difficulties.
Login failure message when Client sends a bad LOGIN_RESP packet.
Registration successful message when client sends a proper REGISTER packet.
The KEEP_ALIVE_RESP packet is sent from the server to the client after the server receives a KEEP_ALIVE packet. This packet contains no data. A sequence number is stored in the low command bytes. It seems to always match the sequence number from the last KEEP_ALIVE packet.
The login challenge packet.
Table 15. LOGIN_CHAL contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 02 | X1 | Unknown. |
4 bytes | xx xx xx xx | TEXT_LEN1 | The length of an unknown string. |
variable | X2 | An unknown random string. | |
2 bytes | 00 01 | X1 | Unknown. |
4 bytes | xx xx xx xx | TEXT_LEN2 | The length of the hashing string. |
variable | HASH_STRING | The bytes of the hashing string. |
The HASH_STRING is used in the LOGIN_RESP packet sent by the client to generate a proper hash code.
The login OK message with optional message of the day.
Table 16. LOGIN_OK / MOTD contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 0C | BLOCK_EXCHANGE_RATE | Used to mark the exchange rate block. Not in all responses. |
4 bytes | xx xx xx xx | EXCHANGE_RATE_LEN | The length of the exchange rate message |
variable | EXCHANGE_RATE | The exchange rate message | |
2 bytes | 00 0B | X2 | Unknown. |
4 bytes | xx xx xx xx | CURRENCY_LEN | Length of the currency field |
variable | CURRENCY | The currency. "USD" for US dollars. | |
2 bytes | 00 0A | X3 | Unknown. |
4 bytes | xx xx xx xx | UNKNOWN_IP_LEN | An IPv4 address |
variable | IP_ADDRESS | An ip address. (e.g. "202.154.106.233") | |
2 bytes | 00 09 | X4 | Unknown. |
4 bytes | 00 00 00 04 | X5 | Unknown. |
4 bytes | 00 00 00 03 | X6 | Unknown. |
2 bytes | 00 08 | X7 | Unknown. |
4 bytes | 00 00 00 01 | X8 | Unknown. |
1 byte | 00 | X9 | Unknown. |
2 bytes | 00 06 | X10 | Unknown. |
4 bytes | 00 00 00 01 | X11 | Unknown. |
1 byte | 00 | X12 | Unknown. |
2 bytes | 00 03 | X13 | Unknown. |
4 bytes | xx xx xx xx | MOTD_LEN | Length of the MOTD string |
variable | MOTD | The message of the day | |
2 bytes | 00 02 | X14 | Unknown. |
4 bytes | 00 00 00 01 | X15 | Unknown. |
2 bytes | 00 | X16 | Unknown. |
1 byte | 00 01 | X17 | Unknown. |
4 bytes | xx xx xx xx | MOBILE_NUM_LEN | The length of the string containing your mobile number |
variable | MOBILE_NUM | Your mobile number including country code without () or dashes |
The packet sent after the client requests the contact list. This packet contains the groups on the contact list. Each group is sent in a different packet.
Table 17. CLIST_GROUPS contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 02 | MARK_GROUPNAME | A marker that indicates this block contains the name of the group. |
4 bytes | xx xx xx xx | GROUPNAME_LEN | The length of the name of the group |
variable | GROUPNAME | The name of the group. (e.g. "mig33 Contacts") | |
2 bytes | 00 01 | MARK_ID | A marker for an unknown block. |
4 bytes | 00 00 00 04 | ID_LEN | Seems to always be 4. |
4 bytes | xx xx xx xx | ID | An ID number for this group. |
The ID number is used when you get the buddies in the contact list. In block 4 of the contact packet, the ID code will tell you which group a buddy belongs to.
The packet sent after the client requests the contact list. This packet contains the buddies on the contact list. Each buddy is sent in a different packet.
Table 18. CLIST_BUDDIES contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 19 | MARK_UNKNOWN | A marker for an unknown block. |
4 bytes | 00 00 00 01 | UNKNOWN_LEN | The length for some unknown data. Possibly a flag. |
1 byte | 00 | UNKNOWN | An unknown piece of data. Seems to always be 0? |
2 bytes | 00 03 | MARK_USERNAME | A marker for the username |
4 bytes | xx xx xx xx | USERNAME_LEN | The length of the username |
variable | USERNAME | The username. | |
2 bytes | 00 0D | MARK_STATUS | A marker used to indicate a buddy's status. |
4 bytes | 00 00 00 01 | STATUS_LEN | The length of the status byte. |
1 byte | xx | STATUS | Status. 0x63 = "Offline", 0x01 = "Online". |
2 bytes | 00 02 | MARK_GROUP_ID | A marker used to indicate which group a buddy is in. |
4 bytes | 00 00 00 04 | GROUP_ID_LEN | The length of the GROUP_ID. |
4 bytes | xx xx xx xx | GROUP_ID | The group ID that this buddy belongs to. |
2 bytes | 00 0C | MARK_BUDDY_NAME | A marker used ot indicate the buddies name again. |
4 bytes | xx xx xx xx | BUDDY_NAME_LEN | The length of the buddies name. |
variable | BUDDY_NAME | The buddy's name. | |
2 bytes | 00 01 | MARK_BUDDY_ID | A marker for the buddy ID. |
4 bytes | 00 00 00 04 | BUDDY_ID_LEN | The length of the buddy ID. |
4 bytes | xx xx xx xx | BUDDY_ID | The Buddy ID. |
The packet sent to notify a client that a buddy's status has changed.
Table 19. CLIST_STATUS_CHANGE contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 02 | MARK_STATUS | A marker that indicates this block contains the status number. |
4 bytes | 00 00 00 01 | STATUS_LEN | The length of the status byte. |
1 byte | xx | STATUS | The users status. 0x63 = Offline, 0x01 = Online. |
2 bytes | 00 01 | MARK_BUDDY_ID | A marker to indicate the buddy id. |
4 bytes | 00 00 00 04 | BUDDY_ID_LEN | The length of the buddy ID. |
4 bytes | xx xx xx xx | BUDDY_ID | The buddy id who's status has changed. |
The packet sent to notify a client that another user sent a message to a chat room or mig33 contact.
Table 20. RECV_MSG contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 08 | MARK_MSG | A marker that indicates this block is the chat message. |
4 bytes | xx xx xx xx | MSG_LEN | Length of the chat message. |
variable | MSG | The bytes that make up the chat message. | |
2 bytes | 00 06 | MARK_X1 | A marker for an unknown block. |
4 bytes | 00 00 00 02 | X2_LEN | An unknown length |
2 bytes | 00 01 | X3 | An unknown piece of data. |
2 bytes | 00 04 | MARK_DESTINATION | A marker for the destination string. |
4 bytes | xx xx xx xx | DESTINATION_LEN | Length of the string containing the destination. |
variable | DESTINATION | The name of the destination. Can be either a chatroom or a user's name. | |
2 bytes | 00 03 | MARK_X4 | A marker for an unknown block. |
4 bytes | 00 00 00 01 | X5_LEN | An unknown length |
1 byte | xx | X6 | Unknown. Can be 03 or 01. This may be an indication of whether the message is to a chat room or to a user. |
2 bytes | 00 02 | MARK_USER | A marker for the user who sent the message. |
4 bytes | xx xx xx xx | USER_LEN | The lenght of the username |
variable | USER | The username that sent the message. | |
2 bytes | 00 01 | MARK_X7 | An unknown marker. |
4 bytes | 00 00 00 01 | X8_LEN | An unknown length |
1 byte | 01 | X9 | Unknown. |
This packet is sent to the client when the server needs to inform the client about some event.
Table 21. RECV_SYS_MSG contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 05 | MARK_DATA | A marker that indicates this block contains the data of the system message. |
4 bytes | xx xx xx xx | DATA_LEN | Length of the data message. |
variable | DATA | The bytes that make up the data. Could be a URL. | |
2 bytes | 00 04 | MARK_DESC | A marker that indicates this block contains a description of the data in the system mesage. |
4 bytes | xx xx xx xx | DESC_LEN | Length of the description. |
variable | DESC | The bytes that make up the decription. | |
2 bytes | 00 02 | MARK_INVOKER | A marker that indicates this block contains the invoker of the system message. |
4 bytes | xx xx xx xx | INVOKER_LEN | Length of the invoker's nick. |
variable | INVOKER | The bytes that make up the invoker's name | |
2 bytes | 00 01 | MARK_UNKNOWN | An unknown block of data. |
4 bytes | 00 00 00 01 | UNKNOWN_LEN | An unknown length. Seems to always be 1 byte. |
1 byte | 01 | Unknown | Seems to always be 01. |