none
RDPBCGR question RRS feed

  • Question

  • Hello,


    We are developing the new RDP client  for Non-Windows client to connect TS with RDP 5.1, and have some questions in open spec of RDP.

    ---
    Q1.

    2.2.7.1.1 General Capability Set (TS_GENERAL_CAPABILITYSET) (Page.113) in [MS-RDPBCGR].pdf (Release: Thursday, March 13, 2008)

    If osMajorType and/or osMinorType value is set OSMAJORTYPE_UNIX or TS_OSMINORTYPE_NATIVE_XSERVER, how differences of TS behavior between Windows client and these client.

    We would like to know there are some differences or not if we set OSMAJORTYPE_UNIX or OSMINORTYPE_NATIVE_XSERVER.



    Q2.

    It's not clear that clientDir field value when we logon and send CLIENT_INFO_PDU. We are refering to  4.1.15 Client Info PDU in MS-RDPBCGR.pdf, and it says that we should set

    "C:\depots\w2k3_1\termsrv\newclient\lib\win32\obj\i386\mstscax.dll". But we are not sure that in case of non-Windows client such as Linux of Unix client.


     

    Q3.

    We are developing the new RDP client for connecting TS with RDP 5.1, but we cannot succeed to logon certification despite of we implement RDP client along with [MS-RDPBCGR] documentation.

     

    I suspect some formula described in 'The 56-bit keys are generated as follows' are not correct.

     

    5.3.5.1 Non-FIPS Page.331 in MS-RDPBCGR.pdf

     

    The document described:

        MACKey56 = 0xD1269E + Last56Bits(First64Bits(MACKey128))

    I think it's true:

        MACKey56 = 0xD1 + Last56Bits(First64Bits(MACKey128))

     

     

    5.3.6.1 Non-FIPS Page.332

     

    The document described:

        SHAComponent = SHA(MACKeyN + Pad2 + DataLength + Data)

    I think it's true:

        SHAComponent = SHA(MACKeyN + Pad1 + DataLength + Data)

     

    The document described:

        MACSignature = First64Bits(MD5(MACKeyN + Pad1 + SHAComponent))

    I think it's true:

        MACSignature = First64Bits(MD5(MACKeyN + Pad2 + SHAComponent))

     

    Which is correct?

    Best regard,
    HY

    Thursday, September 18, 2008 11:28 PM

