Client commands overview
Client commands overview   

Logon packet (command 03e8) 

/* 03 00 e8 03 01 00 02 00 8f e4 5e 00 00 00 00 00 b6 09 00 00 04 00 2e 2e 2e 
00 7a 00 02 00 c0 a8 0a 01 04 00 01 00 00 02 00 00 00 00 00 00 00 03 00 7a 00 */

00 03      - version number
03 e8      - command code
00 01      - sequence number 1 (seq1)
00 02      - sequence number 2 (seq2)
00 5e e4 8f        - client intranet UIN number (i.e. 6218895)
00 00 00 00        - client internet UIN number (reserved)
00 00 09 b6        - client tcp port number (2486) - 4 bytes!
00 04              - client password length (3 symbols + 00)
2e 2e 2e 00        - client password + 00 ("...")
02 00 7a 00        - version of client packet (7a -> 122 -> 1.22)
01 0a a8 c0        - client real IP adress (192.168.10.1)
04         - gap byte
00 00 01 00        - initial status of client (online)
02 00 00 00        - tcp version (may be it size = 2 byte)
00 00 00 00        - reserved
03 00 7a 00        - version of the client

Note:   this is first packet of client, but Mirabilis Groupware server can process messages 
with out logon. Sequence number should start from 00 01 (seq1) 00 02 (seq2).

Client reply packet (command 000a) 

/* 03 00 0a 00 01 00 00 00 8f e4 5e 00 00 00 00 00 */

00 03      - version number
00 0a      - command code (server and client have the same code)
00 01      - sequence number of confirmed packet (seq1)
00 00      - allways zero for client (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)

Note:   This type of packet used to confirm receiving server packet. It should have 
seq1 = seq1 of replied server packet. If server after sending packet to client 
don't receive ack packet it end it again. You (and server) shouldn't confirm that packets

Alive packet (command 042e) 

/* 03 00 2e 04 07 00 00 00 8f e4 5e 00 00 00 00 00 */

00 03      - version number
04 2e      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)

Note:   This packet sent to indicate connection is still up and client is still alive 
and online. Client should send it after each 45 sec (for intrAnet) or 120 sec for internet.

Disconnect packet  (command 0438) 

/* 03 00 38 04 00 00 00 00 8f e4 5e 00 00 00 00 00 14 00 42 5f 55 53 45 52 5f 44 49 
53 43 4f 4e 4e 45 43 54 45 44 00 05 00*/

00 03      - version number
04 38      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 14      - text message length
42 5f .. 00        - text message (B_USER_DISCONNECTED or B_MESSAGE_ACK)
00 05      - unknown (00 04 or 00 05)

Note: This packet sent to inform server that client is disconnecting. Also it used to 
get out_of_band server response (B_MESSAGE_ACK)

New user added (for server) (command 053c) 

/* 03 00 3c 05 0c 00 0d 00 8f e4 5e 00 00 00 00 00 ec 03 00 00 */

00 03      - version number
05 3c      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 00 03 ec        - new user UIN

Note: This command inform server that user expand his contact list and it will alert 
client when this user change status.


 Set user status (command 04d8) 

/* 03 00 d8 04 0f 00 10 00 8f e4 5e 00 00 00 00 00  00 01 00 00 */

00 03      - version number
04 d8      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 00 01 00        - new status (i.e. private = 00 00 01 00)

Status: 
STATUS_ONLINE   = 00 00 00 00
STATUS_AWAY     = 00 00 00 01
STATUS_DND      = 00 00 00 11
STATUS_PRIVATE  = 00 00 01 00

Note: Used to inform server about user's new status.


 Contact send (command 0406)  

/* 03 00 06 04 05 00 06 00 8f e4 5e 00 00 00 00 00 03 8e e4 5e 00 8d e4 5e 00 8c e4 5e 00 */

00 03      - version number
04 06      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
03         - number of users in contact list
00 5e e4 8e        - UIN number 1 (6218894)
00 5e e4 8d        - UIN number 2 (6218893)
00 5e e4 8c        - UIN number 3 (6218892)

Note: This comman used to inform server of client contact list. Server will send 
notification of users from list status changing to client.

 Get user notes (command 05aa) 


/* 03 00 aa 05 06 00 07 00 8f e4 5e 00 00 00 00 00  04 00 6e 65 77 00 */

00 03      - version number
05 aa      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 5e e4 8e        - target uin

Note: Used to obtain user notes, last notes update time and last 
ip address

Get user info (command 05fa) 

/* 03 00 fa 05 0a 00 0a 00 8f e4 5e 00 00 00 00 00 e9 fb 77 00 */

