Protocols/OSCAR/UUIDs: Difference between revisions

From NINA Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 693: Line 693:
</pre>
</pre>


 
== ICQ Message Extensions ==





Revision as of 06:34, 13 February 2021

OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)


OSCAR uses UUIDs in several places to express what kind of capabilities a client has and what features it would like the server to support. The nice thing about UUIDs is there does not have to be a central registry since they are unique when created. There are many websites and tools out there that will create a UUID. UUIDs are also sometimes known as GUIDs.

UUIDs are transmitted as 16 bytes of binary data; however in documents they are written down in string form like 09460000-4C7F-11D1-8222-444553540000.

At some point it was decided that full UUIDs were too verbose for common capabilities, so AIM uses both full UUIDs and what are called "short UUIDs" or "Short Caps". A "Short Cap" is really a UUID of the form 0946XXYY-4C7F-11D1-8222-444553540000 where XXYY is the short cap. A client receives short caps if it asserts the short cap capability. If a client does not assert the short caps UUID, it will get most caps in long form. Some APIs only take UUIDs In those cases the long form of a short cap should be sent.

Client and library developers should feel free to create valid new UUIDs, just do not create new "Short Caps". If developers would like to publish their UUIDs and what they mean, we will be happy to document them here.

Name UUID Notes
SHORT_CAPS 09460000-4C7F-11D1-8222-444553540000 Client support short caps
SECURE_IM 09460001-4C7F-11D1-8222-444553540000 Client supports SECURE_IM
XHTML_IM 09460002-4C7F-11D1-8222-444553540000 Client supports XHTML profile and ims instead of AOLRTF
RTCVIDEO 09460101-4C7F-11D1-8222-444553540000 Client supports SIP/RTP video
HAS_CAMERA 09460102-4C7F-11D1-8222-444553540000 Client has a camera
HAS_MICROPHONE 09460103-4C7F-11D1-8222-444553540000 Client has a microphone
RTCAUDIO 09460104-4C7F-11D1-8222-444553540000 Client supports RTCAUDIO
HOST_STATUS_TEXT_AWARE 0946010A-4C7F-11D1-8222-444553540000 Client supports new status message features
RTIM 0946010B-4C7F-11D1-8222-444553540000 Client support "see as I type" IMs
SMART_CAPS 094601FF-4C7F-11D1-8222-444553540000 Client only asserts caps for services it is participating in
FILE_TRANSFER 09461343-4C7F-11D1-8222-444553540000 File transfer
DIRECT_ICBM 09461345-4C7F-11D1-8222-444553540000 P2p ims
FILE_SHARING 09461348-4C7F-11D1-8222-444553540000 File sharing
SUPPORT_ICQ 0946134D-4C7F-11D1-8222-444553540000 Client supports talking to ICQ users

From Aleksandr Shutko: Capabilities

 Capabilities   


 

     Capability is a 16-byte array that represent specific ability of IM client (AIM or ICQ). For example there is RTF-capability meaning that client supports RTF messages. Each client has its own capability list and it use |SNAC(02,04) to send this list to server.

     All native clients was built using COM technology. So capability is a CLSID - ID of client COM object that handle specific client ability (RTF-messages, buddy icons, chat, crypting, games). Here is the list of known CLSIDs:


(AIM) {09461341-4C7F-11D1-8222-444553540000} 

Client supports voice chat. Currently used only by AIM service and AIM clients.


(AIM) {09461342-4C7F-11D1-8222-444553540000} 

Client supports direct play service. This capability currently used by AIM service and AIM clients.


(AIM) {09461343-4C7F-11D1-8222-444553540000} 

Client supports file transfer (can send files). Currently used only by AIM service and AIM clients.


(ICQ) {09461344-4C7F-11D1-8222-444553540000} 

Something called "route finder". Currently used only by ICQ2K clients.


(AIM) {09461345-4C7F-11D1-8222-444553540000} 

Client supports DirectIM/IMImage. This capability currently used by AIM service and AIM clients.


(AIM) {09461346-4C7F-11D1-8222-444553540000} 

Client supports avatar service. This capability currently used by AIM service and AIM clients.


(AIM) {09461347-4C7F-11D1-8222-444553540000} 

Client supports stocks (add-ins). This capability currently used by AIM service and AIM clients.


(AIM) {09461347-4C7F-11D1-8222-444553540000} 

Client supports stocks (add-ins). This capability currently used by AIM service and AIM clients.


(AIM) {09461348-4C7F-11D1-8222-444553540000} 

Client supports filetransfers (can receive files). This capability currently used by AIM service and AIM clients.


(ICQ) {09461349-4C7F-11D1-8222-444553540000} 

