Jump to content

OSCAR protocol

From Alfawiki
Open System for Communication in Realtime (OSCAR)
Company typeProprietary protocol
IndustryInstant messaging
Founded1990s
FounderAOL
ProductsAIM, ICQ

Open System for Communication in Realtime (OSCAR) represents AOL's exclusive protocol for instant messaging and presence information, powering services such as AOL's AIM and ICQ. Contrary to what the name suggests, this protocol is not open source but remains proprietary. AOL actively prevented competitors including Microsoft, XMPP, and Cerulean Studios from developing compatible client software.

In 2002, AOL collaborated with Apple to incorporate OSCAR and AOL’s code libraries into Apple's iChat application. This integration allowed iChat users to directly communicate with AIM and ICQ contacts. Additionally, users of Apple's .Mac service gained the ability to log into AIM using their .Mac email credentials—a feature that persisted through Apple’s subsequent MobileMe service.

By 2009, numerous components of OSCAR had been reverse-engineered and implemented by third-party developers. AOL expanded OSCAR’s capabilities beyond simple messaging by introducing features such as server-managed buddy lists, user icons, and file transfers facilitated through Bonjour.

On March 6, 2006, AOL launched an AIM SDK alongside a developer portal to support plugin creation for AIM Triton and other custom clients utilizing the OSCAR protocol. However, comprehensive documentation of the protocol was initially withheld.

On March 5, 2008, AOL released partial documentation of the OSCAR protocol. Following this, Google enabled users to sign into the AIM network via the Google Talk client embedded in Gmail.

Packet structure

OSCAR packets follow a uniform encapsulation format. All integers of 16, 32, and 8 bits are unsigned and encoded in big-endian order.

FLAP header

Each packet is wrapped within a Frame Layer Protocol (FLAP) container that specifies packet size, channel designation, and sequence number.

Offset (hex) Field Type/Size (bytes) Description
00 FLAP ID byte/1 Constant value 2A indicating packet start.
01 Channel byte/1 Channels: 1 = login, 2 = SNAC layer, 3 = error, 4 = disconnect.
02 Sequence number int16/2 Sequentially increments per packet; cycles after FFFF.
04 Data size int16/2 Size of payload excluding FLAP header.

SNAC data

Channel 2 packets generally contain a single SNAC (Simple Network Atomic Communication) element without an explicit length field.

Offset (hex) Field Type/Size (bytes) Description
00 Foodgroup int16/2 Broad classification of packet.
02 Type int16/2 Specific subtype within the category.
04 Flags int16/2
06 Request ID int32/4 Identifier for requests; clients must avoid setting the highest bit.

Implementations

Programming language Implementations
C libpurple
GnomeICU
C# NOscar
C++ QOscar (Qt)
C# 2.0 OscarLib
Go retro-aim-server
aim-oscar-server
Java joscar
Instant Messenger Lib
daim
Objective-C LibOrange
OCaml mlOscar
Python TwistedWords
Perl Net::OSCAR
PHP WebIcqPro


See also

External links