ICQ: 20 years is not the limit

A year ago, we recalled how, from release to release, ICQ was undergoing plastic surgery and face lifting. But today is the anniversary - ICQ is 20 years old, this is not a cat sneezed! For a whole generation has grown along with the progenitor of messengers. And in honor of such an event, we decided to look in retrospect what technologies have been used in ICQ for two decades.
Over the past years, the network has not much information on the first years of development of ICQ. The first version, released on November 15, 1996 by four Israeli high school students, was as simple as three rubles. In fact, she could only exchange messages. And the client connected to the icq.mirabilis.com server, to the UDP port 4000.

A year later, by December 1997, there were client applications for Windows 3.1x, 95, NT, and Macintosh. The total number of users exceeded 5 million, the daily audience reached 1.3 million people, 300,000 users were online at the same time. Today it seems ridiculous against the background of social networks and instant messengers in every mobile phone. But for a minute - 1997, the dial-up Internet, no broadband access for you, from mobile gadgets to a wide audience so far, mostly pagers are available.
In 1998, the ICQ user base increased by 1 million people every three weeks. The almost explosive growth of the audience forced developers to quickly develop the client and the ICQ protocol. The microblogging function has appeared in the ICQ 98 version, the re-sending of undelivered messages in the 98SE.

In mid-1998, Mirabilis was acquired by AOL Corporation (America Online) for $ 407 million.
Only 2.5 years after its appearance, Aska version 99a finally acquired a minimal gentlemanly set of functions: saving the history of correspondence, searching for users, sending emails, creating groups in your contact list and so on.

The ICQ protocol combined the features of p2p and client-server architectures. Initially, encryption was not used at all, that is, data was transferred openly. Anyway, the first few versions of the protocol were full of holes, like a sieve .
By the time ICQ 99b was released, the fifth version of the protocol was already in use. It should be clarified that the very first version was not used in public releases, that is, formally, ICQ was published with the second version of the protocol. In the third version, a checksum check appeared, an example of a packet header:
2 Bytes - This is the Version of the protocol = 03 00 (Major, Minor)
2 Bytes - This is the Function code. The ones I know are listed below.
2 Bytes - First Sequence Code \ These are usually the same
2 Bytes - Second Sequence Code /
4 Bytes - This is the user ID of the client user
4 Bytes - These four bytes are ICQ's weak attempt at security:
to get these do the following:
check1 = ( data[8] << 24) | ( data[4] << 16 ) | ( data[2] << 8 ) | ( data[6] );
offs1 = Random % length; // offset into packet
offs2 = Random % 256; // offset into magic data
check2 = ( offs1 << 24 ) | !( data[offs1] << 16 ) | ( offs2 << 8) | !( magic[offs2] );
check = check1 ^ check2; // XOR the two checksIn the fourth version, data encryption was implemented:
2 Bytes - Version Number (not Encrypted) = 04 00 (Major, Minor)
2 Bytes - Random number (Not Encrypted)
***** Everything from this point to the 1/4 mark is encrypted *****
2 Bytes - Always 00 00 un-encrypted
- Since the key is xored to encrypt - whatever numbers are here
are the first 2 bytes of the encryption Key.
2 Bytes - Command Code.
2 Bytes - First Sequence Code
2 Bytes - Second Sequence Code
4 Bytes - User ID Number
4 Bytes - This is a Checksum. It is calculated the same as above
- The packet is encrypted by XORing 1/4 of the packet with a key
- The Key is calculated by multiplying the length * 0x66756B65 and
adding the check value.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4 | 0 | RANDOM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Everything below this point is encrypted
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ZEROS | COMMAND |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SEQUENCE | SECOND SEQUENCE |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| UIN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CHECK |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+When establishing a connection with the server, the client sent him his IP, TCP port, user password and contact list. Then the client confirmed the online status and requested the status of all users from the list. All data exchange with the server was carried out through UDP.
To exchange messages with other people, send files, and the like, a client-to-client TCP connection was established. Clients received IP and ports of each other from the server.

