Oscar Protocol Specification

Documentation written by Mark Doliner, unless otherwise noted.
Much thanks to Adam Fritzler for writing Pidgin's oscar protocol
plugin and oscar documentation.
A lot of this was written by tracing through the source code of
Pidgin's oscar protocol plugin :-). I'm
not trying to document oscar completely, I'm really just trying to fill
in the gaps left open by other, more useful documentation.

Overview:

Family 0x0004 is used for messaging. As in, normal instant messages sent to other clients through the server. It's also used for various other things that are all basically one client talking to another client through the server. Examples of "various other things" are file transfer negotiation, direct IM negotiation, RTF messages, and old-style ICQ authorization.

Notes:

This is all documented either by first hand packet captures or by tracing through libfaim.

Overview:

This family is the new search family. I guess it's supposed to replace 0x000a. Why they made a whole fricken new family for it is beyond me. Or, maybe they did it so they can rate limit the searches more (to slow down would-be spammers), and make you connect to a different server.

Overview:

This family is used to handle various data which can be stored on the AIM servers.
Things that can be stored are your buddy list (with groups and buddy comments), your permit and
deny lists, your permit/deny setting, and your visibility setting.

Notes:

The information is stored as "items." The structure is described here.

Buddy ID#s and group ID#s are arbitrary, though some clients tend to do it sequentially. They cannot, however, be 0x0000, and each ID# must be unique to the item that contains it (ie. two buddies in the same group can not have the same ID#, but two buddies in different groups can have the same ID#. Also, two groups in the list can not have the same ID#)(actually, we're
still not clear as an un-muddied lake on this)(it's possible that the ID#s are some kind of hash of the name).

For @mac.com screen names to show up in your buddy list, you must be using a family version of 3 or later (the most recent is currently 4). If you are using 1 or 2, AIM sends you your buddy list, but where you would normally have "someone@mac.com," they send "PleaseUpgrade000." The BID and GID are the same, and the list that's actually stored on the server still contains the someone@mac.com screen name--you just have to sign on with a client supporting a newer version of the SSI protocol.

Alex Yacoub had a big part in writing this, and helping figure out the protocol.

Overview:

This family is used for information about the email account associated with your screenname. Unbeknowest to many AIM users, but knowest to me, your AIM account semi-comes with an email address. It is yourscreenname@netscape.net. I think you might have to activate it, I'm not sure.