Protocols/MSNP/MSNC/Client Capabilities

From NINA Wiki
Revision as of 19:10, 11 May 2022 by Animadoria (talk | contribs)
Jump to navigation Jump to search
MSNP Protocol
MSNC
OverviewMSNObject
Client Capabilities
P2P protocol
TransportsMSNSLP
Headers
P2Pv1 Binary headers
P2Pv2 Binary headers
Transfers
Display Pictures
Custom Emoticons
File Transfer
Overview
IntroductionTermsClients
Reference
Error ListCommandsRelying Party SuiteSpotlife
Services
XMPPHTTP GatewayTabsActivities
Documentation
Development ToolsMSNP Grid
PolygamyURLs used by MSN
Documents
Protocol Versions
Version 21
Version 18
Version 16
Version 15
Version 14
Version 13
Version 12
Version 11
Version 9
Version 8
Version 2
MSNC
IntroductionP2PObject DescriptorDisplay PicturesFile Transfer
Scenarios
Microsoft Messenger for Mac
MSNP on WebTV (MSNTV)


Client Capabilities

In order to properly understand how client capabilities work in MSN Messenger, you would need a basic understanding binary arithmetic. This site assumes no knowledge of binary, so this discussion of client capabilities numbers is quite shallow. Client capabilities are very similar to list numbers, only a little bit more complicated.

The client capabilities are the sum of several values specifying capabilities advertised by the client.

Client Capabilities

Here are the values that we know to be used in client identification:
0x10 (HEX, Base 16) = 16 (Decimal, Base 10)

  • 0x01(CapabilityMobileOnline): This means you are running a Windows Mobile device. The official client changes the little icon to a little man with a phone, and puts the status 'Phone' next to your name.
  • 0x02(CapabilityMSN8User): This value is set if you are a MSN Explorer 8 user, but it is sometimes used when the client resets its capabilities
  • 0x04(CapabilityRendersGif): Your client can send/receive Ink (GIF format)
  • 0x08(CapabilityRendersIsf): Your client can send/recieve Ink (ISF format)
  • 0x10(CapabilityWebCamDetected): This option is set when you are able to participate in video conversations. In reality, it is only set when you have a webcam connected and have it set to 'shared'.
  • 0x20(CapabilitySupportsChunking): This value is being used with Multi-Packet Messaging.
  • 0x40(CapabilityMobileEnabled): This is used when the client is running on a MSN Mobile device. This is equivalent to the MOB setting in the BPR list.
  • 0x80(CapabilityDirectDevice): This is used when the client is running on a MSN Direct device. This is equivalent to the WWE setting in the BPR list.
  • 0x200(CapabilityWebIMClient): This is used when someone signs in on the official Web-based MSN Messenger. It will show a new icon in other people's contact list.
  • 0x800(CapabilityConnectedViaTGW): Internal Microsoft client and/or Microsoft Office Live client (TGWClient).
  • 0x1000(CapabilityHasSpace): This means you have a MSN Space.
  • 0x2000(CapabilityMCEUser): This means you are using Windows XP Media Center Edition.
  • 0x4000(CapabilitySupportsDirectIM): This means you support 'DirectIM' (creating direct connections for conversations rather than using the traditional switchboard)
  • 0x8000(CapabilitySupportsWinks): This means you support Winks receiving (If not set the official Client will warn with 'contact has an older client and is not capable of receiving Winks')
  • 0x10000: Your client supports the MSN Search feature
  • 0x20000(CapabilityIsBot): The client is bot (provisioned account)
  • 0x40000(CapabilitySupportsVoiceIM): This means you support Voice Clips receiving
  • 0x80000(CapabilitySupportsSChannel): This means you support Secure Channel Communications
  • 0x100000(CapabilitySupportsSipInvite): Supports SIP Invitations
  • 0x200000(CapabilitySupportsTunneledSip): Supports Tunneled SIP
  • 0x400000(CapabilitySupportsSDrive): Sharing Folders
  • 0x1000000(CapabilityHasOnecare): The client has OneCare
  • 0x2000000(CapabilityP2PSupportsTurn): Supports P2P TURN
  • 0x4000000(CapabilityP2PBootstrapViaUUN): Supports P2P Bootstrap via UUN
  • 0x10000000(CapabilityMsgrVersion1): Supports Protocols/MSNP/MSNC1 (MSN Msgr 6.0)
  • 0x20000000(CapabilityMsgrVersion2): Supports Protocols/MSNP/MSNC2 (MSN Msgr 6.1)
  • 0x30000000(CapabilityMsgrVersion3): Supports Protocols/MSNP/MSNC3 (MSN Msgr 6.2)
  • 0x40000000(CapabilityMsgrVersion4): Supports Protocols/MSNP/MSNC4 (MSN Msgr 7.0)
  • 0x50000000(CapabilityMsgrVersion5): Supports Protocols/MSNP/MSNC5 (MSN Msgr 7.5)
  • 0x60000000(CapabilityMsgrVersion6): Supports Protocols/MSNP/MSNC6 (WL Msgr 8.0)
  • 0x70000000(CapabilityMsgrVersion7): Supports Protocols/MSNP/MSNC7 (WL Msgr 8.1)
  • 0x80000000(CapabilityMsgrVersion8): Supports Protocols/MSNP/MSNC8 (WL Msgr 8.5)
  • 0x90000000(CapabilityMsgrVersion9): Supports Protocols/MSNP/MSNC9 (WL Msgr 9.0)
  • 0xA0000000(CapabilityMsgrVersion10): Supports Protocols/MSNP/MSNC10 (WL Msgr 14.0)

