**************************************************************************
* (unofficial) specification of the ICQ protocol (V3)                    *
**************************************************************************

Version: 0.01
Compiled by: Henrik Isaksson <hki@hem1.passagen.se>

All information in this document is based on discussions on the icq-devel
mailing list, and UDP packet monitoring, wich complies with Mirabilis'
lisence agreement.

DISCLAIMER and LICENSE AGREEMENT
================================

This document and the information present herein is provided by
Henrik Isaksson ("the Author") for your personal use only. You agree to
the full responsibility for the results of your use of this document or
the information present herein.

By using this document or the information present herein, you accept
the terms of this license agreement.

THIS INFORMATION IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR MAKES NO
WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THOSE OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THIS
DOCUMENT AND THE INFORMATION PRESENT HEREIN. THE AUTHOR DOES NOT WARRANT,
GUARANTEE OR MAKE ANY REPRESENTATIONS REGARDING THE USE OR THE RESULTS OF
THE USE OF THIS DOCUMENT OR THE INFORMATION PRESENT HEREIN, IN TERMS OF THE
ACCURACY, RELIABILITY, QUALITY, VALIDITY, STABILITY, COMPLETENESS,
CURRENTNESS, OR OTHERWISE. THE ENTIRE RISK OF USING THE INFORMATION PRESENT
IN THIS DOCUMENT IS ASSUMED BY THE USER.

IN NO EVENT WILL THE AUTHOR BE LIABLE TO ANY PARTY (i) FOR ANY DIRECT,
INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
INTERRUPTION, LOSS OF PROGRAMS OR INFORMATION, AND THE LIKE), OR ANY OTHER
DAMAGES ARISING IN ANY WAY OUT OF THE AVAILABILITY, USE, RELIANCE ON, OR
INABILITY TO USE THIS DOCUMENT OR THE INFORMATION PRESENT HEREIN, EVEN IF
THE AUTHOR HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, AND
REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, OR OTHERWISE;
OR (ii) FOR ANY CLAIM ATTRIBUTABLE TO ERRORS, OMISSIONS, OR OTHER
INACCURACIES IN, OR DESTRUCTIVE PROPERTIES OF ANY INFORMATION.

===

V3 - messages sent to the client.

 V3 Message header:

 Length   Content (if fixed)    Name             Description
 ------   ------------------    ----             -----------
 2 bytes  03 00                 VERSION          ICQ protocol version
 2 bytes  xx xx                 COMMAND          Code for service the server should provide
 2 bytes  xx xx                 SEQ_NUM1         First sequence number
 2 bytes  xx xx                 SEQ_NUM2         Second sequence number
 4 bytes  xx xx xx xx  UIN   UIN
 4 bytes  xx xx xx xx  CHECK   Checksum

 variable                       PARAMETERS       0 or more parameters (depending on COMMAND)

----

 MULTIPLE_PACKET (12 02)
 -----------------------

 Length   Content (if fixed)  Name  Description
 ------   ------------------  ----  -----------

 1 byte   xx        NUM_PACKETS Number of packets
 2 bytes  xx xx        LENGTH  Length of first packet
 variable         PKT_1  First packet
 2 bytes  xx xx        LENGTH  Length of second packet
 variable        PKT_2  Second packet
 ...
 2 bytes  xx xx        LENGTH  Length of n:th packet
 variable        PKT_N  N:th packet

 The server seems to use this method whenever it has more than one packet
 to deliver.
 The CHECK fields of the included packets are all set to NULL.


 USER_FOUND (8C 00)
 ------------------

 Length   Content (if fixed)  Name  Description
 ------   ------------------  ----  -----------

 4 bytes  xx xx xx xx       FOUND_UIN  UIN of the found user
 2 bytes  xx xx        NICK_LENGTH Length of nickname
 variable        NICK  Nickname, NULL terminated
 2 bytes  xx xx        FIRST_LENGTH Length of first name
 variable        FIRST_NAME First name, NULL terminated
 2 bytes  xx xx        LAST_LENGTH Length of last name
 variable        LAST_NAME  Last name, NULL terminated
 2 bytes  xx xx        EMAIL_LENGTH Length of email adress
 variable        EMAIL  EMail, NULL terminated
 1 byte   xx        AUTHORIZE  User's auth status
      00 = Authorization required
      01 = No auth. required
 1 byte   00        X1  *Unknown*

 One USER_FOUND packet is sent for every found user.

 END_OF_SEARCH (A0 00)
 ------------------

 Contains no additional data other than the packet header.
 This command is sent to the client when there are no more users to be
 found.


 NEW_USER_UIN (46 00)
 --------------------

 Contains no additional data other than the packet header.
 This packet reports the UIN after a succesful registration
 The UIN field in the header contains the new UIN.


 ACKNOWLEDGE (0A 00)
 -------------------

 Contains no additional data other than the packet header.
 This is sent back every time a packet is sent by the client to the
 server. The sequence numbers in the header of this are set to the same
 values as the corresponding fields in the packet being acknowledged.


 LOGIN_REPLY (5A 00)
 -------------------

 Contains no additional data other than the packet header.
 This packet is sent to the client when a valid login packet has been
 recieved by the server.


 -------------------------------------------------------------------------



[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]