Client supports channel 2 extended, TLV(0x2711) based messages. Currently used only by ICQ clients. ICQ clients and clones use this GUID as message format sign. Trillian client use another GUID in channel 2 messages to implement its own message format (trillian doesn't use TLV(x2711) in SecureIM channel 2 messages!).


(AIM) {0946134A-4C7F-11D1-8222-444553540000} 

Client supports games. This capability currently used by AIM service and AIM clients.


(AIM) {0946134A-4C7F-11D1-2282-444553540000} 

Indeed, there are two of games caps. The previous appears to be correct, but in some versions of winaim, this one is set. Either they forgot to fix endianness, or they made a typo. It really doesn't matter which because the meaning of them is the same.


(AIM) {0946134B-4C7F-11D1-8222-444553540000} 

Client supports buddy lists transfer. This capability currently used by AIM service and AIM clients.


(AIM) {0946134D-4C7F-11D1-8222-444553540000} 

Setting this lets AIM users receive messages from ICQ users, and ICQ users receive messages from AIM users. It also lets ICQ users show up in buddy lists for AIM users, and AIM users show up in buddy lists for ICQ users. And ICQ privacy/invisibility acts like AIM privacy, in that if you add a user to your deny list, you will not be able to see them as online (previous you could still see them, but they couldn't see you.


(AIM) {0946134E-4C7F-11D1-8222-444553540000} 

Client supports UTF-8 messages. This capability currently used by AIM service and AIM clients.


(ICQ) {97B12751-243C-4334-AD22-D6ABF73F1492} 

Client supports RTF messages. This capability currently used by ICQ service and ICQ clients.


(ICQ) {A0E93F37-4C7F-11D1-8222-444553540000} 

Unknown capability This capability currently used only by ICQ2001/ICQ2002 clients.


(ICQ) {10CF40D1-4C7F-11D1-8222-444553540000} 

Unknown capability This capability currently used only by ICQ2002 client.


(ICQ) {2E7A6475-FADF-4DC8-886F-EA3595FDB6DF} 

Unknown capability This capability currently used only by ICQ2001 client.


(ICQ) {563FC809-0B6f-41BD-9F79-422609DFA2F3} 

Unknown capability This capability currently used only by ICQLite/ICQ2Go clients.


(AIM) {748F2420-6287-11D1-8222-444553540000} 

Client supports chat service. This capability currently used by AIM service and AIM clients.


(ICQ) {F2E7C7F4-FEAD-4DFB-B235-36798BDF0000} 

Client supports trillian SecureIM channel-2 messages. This capability currently used by Trillian clients.


(ICQ) {97B12751-243C-4334-AD22-D6ABF73F14xx} 

This is not cpability at all. This GUID used by SIM/Kopete clients to detect same clients version.


From Aleksandr Shutko: Changes in new AIM clients

 Changes discovered in new AIM clients by John Roark   

 

 I have been investigating the latest versions of AIM (5.2.3277) and
 found that capability CLSIDs are not passed with BUDDY__ARRIVED
 anymore... That is TLV(0x000D) still comes with SNAC(03,0B) but it only
 contains CLSIDs not of the form {0946xxxx-4C7F-11D1-8222-444553540000}
 like the chat CLSID {748F2420-6287-11D1-8222-444553540000}. instead
 SNAC(03,0B) contains a new TLV of type 0x0019 that contains a list of
 two byte CLSID diffs for example the following CLSIDs:

 0946134A 4C7F 11D1 8222 444553540000
 0946134B 4C7F 11D1 8222 444553540000
 0946134D 4C7F 11D1 8222 444553540000
 09461341 4C7F 11D1 8222 444553540000
 09460000 4C7F 11D1 8222 444553540000
 09461343 4C7F 11D1 8222 444553540000
 094601FF 4C7F 11D1 8222 444553540000
 09460001 4C7F 11D1 8222 444553540000 <-- new CLSID for encryption
 09461345 4C7F 11D1 8222 444553540000
 09461346 4C7F 11D1 8222 444553540000
 09461347 4C7F 11D1 8222 444553540000

 Is now represented as just:

 134A
 134B
 134D
 1341
 0000
 1343
 01FF
 0001  -- encryption
 1345
 1346
 1347

  I can confirm this for ICQ (currently ICQ2003b & ICQLite4.1). This is not replacement for 0x0D tlv, but just the effective try to reduce traffic from ICQ servers. You can found TLV(0x0D) & TLV(0x19) in single packet.

 
 


Changes discovered in new AIM clients by John Roark

 I have been investigating the latest versions of AIM (5.2.3277) and
 found that capability CLSIDs are not passed with BUDDY__ARRIVED
 anymore... That is TLV(0x000D) still comes with SNAC(03,0B) but it only
 contains CLSIDs not of the form {0946xxxx-4C7F-11D1-8222-444553540000}
 like the chat CLSID {748F2420-6287-11D1-8222-444553540000}. instead
 SNAC(03,0B) contains a new TLV of type 0x0019 that contains a list of
 two byte CLSID diffs for example the following CLSIDs:

 0946134A 4C7F 11D1 8222 444553540000
 0946134B 4C7F 11D1 8222 444553540000
 0946134D 4C7F 11D1 8222 444553540000
 09461341 4C7F 11D1 8222 444553540000
 09460000 4C7F 11D1 8222 444553540000
 09461343 4C7F 11D1 8222 444553540000
 094601FF 4C7F 11D1 8222 444553540000
 09460001 4C7F 11D1 8222 444553540000 <-- new CLSID for encryption
 09461345 4C7F 11D1 8222 444553540000
 09461346 4C7F 11D1 8222 444553540000
 09461347 4C7F 11D1 8222 444553540000

 Is now represented as just:

 134A
 134B
 134D
 1341
 0000
 1343
 01FF
 0001   -- encryption
 1345
 1346
 1347

  I can confirm this for ICQ (currently ICQ2003b & ICQLite4.1). This is not
replacement for 0x0D tlv, but just the effective try to reduce traffic from ICQ servers.
You can found TLV(0x0D) & TLV(0x19) in single packet.

ICQ Message Extensions