Note: If you support an MSNC protocol, the official client assumes that you also support all previous MSNC protocols.

Extended Client Capabilities (from MSNP16)

  • 0x10(CapabilityRTCVideoEnabled): RTC Video enabled
  • 0x20(CapabilityP2PV2): Supports P2PV2

Extended capabilities are written after the 'basic' capabilities, seperated by a colon. (capab:excapab) For example 4:48 means that the client can send/receive Ink (GIF format) + RTC Video enabled + Supports P2PV2

Getting and setting Client Capabilities

To create a client capability number, sum the values in the above list which apply to your client. For example, if your client is a mobile phone supporting Protocols/MSNP/MSNC0, your client number is 1. Whereas if your client supports Protocols/MSNP/MSNC2, is able to receive ink messages and would like to advertise voice chat support, your client capacity number would be 0x20000014 (0x20000000 + 0x10 + 0x4), decimal 536870932 (536870912 + 16 + 4). Note: you can only specify one supported client protocol - both 0x10000000 and 0x20000000 means 0x30000000 (MSNC3).

Just like with list numbers, you can extract values from another principal's client capability number by bitwise ANDing the client capability with the value. This is the advised method for getting client capabilities, but it's better to get the client version number by dividing the client capability by 268435456 (hex 0x10000000) and rounding down to the nearest integer. This is called 'modulo division', and most programming languages have a function or mathematical operator for it. For Protocols/MSNP/MSNC0 clients, modulo division will always return 0, for Protocols/MSNP/MSNC1 clients, it'll always return 1, and for Protocols/MSNP/MSNC2 clients, it'll always return 2.

Example

WLM Messenger 2009 (build 14.0.8064.206) by default uses the value 0xa63cd03c:0x30 (2789003324:48).

  • Can send/receive Ink (GIF format)
  • Can send/receive Ink (ISF format)
  • Can participate in video conversations
  • Support multi-packet Messaging
  • Has MSN spaces
  • Support 'DirectIM'
  • Can send/receive winks
  • Can send/receive voice clips
  • Support secure channel communications
  • Support SIP Invitations
  • Support Tunneled SIP
  • Support P2P TURN
  • Support P2P Bootstrap via UUN
  • Uses client protocol Protocols/MSNP/MSNC10
  •  : (colon)
  • RTC Video enabled
  • Support P2PV2