Answers

  •  

    Hi HY,

     

    Before starting, I would like to let you know that the documentation gets updated on a monthly basis, so the version you are referring to is rather old.

    Please download the latest public version at: http://msdn.microsoft.com/en-us/library/cc240549.aspx

     

    Q1:

     

    I’m not sure that I understand this question correctly or if I’m missing the point, so please don’t hesitate to let me know if there’s something to clarify.

    For the description in the latest release of the document, those two fields are informational.

     

    Let me quote it here:

     

     

    ... (continued from above)

     

    The TS_GENERAL_CAPABILITYSET structure is used to advertise general characteristics and is based on the capability set specified in [T128] section 8.2.3. This capability is sent by both client and server.

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    1
    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    2
    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    3
    0

    1

    capabilitySetType

    lengthCapability

    osMajorType

    osMinorType

    protocolVersion

    pad2octetsA

    generalCompressionTypes

    extraFlags

    updateCapabilityFlag

    remoteUnshareFlag

    generalCompressionLevel

    refreshRectSupport

    suppressOutputSupport

    capabilitySetType (2 bytes): A 16-bit, unsigned integer. The type of the capability set. This field MUST be set to CAPSTYPE_GENERAL (1).

    lengthCapability (2 bytes): A 16-bit, unsigned integer. The length in bytes of the capability data, including the size of the capabilitySetType and lengthCapability fields.

    osMajorType (2 bytes): A 16-bit, unsigned integer. The type of platform.

    Value

    Meaning

    OSMAJORTYPE_UNSPECIFIED
    0x0000

    Unspecified platform

    OSMAJORTYPE_WINDOWS
    0x0001

    Windows platform

    OSMAJORTYPE_OS2
    0x0002

    OS/2 platform

    OSMAJORTYPE_MACINTOSH
    0x0003

    Macintosh platform

    OSMAJORTYPE_UNIX
    0x0004

    UNIX platform

    osMinorType (2 bytes): A 16-bit, unsigned integer. The version of the platform specified in the osMajorType field.

    Value

    Meaning

    OSMINORTYPE_UNSPECIFIED
    0x0000

    Unspecified version

    OSMINORTYPE_WINDOWS_31X
    0x0001

    Windows 3.1x

    TS_OSMINORTYPE_WINDOWS_95
    0x0002

    Windows 95

    TS_OSMINORTYPE_WINDOWS_NT
    0x0003

    Windows NT

    TS_OSMINORTYPE_OS2_V21
    0x0004

    OS/2 2.1

    TS_OSMINORTYPE_POWER_PC
    0x0005

    PowerPC

    TS_OSMINORTYPE_MACINTOSH
    0x0006

    Macintosh

    TS_OSMINORTYPE_NATIVE_XSERVER
    0x0007

    Native X Server

    TS_OSMINORTYPE_PSEUDO_XSERVER
    0x0008

    Pseudo X Server


    …. (continued)

     

     

     

     

    The link points to the T128 specification found here: [T128]

     

     

    And this is a portion of the document:

     

     

     

     

    ... (continued from above)

     

     

    8.2.3 General capability set

    The General capability set provides capabilities for the general characteristics of the issuing ASCE.

    See Tables 8-3 and 8-4.

     

    Table 8-3/T.128 – General capability set (Legacy mode)

    Capability                                                           Description                                                                                                                        Class                                                                      Rule

    OSMajorType                                                    This capability indicates the operating system major type.                            N                                                                             info

     

    Allowable values as follows:

    • Unspecified

    • Windows

    • OS/2

    • Macintosh

    • UNIX/X

    This capability is for information and diagnostic purposes

    only.

     

    OSMinorType                                                    This capability indicates the operating system minor type.                            N                                                                             info

    The values depend on the OSMajorType capability (see

    above). Allowable values are as follows:

    OSMajorType                    OSMinorType

    Windows                             Unspecified

    Windows 3.1x

    Windows 95

    Windows NT

    OS/2                                      Unspecified

    OS/2 Warp (Intel x86)

    PowerPC\

    Macintosh                           Unspecified

    Macintosh

    PowerPC

    UNIX/X                                                 Unspecified

    Native Server

    Pseudo Server

    Unspecified                        Unspecified

    This capability is for information and diagnostic purposes

    only.

     

    …. (continued)

     

     

    Please let me know if this answer does not satisfy your need for question 1.

     

     

     

    Q2:

     

    Have you looked at section:

     

    Info Packet (TS_INFO_PACKET)

    2.2.1.11.1.1 Info Packet (TS_INFO_PACKET)

     

     

     

    It seems to be describing what you are requesting.

    Again, I do not know if the older version of the doc that you have has this info or not. Please refer to the latest publish version.

     

     

     

    Q3:

     

    This section has been heavily rewritten.

     

    Your appreciations are right and are explained in the latest version of the doc.

     

     

    Thanks for your excellent feedback.

     

    Regards,

     

     


    SEBASTIAN CANEVARI - MSFT SEE Protocol Documentation Team
    Tuesday, September 23, 2008 6:05 PM