00 03      - version number
05 fa      - command code
00 0a      - sequence number (seq1)
00 0a      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 77 fb e9        - uin of interested user

Note: Used to obtain user's personal information (server will reply with 5 packets:
 basic info, home info, home web, work info, work web)

Get user info1 (command 0460) 

/* 03 00 60 04 0a 00 0a 00 8f e4 5e 00 00 00 00 00 e9 fb 77 00 */

00 03      - version number
04 60      - command code
00 0a      - sequence number (seq1)
00 0a      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 77 fb e9        - uin of interested user

Note: Used to obtain user's basic personal information

 Get departments list packet (command 03f2) 

/* 03 00 f2 03 01 00 01 00 00 00 00 00 00 00 00 00 8f e4 5e 00 04 00 2e 2e 2e 00 */

00 03      - version number
03 f2      - command code
00 01      - sequence number (seq1)
00 01      - sequence number (seq2)
00 00 00 00        - zero field (requester doesn't have UIN)
00 00 00 00        - zero field
00 5e e4 8f        - user uin number
00 04              - password length
2e 2e 2e 00        - password

Note: Client want to replicate departments list from server.

 Get externals packet (command 04c4) 

/* 03 00 c4 04 01 00 01 00 8f e4 5e 00 00 00 00 00 00 00 00 04 */

00 03      - version number
c4 04      - command code
00 01      - sequence number (seq1)
00 01      - sequence number (seq2)
00 5e e4 8f        - user uin number
00 00 00 00        - zero field
00 00 00 04        - external number

Note: Client want all externals after this number from server.

First login packet (command 04ec) 

/* 03 00 ec 04 01 00 10 00 00 00 00 00 00 00 00 00 */

00 03      - version number
04 ec      - command code
00 01      - sequence number (seq1)
00 10      - sequence number (seq2)
00 00 00 00        - zero field (requester doesn't have UIN)
00 00 00 00        - zero field

Note: This is the first command used to inform server that client start registration.

Get departments list1 (command 05f0) 

/* 03 00 f0 05 01 00 10 00 8f e4 5e 00 00 00 00 00 */

00 03      - version number
f0 05      - command code
00 01      - sequence number (seq1)
00 10      - sequence number (seq2)
00 5e e4 8f        - sender UIN number
00 00 00 00        - zero field

Note: Used by client to begin replicate departments list during normal session.

Reconnect packet (command 015e) 

/* 03 00 5e 01 d2 00 3f 00 3b 04 00 00 7a 00 01 00 71 03 9f 02 0a 0a 0a 05 07 04 
00 00 04 3b 04 00 00 00 00 00 00 02 00 */

00 03      - version number
01 5e      - command code
00 d2      - sequence number (seq1)
00 3f      - sequence number (seq2)
00 00 3b 04        - sender UIN number
01 00 00 7a        - client version
02 9f 03 71        - unknown field
05 0a 0a 0a        - client ip address
00 00 04 3b        - client tcp port 
04         - tcp ability (or proxy usage)
00 00 00 00        - just zeros 
00 02      - tcp protocol version

Note: Used by client on server-confirm timeouts to check if there is its connection exist.

Usage stats packet (command 0532) 

/*       -- skipped -- */

Note: This packet contain registry key HKEY_CURRENT_USER\Software\Mirabilis\ICQCorp\Owners\xxx\Prefs\Stats.
I haven't decode this information yet. I know that ICQ99, ICQ2000 also have such stats reports.

Set user notes (command 059) 

/* 03 00 96 05 06 00 07 00 8f e4 5e 00 00 00 00 00  04 00 6e 65 77 00 */

00 03      - version number
05 96      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00     - internet client UIN number (not used - reserved)
04 00              - new notes length
6e 65 77 00        - new notes + 00 ("new")

Note: Used to change user notes.

Set basic info (command 050a) 

/* 03 00 0a 05 0d 00 0e 00 8f e4 5e 00 00 00 00 00 0a 00 52 65 67 72 65 73 73 6f 72 
00 09 00 41 6c 65 78 61 6e 64 72 00 07 00 68 75 74 6b 6f 00 17 00 41 56 53 68 75 74
6b 6f 40 6d 61 69 6c 2e 6b 68 73 74 75 2e 72 75 00  */

00 03      - version number
05 0a      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 0a              - Nick length
52 .. 72 00        - Nick
00 09              - First Name length
41 .. 72 00        - First Name
00 07              - Last Name length
68 .. 6f 00        - Last Name
00 17              - Email length
41 .. 75 00        - Email

Note: This packet change user basic info.

Set user home info (command 0582) 

/* 03 00 82 05 0c 00 0d 00 8f e4 5e 00 00 00 00 00 0d 00 4a 61 6d 62 75 6c 20 31 32 2d 
32 39 00 0b 00 4b 68 61 62 61 72 6f 76 73 6b 00 03 00 46 45 00 07 00 06 00 70 68 6f 6e 
65 00 04 00 66 61 78 00 04 00 73 6f 74 00 a4 09 01 00 01 1b 00 0e 03 4f 00*/

00 03      - version number
05 82      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 0a              - Addr length           
4a .. 39 00        - addr string (Jambul 12-29)
00 0b              - City length           
4b .. 6b 00        - City string (Khabarovsk)
00 03              - State length
46 45 00   - State string  (FE)
00 07              - Country code  (007)
00 06              - phone str length
2d .. 2d 00        - phone string  (------)
00 06              - fax str length
2d .. 2d 00        - fax string (------)
00 06              - sot str length
2d .. 2d 00        - sot string (------)
00 01 09 a4        - index number  (68004)
01                 - gender (01 - female, 02 - male)
00 15              - age (21)
0e         - burth day (14)
03                 - burth month (03)
00 4f              - burth year (79)

Note: This command used to set user "home" info…

Set user home www-page (command 058c) 

/* 03 00 8c 05 0c 00 0d 00 8f e4 5e 00 00 00 00 00 22 00 68 74 74 70 3A 2F 2F 6D 
79 2E 68 6F 6D 65 70 61 67 65 2E 72 75 */

00 03      - version number
05 82      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 0a              - homepage addr length          
68 .. 75 00        - homepage addr string          (http://my.homepage.ru)

Note: This command set new home www-page in user info.

Set user work info (command 0578) 

/* 03 00 78 05 0c 00 0d 00 8f e4 5e 00 00 00 00 00 13 00 54 69 68 6F 6F 6B 65 61 
6E 73 6B 61 79 61 20 31 33 36 00 0b 00 4B 68 61 62 61 72 6F 76 73 6B 00 03 00 46 
45 00 07 00 06 00 4B 68 53 54 55 00 0a 00 73 79 73 20 61 64 6D 69 6E 00 01 00 00 
00 04 00 5f 5f  5f 00 04 00 5f 5f 5f 00 04 00 5f 5f 5f 00 04 00 5f 5f 5f 00 63 00 
00 00 */

00 03      - version number
05 78      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00     - internet client UIN number (not used - reserved)
00 0a              - work addr length              
4a .. 39 00        - work addr string (Jambul 12-29)
00 0b              - work city length              
4b .. 6b 00        - work city string (Khabarovsk)
00 03              - work state length
46 45 00        - work state string (FE)
00 07              - work country code (007)
00 06              - work phone str length
5f .. 5f 00        - work phone string (------)
00 06              - work fax str length
5f .. 5f 00        - work fax string (------)
00 06              - work pager str length
5f .. 5f 00        - work pager string (------)
00 00 00 63     - index number (99000)

Note: This command used to set user "work" info…

Set user work www-page (command 05be) 

/* 03 00 be 05 0c 00 0d 00 8f e4 5e 00 00 00 00 00 15 00 68 74 74 70 3A 2F 2F 77 
77 77 2E 6B 68 73 74 75 2E 72 75 2F 00 */

00 03      - version number
05 be      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 0a              - work homepage addr length             
68 .. 2f 00        - work homepage addr string (http://www.khstu.ru)

Note: This command set new work www-page in user info.

Request offline messages (command 044c) 

/* 03 00 4c 04 02 00 03 8f e4 5e 00 00 00 00 00 00 00 00 00 07 00 00 00 */

00 03      - version number
04 4c      - command code (request all offline messages)
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 00 00 00        - ??? unknown ???
00 00 00 07        - ??? unknown ??? (max number of messages?)

Note: This packed used to ask server send all offline messages to client. 
Each offline message should be confirmed with special command 05 28 and ack.

Change password (command 049c) 

/* 03 00 9c 04 09 00 0a 00 8f e4 5e 00 00 00 00 00 72 00 15 00 70 61 73 73 77 6f 72 64 00*/

00 03      - version number
04 9c      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 09              - new password length
70 .. 64 00        - new password (plain text)

Note: Used to change user password.

Set auth mode (command 0514) 

/* 03 00 14 05 0c 00 0c 00 8f e4 5e 00 00 00 00 00 24 11 00 00 01 */

00 03      - version number
05 14  - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
24 11 00 00        - unknown field (???)
01                 - mode (01 - no auth, 00 - auth)

Note: Used to change security mode.

Search user (command 05c8) 

/* 03 00 c8 05 0b 00 0c 00 8f e4 5e 00 00 00 00 00 ff 01 00 01 09 00 72 65 67 72 
65 73 73 6f 72 00 */

00 03      - version number
05 c8      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
01 ff              - type of search (uin, nick, lname, fname, etc...)
01 00              - type of comparison (is, isn't, contain, etc...)
09 00              - length of searching string
72 65 .. 00        - searching string + 00 (asciiz)

Type of search:
00 ff      - search for UIN
01 ff      - search for NickName
02 ff      - search for FirstName
03 ff      - search for LastName
04 ff      - search for Age
05 ff      - search for City  (work)
06 ff      - search for State (work)
07 ff      - search for Country (work)
08 ff      - search for Company
09 ff      - search for Job title
0a ff      - search for Department
0b ff      - search for City (home)
0c ff      - search for State (home)
0d ff      - search for Country (home)

type of comp:   
00 00      - "contains" search 
01 00      - "doesn't contain" search
02 00      - "is" search
03 00      - "not" search
04 00      - "begins with" search
05 00      - "ends with" search

Note: Used to search user in server database.

Send offline message (command 010e) 

/* 03 00 0e 01 11 00 12 00 8f e4 5e 00 00 00 00 00  8e e4 5e 00 01 00 04 00 2e 2e 2e 00 */

00 03      - version number
01 0e      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 5e e4 8e        - user-recipient (6218894)
00 00              - subcommand or message type
00 04           - message length (optional)
2e 2e 2e 00        - message (optional)

Subcommand:     
MESS_THRU_SERVER = 00 01
URL_THRU_SERVER  = 00 04
YOU_WERE_ADDED   = 03 0c

Added: Message after subcommand should have nick, F and L names, Email, auth_rule separated with #fe

Note: Used to send messages (url, broadcast, wwp and others) thru server

Authorization request (command 0456) 

/* 03 00 56 04 08 00 09 00 8f e4 5e 00 00 00 00 00 78 63 20 00 06 00 49 00 52 
65 67 72 65 73 73 6f 72 fe 41 6c 65 78 61 6e 64 72 53 68 75 54 6b 6f fe 41 56 
53 68 75 74 6b 6f 40 6d 61 69 6c 2e 6b 68 73 74 75 2e 72 75 fe 00 fe */

00 03      - version number
04 56      - command code
00 0b      - sequence number (seq1)
00 0c      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
00 20 63 78        - target uin
00 06              - unknown (???)
00 49              - length of string
xx xx xx 00        - identify string + request string

Ident: String containing nick, firstname, lastname, email, auth_rule, request string.
This fields in string are separated with 0xfe byte
 (Reg#fe#Alexandr#fe#Shutko#AVShutko@i.am#fe#Auth me#00). 

Note: Used to request authorization from user.

Report client state command (command 0528) 

/* 03 00 28 05 02 00 03 00 8f e4 5e 00 7c ab 5c 00 00 */

00 03      - version number
05 28      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 5c ab 7c        - timestamp (date and time) = sec from 1900.
00              - client state (00 - disabled, 01 - maximized, ff - minimized to tray)

Note: Client send this packet after login and after each state change (when you 
press minimize or double click on ICQ icon in tray. 

Packet fragment (command 05d2) 

/* 03 00 d2 05 02 00 03 00 8f e4 5e 00 00 00 00 00 02 01 03 00 28 05 02 00 03 00 8f e4 5e 00 00 */

00 03      - version number
05 d2      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - zero (reserved).
02              - total number of fragments
01                 - this fragment sequence index
00 03              - fragment begin
...........


Note: Sometimes client want to send big packets (greater than 450 bytes)... 
It is use packet fragmentation for that - big messages, departments list, etc. 
Max packet size = 450 bytes 

Read administrator's registration notes (command 05dc) 

/* 03 00 dc 05 01 00 10 00 00 00 00 00 00 00 00 00 */

00 03   - version number
04 dc      - command code
00 01      - sequence number (seq1)
00 10      - sequence number (seq2)
00 00 00 00        - zero field (requester doesn't have UIN)
00 00 00 00        - zero field

Note: This is the first command used to obtain administrator's registration notes and common work info.

Send registration form (command 05e6) 

/* 03 00 e6 05 02 00 14 00 00 00 00 00 00 00 00 00 7a 00 0b 00 50 55 50 4B 49 4E 
5F 56 41 53 00 06 00 56 41 53 41 00 50 55 50 4B 49 4E 00 16 00 50 55 50 4B 49 4E 
40 45 4D 41 49 4C 2E 4B 48 53 54 55 2E 52 55 00 02 0a 00 48 4F 4D 45 5F 41 44 44 
52 45 53 53 00 0b 00 4B 48 41 42 41 52 4F 56 53 4B 00 04 00 46 41 52 ff ff 0b 00 
48 4F 4D 45 5F 50 48 4F 4E 45 00 09 00 48 4F 4D 45 5F 46 41 58 00 09 00 48 4F 4D 
45 5F 53 4F 54 00 c6 09 01 00 02 0e 01 14 00 62 4f 00 0f 00 57 57 57 2E 50 55 50 
4B 49 4E 2E 4F 52 47 00 13 00 54 69 68 6F 6F 6B 65 61 6E 73 6B 61 79 61 2C 20 31 
33 36 00 10 00 57 4F 52 4B 5F 4B 48 41 42 41 52 4F 56 53 4B 00 03 00 46 41 00 07 
00 06 00 4B 68 53 54 55 00 0a 00 53 59 53 5F 41 44 4D 49 4E 00 01 00 00 00 0b 00 
57 4F 52 4B 5F 50 48 4F 4E 45 00 09 00 57 4F 52 4B 5F 46 41 58 00 0b 00 57 4F 52 
4B 5F 50 41 47 45 52 00 c6 09 01 00 14 00 68 74 74 70 3A 2F 2F 77 77 77 2E 6B 68 
73 74 75 2E 72 75 00 0e 00 45 58 54 45 4E 44 45 44 5F 44 41 54 41 00 */

00 03      - version number
05 e6      - command code
00 01      - sequence number (seq1)
00 10      - sequence number (seq2)
00 00 00 00        - zero field (requester doesn't have UIN)
00 00 00 00     - zero field
7a 00              - client version
0b 00              - NickName length
xx .. xx 00        - NickName string
06 00              - FName length
xx .. xx 00        - FName string
07 00              - LName length
xx .. xx 00        - LName string
16 00              - Email length
xx .. xx 00        - Email string
02                 - Gender (02 - male, 01 -female, 00 - not filled)
0a 00              - Home addr length
xx .. xx 00        - Home addr string
0b 00              - Home city length
xx .. xx 00        - Home city string
04 00              - Home state length
xx .. xx 00        - Home state string
07 00              - Home country 
0b 00              - Home phone length
xx .. xx 00        - Home phone string
09 00              - Home fax length
xx .. xx 00        - Home fax string
09 00              - Home sot length
xx .. xx 00        - Home sot string
c6 09 01 00        - mail index number
02 0e 01 14        - burth day and month
00 62              - age
00 4f              - burth year
0f 00              - Home www page length
xx .. xx 00        - Home www page string
13 00              - Work addr length
xx .. xx 00        - Work addr string
10 00           - Work city length
xx .. xx 00        - Work city string
03 00              - Work state length
xx .. xx 00        - Work state string
07 00              - Work country code length
06 00              - organization name length
xx .. xx 00        - organization name string
0a 00              - Job title length
xx .. xx 00        - Job title string
03 00              - Work state length
xx .. xx 00        - Work state string
01 00 00 00        - unknown field
0b 00              - Work phone length
xx .. xx 00        - Work phone string
09 00              - Work fax length
xx .. xx 00        - Work fax string
0b 00              - Work pager length
xx .. xx 00        - Work pager string
c6 09 01 00        - Work mail index
14 00              - Work www page length
xx .. xx 00        - Work www page string
0e 00              - registration ext data length
xx .. xx 00        - registration ext data string

Note: This command used to send registration data to server.

Invisible list send (command a406) 

/* 03 00 06 a4 06 00 07 00 8f e4 5e 00 00 00 00 00 03 8e e4 5e 00 8d e4 5e 00 8c e4 5e 00 */

00 03      - version number
a4 06      - command code
00 02      - sequence number (seq1)
00 03      - sequence number (seq2)
00 5e e4 8f        - intrAnet client UIN number
00 00 00 00        - internet client UIN number (not used - reserved)
03                 - number of users in contact list
00 5e e4 8e        - UIN number 1 (6218894)
00 5e e4 8d        - UIN number 2 (6218893)
00 5e e4 8c        - UIN number 3 (6218892)

Note: This comman used to inform server of invisible client contact list. Server will 
not send notification to users from this list if client changed status.