|The ICQ Protocol Site|
26 February 2005: This page is obsolete. Out of date. It will never be updated again (if that is not obvious from this list of "news" :-)). It's probably only interesting for historical reasons.
As far as I understand, the best description of the current ICQ protocol is available on Alexandr Shutko's web site. If anyone want's me to add some additional links to up-to-date information pages, tell me and I'll see what I can do.
Good luck, all ICQ clone writers! It's strange that you are still needed, more than 6 years after I first reverse engineered the ICQ protocol. I could never have guessed at that time that the world would still be split using severel incompatible, proprietary (and still, more or less lousy) protocols.
15 July 2004: The ICQ Protocol Site moved to a new host. The old address at http://www.student.nada.kth.se/~d95-mih/icq/ is now deprecated, and will shortly stop functioning.
2 September 2000: Some rotten links replaced. Added link to Jabber. Unfortunately I'm not able to keep this site more up to date than this. Apologies to all that sent me info about outdated links.
6 January 2000: French translation added.
5 December 1999: At last, the ICQ Protocol page has been updated. It's almost a year since the last major update, and it's far too long ago, I know. Sorry. I hope the page is a bit more functional now. I have checked and updated all links. If you find a dead link, please send me an email.
Thanks to "MadDany", this page is now translated into French!
Thanks to Magnus Müller, this page is now translated into German!
Thanks to Alex Voitov, this page is now translated into Russian!
Thanks to Alfredo Rahn, this page is now translated into Spanish!
This page is intended as a source for information about the protocol used by Mirabilis ICQ client and server, and about the different clones that have been written using this protocol. It can also be used as a good starting point for anyone who whishes to participate in the development of ICQ clones.
The page consists of the following parts:
The ICQ Protocol specification
The ICQ protocol has passed through several generations or versions, each of them quite different from the preceding. So far it's possible, I'll try to present the information here according to the version of the protocol it describes.
Version 1 is obsolete.
Version 2 is the oldest version still in use (by e.g. the Java client). The basic documentation for V2 can be found here. Since most of the structure still applies for newer versions, it is recommended reading even if you're interested in V4/V5.
Note that this information is unofficial, and is not supported by Mirabilis. Please read the legal information about the ICQ specification.
Mirabilis old V2 client (for Windows) can be found here.
The ICQ V2 protocol. Specification version 0.91, last updated 12 April 1998 (minor update at 11 May 1998). Text file (40 kB).
Some additions to this specification, some of which are applicable to V3/V4 as well, can be found in this directory. I recommend you check them all out.
Version 3 was never used seriously by clients before it was replaced by V4. However, the server still replies with V3 packet to V4 clients.
The best compilation of the V3/V4 protocol can be found at Meistern's ICQ Hacking Page. (link seems to be broken, sorry) I have also collected some of the pieces of information that has been sent to the icq-devel list. I have not, however, tried to organize them in any way (due to lack of time at the moment). You may want to check them out, anyway. They are in this directory, named after the author, and with a -v2 or -v4 if the message is about version 2 or 4 of the protocol. The latest postings on V4 have been collected in one file regardless of author, v4-notes.txt. I think this contains the most important information about V4, but I urge you to check out all files.
There is an excellent description of the version 5 protocol available at Henrik Isakssons web site.
There is a spy tool which dumps V5 packets as hex dumps, available here.
Contributing to the ICQ documentation
If you want to contribute to the documentation of the ICQ protocol, you could either join the icq-devel list or, if you have made any progress in understanding parts of the protocol not documented here, send me an e-mail with subject "ICQ Update". With some browsers and mail readers, you may do that automagically using this link.Otherwise you'll have to e-mail me as normal and enter the subject manually.
Please note! Sending me a mail with this subject and a message saying "plz gimme updated icq spec" or something similar, will only make me annoyed, and will NOT make me send you any newer version of the protocol. The freshest version is always available at this web page. If you want to receive up to date information about the ICQ protocol, then I suggest you join the icq-devel list.
A multitude of different ICQ clones has been written in the last few month. Here are links to those that I know about.
A good starting point for Linux clones:
A starting point for Amiga clones:
If you are going to write a client on your own, why reinvent the wheel? Here are som libraries you might want to use instead.
The icq-devel mailing list
I'm maintaining a mailing list about issues related to the ICQ protocol and ICQ clone programming. The list now has a web page of it's own. Please check it out for information about the list.
Other ICQ links of interest
ICQ spoofing and sniffing
Related protocolsThere exists many protocols similar to the ICQ protocol. Even though none of them is as wide-spread as ICQ, they may be important anyway. At least two of them (RVP/PIP and ICGnu) is still under development.
Instant Messaging and Presence Protocol (IMPP)
The IMPP (formerly known as RVP (Rendez-vous Protocol) / PIP (Presence Information Protocol) is an open protocol being developed by IETF (Internet Engineering Task Force). They've been working on this for quite some time, and should have avoided all mistakes that ICQ has made. If you feel that haven't, they'd surely be glad to hear. I recommend everyone interested in "enhancing" the ICQ protocol to first check if IMPP doesn't already do what you want to do.
The IMPP Work Group has a web site available, where you can find more information on IMPP.
You can also find more information on the following web sites:
A lot of ever-changing drafts can also be found at IETF's web site. I recommend that you visit the search page and enter "impp" as the search string, to be sure to get the most up-to-date documents.
Jabber is a ambitious large-scale open source project to create an unified instant messaging protocol, with connections (known as transports) to other IM services, such as ICQ and AIM.
ICGnu is another initiative (why?) to create an open protocol for presence notification and instant messaging. The project seem to have disappeared now, however.
AIM (AOL Instant Messenger)
Some important understanding about the AIM (AOL Instant Messenger) protocol has been achieved, and writing of a clone has been started. More information about the AIM Protocol and the FAIM clone can be found at Adam Fritzler's web pages.
There have been some discussion about trying to decode the Pagoo protocol (which are similar to ICQ). However, as far as I know, no information is known at the moment about this protocols. If you know something about them, please send me an e-mail!
Since this page was created 12 April 1998, it has been visited [COUNTER DISABLED] times.
The ICQ protocol analysis was written while I was studying Computer Science at Datasektionen (School of Computer Science) on The Royal Institute of Technology in Stockholm, KTH.
This page last updated at
26 February 2005
Copyright © 1998-2005 Magnus Ihse Bursie <firstname.lastname@example.org>.
[Go to Magnus Ihse Bursie's homepage]