The sixth version of the protocol, which appeared in ICQ 2000b, was completely redesigned, encryption was strengthened. Thanks to the new protocol, ICQ learned to call phones, send SMS and paging messages. Also, users were able to send requests to add to the list of contacts to other users.

In 2002, AOL patented the OSCAR protocol . All packets forwarded through this protocol are equally encapsulated in FLAP containers containing information about the packet size, channel and serial number in the packet sequence. Today, this protocol has not been used for a long time, WIM is used instead.
The next milestone was the appearance in 2004 of the first mobile version of ICQ created for Symbian S60. Although, in fairness, since 1998 there was a beta version for Palm OS. How many remembers - and knows - such handhelds?

The next year, the fifth version of the desktop client was lowered from the stocks. Now users were able to arrange voice chats, that is, ICQ has become an even more versatile messenger. And in version 5.1, the voice function was improved using Global IP Solutions technology .

In 2007, ICQ 6 was released, the interface of which was made on Boxely ’s proprietary AOL XML / CSS engine .

In 2009, ICQ appeared under Windows Mobile. The closest relative of the modern mobile ICQ.

From 2007 to 2010, ICQ practically did not develop, AOL abandoned it. In 2010, ICQ was acquired by Mail.Ru Group, and already in January 2011, the 7th version was released, in which integration with Facebook, Twitter, Gmail, Youtube, Flickr and Mail.Ru Mail appeared.

Further changes began to pour in one after another. Starting from version 7.7, it became possible to enter ICQ by phone number rather than UIN. Farewell, the six signs for which once paid good money! Also now it was possible to connect with one account on mobile and desktop clients. And a little later they screwed up the functions of sending photos and videos to friends from the phone and Facebook.
In March 2012, ICQ was officially freed from advertising. At all.
At the end of 2012, ICQ 8 was released, in which it became possible to call mobile and landline numbers. By the way, today ICQ developers have their own team working on VoIP: thanks to it, it was possible not only to switch from GIPS to WebRTC, but also to upgrade it significantly, actually creating a new engine. Also appeared integration with Russian social networks - VKontakte and Odnoklassniki. In the next releases, the function of sending files is improved, the weather widget has appeared.

Since 2014, global changes have begun in ICQ: completely new applications for different platforms, a new protocol, new features and a new user interface, open source code have been released. In the May version this year, ICQ for the first time in the world among instant messengers acquired end-to-end encryption of voice and video calls. The ZRTP protocol is responsible for this ; it does not allow decrypting data either on ICQ servers or on the provider side.

July 2016 - the “History” function appeared. Now you can make tiny videos or collections of photos that your friends and subscribers can watch in a shared stream within 24 hours after creation. Naturally, reposts and comments are available.
In August 2016, a built-in editor appeared in ICQ, allowing you to add various effects to photos and videos, including texts, patterns and stickers. Moreover, the program analyzes the coordinates when shooting, and itself offers a variant of the thematic badge.

Also, for the first time among instant messengers, ICQ integrated with neural networks, which allow one-click processing of the captured photo in one of a couple of dozens of visual styles. This functionality is implemented using the Vinci mobile app API .


In September of this year, the function of superimposing two- and three-dimensional masks appeared when communicating in the video chat. The application real-time analyzes the image from your camera and on the fly adapts the mask to the position of the head and facial expressions. Face recognition is the responsibility of VisionLabs technology .
gif


Finally, the latest news from the world of ICQ technologies: neural networks now allow you to process not only photos, but also videos you shot. This is done through integration with one of our notorious Artisto services .

In addition to all of the above, today in ICQ implemented:
- end-to-end correspondence history: all your messages are available on all devices and clients where you log in;
- unlimited live chat: you can create or join any public chat, the number of participants in them is unlimited;
- short voice messages with conversion to text: you can tell ICQ a phrase, it recognizes it and converts it into a text message, this function is based on the same technology as in Siri.
This is a brief overview of the opportunities and technologies for 20 years of development of one of the world's first mass messengers. We hope that after another 20 years we will remember something completely fantastic.