All replies

  • Hi,

      Thanks for your question.  We'll review your questions and post response once we complete the investigation.

    Thanks !


    Hongwei Sun -MSFT
    Monday, September 22, 2008 2:30 PM
  •  

    Hi HY,

     

    Before starting, I would like to let you know that the documentation gets updated on a monthly basis, so the version you are referring to is rather old.

    Please download the latest public version at: http://msdn.microsoft.com/en-us/library/cc240549.aspx

     

    Q1:

     

    I’m not sure that I understand this question correctly or if I’m missing the point, so please don’t hesitate to let me know if there’s something to clarify.

    For the description in the latest release of the document, those two fields are informational.

     

    Let me quote it here:

     

     

    ... (continued from above)

     

    The TS_GENERAL_CAPABILITYSET structure is used to advertise general characteristics and is based on the capability set specified in [T128] section 8.2.3. This capability is sent by both client and server.

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    1
    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    2
    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    3
    0

    1

    capabilitySetType

    lengthCapability

    osMajorType

    osMinorType

    protocolVersion

    pad2octetsA

    generalCompressionTypes

    extraFlags

    updateCapabilityFlag

    remoteUnshareFlag

    generalCompressionLevel

    refreshRectSupport

    suppressOutputSupport

    capabilitySetType (2 bytes): A 16-bit, unsigned integer. The type of the capability set. This field MUST be set to CAPSTYPE_GENERAL (1).

    lengthCapability (2 bytes): A 16-bit, unsigned integer. The length in bytes of the capability data, including the size of the capabilitySetType and lengthCapability fields.

    osMajorType (2 bytes): A 16-bit, unsigned integer. The type of platform.

    Value

    Meaning

    OSMAJORTYPE_UNSPECIFIED
    0x0000

    Unspecified platform

    OSMAJORTYPE_WINDOWS
    0x0001

    Windows platform

    OSMAJORTYPE_OS2
    0x0002

    OS/2 platform

    OSMAJORTYPE_MACINTOSH
    0x0003

    Macintosh platform

    OSMAJORTYPE_UNIX
    0x0004

    UNIX platform

    osMinorType (2 bytes): A 16-bit, unsigned integer. The version of the platform specified in the osMajorType field.

    Value

    Meaning

    OSMINORTYPE_UNSPECIFIED
    0x0000

    Unspecified version

    OSMINORTYPE_WINDOWS_31X
    0x0001

    Windows 3.1x

    TS_OSMINORTYPE_WINDOWS_95
    0x0002

    Windows 95

    TS_OSMINORTYPE_WINDOWS_NT
    0x0003

    Windows NT

    TS_OSMINORTYPE_OS2_V21
    0x0004

    OS/2 2.1

    TS_OSMINORTYPE_POWER_PC
    0x0005

    PowerPC

    TS_OSMINORTYPE_MACINTOSH
    0x0006

    Macintosh

    TS_OSMINORTYPE_NATIVE_XSERVER
    0x0007

    Native X Server

    TS_OSMINORTYPE_PSEUDO_XSERVER
    0x0008

    Pseudo X Server


    …. (continued)

     

     

     

     

    The link points to the T128 specification found here: [T128]

     

     

    And this is a portion of the document:

     

     

     

     

    ... (continued from above)

     

     

    8.2.3 General capability set

    The General capability set provides capabilities for the general characteristics of the issuing ASCE.

    See Tables 8-3 and 8-4.

     

    Table 8-3/T.128 – General capability set (Legacy mode)

    Capability                                                           Description                                                                                                                        Class                                                                      Rule

    OSMajorType                                                    This capability indicates the operating system major type.                            N                                                                             info

     

    Allowable values as follows:

    • Unspecified

    • Windows

    • OS/2

    • Macintosh

    • UNIX/X

    This capability is for information and diagnostic purposes

    only.

     

    OSMinorType                                                    This capability indicates the operating system minor type.                            N                                                                             info

    The values depend on the OSMajorType capability (see

    above). Allowable values are as follows:

    OSMajorType                    OSMinorType

    Windows                             Unspecified

    Windows 3.1x

    Windows 95

    Windows NT

    OS/2                                      Unspecified

    OS/2 Warp (Intel x86)

    PowerPC\

    Macintosh                           Unspecified

    Macintosh

    PowerPC

    UNIX/X                                                 Unspecified

    Native Server

    Pseudo Server

    Unspecified                        Unspecified

    This capability is for information and diagnostic purposes

    only.

     

    …. (continued)

     

     

    Please let me know if this answer does not satisfy your need for question 1.

     

     

     

    Q2:

     

    Have you looked at section:

     

    Info Packet (TS_INFO_PACKET)

    2.2.1.11.1.1 Info Packet (TS_INFO_PACKET)

     

     

     

    It seems to be describing what you are requesting.

    Again, I do not know if the older version of the doc that you have has this info or not. Please refer to the latest publish version.

     

     

     

    Q3:

     

    This section has been heavily rewritten.

     

    Your appreciations are right and are explained in the latest version of the doc.

     

     

    Thanks for your excellent feedback.

     

    Regards,

     

     


    SEBASTIAN CANEVARI - MSFT SEE Protocol Documentation Team
    Tuesday, September 23, 2008 6:05 PM
  •   Hello,

    I appreciate that your answered me for all my questions, and I'm sorry that I posted question about an old version document.
    I read the latest document and want to make sure as for #2 of my last question again.


    The section 2.2.1.11.1.1 - Info Packet (TS_INFO_PACKET) in the latest MS-RDPBCGR document says:
    ---

    clientDir (variable): Variable-length directory that contains the folder path on the client machine from which the client software is being run. The maximum allowed length is 512 bytes (including the mandatory null terminator).

    ---

    But the section 4.3.3 - Logon Info Extended in the same document shows PDU example:

    ...

    6c 00 00 00 -> TS_EXTENDED_INFO_PACKET::clientDir = "C:\depots\w2k3_1\termsrv\newclient\lib\win32\obj\i386\mstscax.dll"

    ...

    I'm not sure that which value is correct in TS_EXTENDED_INFO_PACKET::clientDir. Since in the section 4.3.3 example, the path of DLL module is set, I mean it's not a directory such as described in the section 2.2.1.11.1.1.

    And I also want to make sure that how differences the behavior of RDP server dpends on clientDir value.
    For example, are there any difference behavior of RDP server whether in case of settng only a directory name or the full path of DLL.

    Thanks,
    HY

    Monday, October 20, 2008 10:58 PM
  • Hi HY,

    Thanks for the follow up!

    The text will be revisited and will include something in the lines of "directory or module" for the clientDir description.

    I hope this fully answeres your question.

    The server does not behave differently.

    Thanks!

     

    SEBASTIAN CANEVARI - MSFT SEE Protocol Documentation Team
    Wednesday, October 29, 2008 4:10 PM