This section goes through the individual packets that the client can send.
The keep alive packet contains no data. The low command bytes contain the sequence number. This sequence number always seems to start at 4. A keep alive packet must be sent every 60 seconds. Each time it is sent the sequence number is increased by one.
A client must send this packet if they wish to register a new account with mig33.
Table 6. REGISTER contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 04 | MARK_CELL | Used to mark the beginning of a cellphone telephone number string. |
4 bytes | xx xx xx xx | CELLNUM_LEN | The length of a celular phone number (include country code) |
variable | CELLNUM | The cellphone number without dashes or dots. Example 1-310-555-5554 would be "13105555554" | |
2 bytes | 00 03 | MARK_PASSWORD | Used to mark the beginning of a password string block. |
4 bytes | xx xx xx xx | PASSWORD_LEN | The length of the password you wish to use during registration. |
variable | PASSWORD | The password | |
2 bytes | 00 02 | MARK_USERNAME | Used to mark the beginning of a username string block |
4 bytes | xx xx xx xx | USERNAME_LEN | The length of the username you are registering. |
variable | USERNAME | The username you are registering. | |
2 bytes | 00 01 | X1 | Unknown. Ending marker? |
4 bytes | 00 00 00 01 | UNKNOWN_LEN | Unknown but always 00 00 00 01. |
1 byte | 01 | X5 | Unknown. Always 01. |
The initial packet sent to a server.
Table 7. LOGIN_1 contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 09 | X1 | Unknown marker. |
4 bytes | 00 00 00 04 | X2 | Unknown. |
4 bytes | 00 00 00 01 | X3 | Unknown. |
2 bytes | 00 08 | MARK_PLAT | The marker for the platform block of the packet |
4 bytes | xx xx xx xx | TEXT_LEN1 | The length of the J2ME platform string |
variable | J2ME_PLAT | The J2ME platform. Some examples in the wild:
| |
2 bytes | 00 07 | MARK_VERSTRING | The marker for the mig33 version string. |
4 bytes | 00 00 00 09 | TEXT_LEN2 | 9 for the length of "J2MEv2.04" or "J2MEv3.00" or "J2MEv3.02" or "J2MEv3.05". |
9 bytes | xx xx xx xx xx xx xx xx xx | MIDLET_VERSION | The bytes of the string "J2MEv2.04" or "J2MEv3.00" or "J2MEv3.02" or "J2MEv3.05" |
2 bytes | 00 05 | MARK_USERNAME | The marker for the username string. |
4 bytes | xx xx xx xx | TEXT_LEN3 | the length of your username. |
variable | USERNAME | the bytes of your username. | |
2 bytes | 00 03 | MARK_VERSION | Marker for the version number as a short. |
4 bytes | 00 00 00 02 | VERSION_NUM_LEN | The length of the version number. sizeof(uint16_t). |
2 bytes | xx xx | VERSION_NUM | The version number in a short. It should
be either:
|
2 bytes | 00 02 | X9 | Unknown. |
4 bytes | 00 00 00 01 | X10 | Unknown. |
1 byte | xx | X11 | 01 for version 204, 02 for version 300 and above. |
2 bytes | 00 01 | X12 | Unknown |
4 bytes | 00 00 00 02 | SIZE_X14 | Size of X14 in bytes. |
2 bytes | 00 01 | X14 | Unknown but always 00 01. |
The login response to challenge packet sent by server.
Table 8. LOGIN_RESP contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 01 | MARK_HASHCODE | A marker used to indicate that this block is for the hash code. |
4 bytes | 00 00 00 04 | HASHCODE_LEN | The length of the hash code |
4 bytes | xx xx xx xx | HASHCODE | The 4 byte calculated hash code of the server's HASH_STRING concatenated with the client's password. |
HASHCODE is calclated by taking the server's HASH_STRING, then concatenating it with the client's password (in all lowercase) and running it through a hash code function. The function is the same used from Java's String hashCode() method.
This packet is created to send a message to a mig33 entity (either a chat room or contact).
Table 9. SEND_MSG contents
Length | Content (if fixed) | Name | Description |
---|---|---|---|
2 bytes | 00 08 | MARK_MSG | A marker to indicate that this block contains the message. |
4 bytes | xx xx xx xx | MSG_LEN | The length of the message you are going to send |
variable | MSG | A string containing the message to send | |
2 bytes | 00 06 | X2 | Unknown. |
4 bytes | 00 00 00 02 | X3 | Unknown. |
2 bytes | 00 01 | X4 | Unknown. |
2 bytes | 00 04 | MARK_DESTINATION | A marker to indicate that this block contain the destination entity. |
4 bytes | xx xx xx xx | DESTINATION_LEN | The length of the destination's name |
variable | DESTINATION | The name of the destination. Either a chat room or mig33 contact | |
2 bytes | 00 03 | X6 | Unknown |
4 bytes | 00 00 00 01 | X7 | Unknown |
1 byte | 03 | X8 | Unknown |
2 bytes | 00 02 | MARK_USER | A marker used to indicate that this block contains your username. |
4 bytes | xx xx xx xx | USER_NAME_LEN | The length of your user name. |
variable | USER_NAME | Your user name | |
2 bytes | 00 01 | X10 | Unknown. |
4 bytes | 00 00 00 01 | X11 | Unknown. |
1 byte | 01 | X12 | Unknown. |
This packet is created to ask the mig33 server to set up a picture exchange.