4.1.4 Server MCS Connect Response PDU with GCC Conference Create Response

The following is an annotated dump of the MCS Connect Response PDU with GCC Conference Create Response (section 2.2.1.4).

 00000000 03 00 01 51 02 f0 80 7f 66 82 01 45 0a 01 00 02 ...Q....f..E....
 00000010 01 00 30 1a 02 01 22 02 01 03 02 01 00 02 01 01 ..0...".........
 00000020 02 01 00 02 01 01 02 03 00 ff f8 02 01 02 04 82 ................
 00000030 01 1f 00 05 00 14 7c 00 01 2a 14 76 0a 01 01 00 ......|..*.v....
 00000040 01 c0 00 4d 63 44 6e 81 08 01 0c 0c 00 04 00 08 ...McDn.........
 00000050 00 00 00 00 00 03 0c 10 00 eb 03 03 00 ec 03 ed ................
 00000060 03 ee 03 00 00 02 0c ec 00 02 00 00 00 02 00 00 ................
 00000070 00 20 00 00 00 b8 00 00 00 10 11 77 20 30 61 0a . .........w 0a.
 00000080 12 e4 34 a1 1e f2 c3 9f 31 7d a4 5f 01 89 34 96 ..4.....1}._..4.
 00000090 e0 ff 11 08 69 7f 1a c3 d2 01 00 00 00 01 00 00 ....i...........
 000000a0 00 01 00 00 00 06 00 5c 00 52 53 41 31 48 00 00 .......\.RSA1H..
 000000b0 00 00 02 00 00 3f 00 00 00 01 00 01 00 cb 81 fe .....?..........
 000000c0 ba 6d 61 c3 55 05 d5 5f 2e 87 f8 71 94 d6 f1 a5 .ma.U.._...q....
 000000d0 cb f1 5f 0c 3d f8 70 02 96 c4 fb 9b c8 3c 2d 55 .._.=.p......<-U
 000000e0 ae e8 ff 32 75 ea 68 79 e5 a2 01 fd 31 a0 b1 1f ...2u.hy....1...
 000000f0 55 a6 1f c1 f6 d1 83 88 63 26 56 12 bc 00 00 00 U.......c&V.....
 00000100 00 00 00 00 00 08 00 48 00 e9 e1 d6 28 46 8b 4e .......H....(F.N
 00000110 f5 0a df fd ee 21 99 ac b4 e1 8f 5f 81 57 82 ef .....!....._.W..
 00000120 9d 96 52 63 27 18 29 db b3 4a fd 9a da 42 ad b5 ..Rc'.)..J...B..
 00000130 69 21 89 0e 1d c0 4c 1a a8 aa 71 3e 0f 54 b9 9a i!....L...q>.T..
 00000140 e4 99 68 3f 6c d6 76 84 61 00 00 00 00 00 00 00 ..h?l.v.a.......
 00000150 00                                              .
  
 03 00 01 51 -> TPKT Header (length = 337 bytes)
 02 f0 80 -> X.224 Data TPDU
  
 7f 66 -> BER: Application-Defined Type = APPLICATION 102 = 
 Connect-Response
 82 01 45 -> BER: Type Length = 325 bytes
  
 0a 01 00 -> Connect-Response::result = rt-successful (0)
 The first byte (0x0a) is the ASN.1 BER encoded Enumerated type. The 
 length of the value is given by the second byte (1 byte), and the 
 actual value is 0 (rt-successful).
  
 02 01 00 -> Connect-Response::calledConnectId = 0
  
 30 1a -> Connect-Response::domainParameters (26 bytes)
 02 01 22 -> DomainParameters::maxChannelIds = 34
 02 01 03 -> DomainParameters::maxUserIds = 3
 02 01 00 -> DomainParameters::maximumTokenIds = 0
 02 01 01 -> DomainParameters::numPriorities = 1
 02 01 00 -> DomainParameters::minThroughput = 0
 02 01 01 -> DomainParameters::maxHeight = 1
 02 03 00 ff f8 -> DomainParameters::maxMCSPDUsize = 65528
 02 01 02 -> DomainParameters::protocolVersion = 2
  
 04 82 01 1f -> Connect-Response::userData (287 bytes)
  
 PER encoded (ALIGNED variant of BASIC-PER) GCC Connection Data (ConnectData):
 00 05 00 14 7c 00 01 2a 14 76 0a 01 01 00 01 c0 
 00 4d 63 44 6e 81 08 
  
 00 05 -> Key::object length = 5 bytes
 00 14 7c 00 01 -> Key::object = { 0 0 20 124 0 1 }
  
 2a -> ConnectData::connectPDU length = 42 bytes
 This length is ignored by the client. 
  
 PER encoded (ALIGNED variant of BASIC-PER) GCC Conference Create Response 
 PDU:
 14 76 0a 01 01 00 01 c0 00 00 4d 63 44 6e 81 08
  
 0x14:
 0 - extension bit (ConnectGCCPDU)
 0 - --\
 0 -   | CHOICE: From ConnectGCCPDU select conferenceCreateResponse (1) 
 1 - --/ of type ConferenceCreateResponse
 0 - extension bit (ConferenceCreateResponse)
 1 - ConferenceCreateResponse::userData present
 0 - padding
 0 - padding
  
 0x76:
 0 - --\
 1 -   |
 1 -   |
 1 -   |
 0 -   |
 1 -   |
 1 -   |
 0 -   |
       | ConferenceCreateResponse::nodeID = 0x760a + 1001 = 30218 + 1001 = 31219
 0x0a: | (minimum for UserID is 1001)
 0 -   |
 0 -   | 
 0 -   |
 0 -   |
 1 -   |
 0 -   |
 1 -   |
 0 - --/
  
 0x01:
 0 - --\
 0 -   |
 0 -   |
 0 -   | ConferenceCreateResponse::tag length = 1 byte
 0 -   |
 0 -   |
 0 -   |
 1 - --/
  
 0x01:
 0 - --\
 0 -   |
 0 -   |
 0 -   | ConferenceCreateResponse::tag = 1
 0 -   |
 0 -   |
 0 -   |
 1 - --/
  
 0x00:
 0 - extension bit (Result)
 0 - --\
 0 -   | ConferenceCreateResponse::result = success (0)
 0 - --/
 0 - padding
 0 - padding
 0 - padding
 0 - padding
  
 0x01:
 0 - --\
 0 -   |
 0 -   |
 0 -   | number of UserData sets = 1
 0 -   | 
 0 -   |
 0 -   |
 1 - --/
  
 0xc0: 
 1 - UserData::value present
 1 - CHOICE: From Key select h221NonStandard (1) of type H221NonStandardIdentifier
 0 - padding
 0 - padding
 0 - padding
 0 - padding
 0 - padding
 0 - padding
       
 0x00:
 0 - --\
 0 -   |
 0 -   |
 0 -   | h221NonStandard length = 0 + 4 = 4 octets
 0 -   | (minimum for H221NonStandardIdentifier is 4)
 0 -   |
 0 -   |
 0 - --/
  
 4d 63 44 6e -> h221NonStandard (server-to-client H.221 key) = "McDn"
  
 81 08 -> UserData::value length = 264 bytes
  
 01 0c 0c 00 -> TS_UD_HEADER::type = SC_CORE (0x0c01), length = 12 
 bytes
  
 04 00 08 00 -> TS_UD_SC_CORE::version = 0x00080004
 00 00 00 00 -> TS_UD_SC_CORE::clientRequestedProtocols = PROTOCOL_RDP
  
 03 0c 10 00 -> TS_UD_HEADER::type = SC_NET (0x0c03), length = 16 bytes
  
 eb 03 -> TS_UD_SC_NET::MCSChannelId = 0x3eb = 1003 (I/O channel)
 03 00 -> TS_UD_SC_NET::channelCount = 3
 ec 03 -> channelIdArray[0] = 0x3ec = 1004 (rdpdr)
 ed 03 -> channelIdArray[1] = 0x3ed = 1005 (cliprdr)
 ee 03 -> channelIdArray[2] = 0x3ee = 1006 (rdpsnd)
 00 00 -> Pad
  
 02 0c ec 00 -> TS_UD_HEADER::type = SC_SECURITY, length = 236
  
 02 00 00 00 -> TS_UD_SC_SEC1::encryptionMethod = ENCRYPTION_METHOD_128BIT
 02 00 00 00 -> TS_UD_SC_SEC1::encryptionLevel = ENCRYPTION_LEVEL_CLIENT_COMPATIBLE
 20 00 00 00 -> TS_UD_SC_SEC1::serverRandomLen = 32 bytes
 b8 00 00 00 -> TS_UD_SC_SEC1::serverCertLen = 184 bytes
  
 10 11 77 20 30 61 0a 12 e4 34 a1 1e f2 c3 9f 31 
 7d a4 5f 01 89 34 96 e0 ff 11 08 69 7f 1a c3 d2 -> TS_UD_SC_SEC1::serverRandom
  
 TS_UD_SC_SEC1::serverCertificate:
 01 00 00 00 01 00 00 00 01 00 00 00 06 00 5c 00 
 52 53 41 31 48 00 00 00 00 02 00 00 3f 00 00 00 
 01 00 01 00 cb 81 fe ba 6d 61 c3 55 05 d5 5f 2e 
 87 f8 71 94 d6 f1 a5 cb f1 5f 0c 3d f8 70 02 96 
 c4 fb 9b c8 3c 2d 55 ae e8 ff 32 75 ea 68 79 e5 
 a2 01 fd 31 a0 b1 1f 55 a6 1f c1 f6 d1 83 88 63 
 26 56 12 bc 00 00 00 00 00 00 00 00 08 00 48 00 
 e9 e1 d6 28 46 8b 4e f5 0a df fd ee 21 99 ac b4 
 e1 8f 5f 81 57 82 ef 9d 96 52 63 27 18 29 db b3 
 4a fd 9a da 42 ad b5 69 21 89 0e 1d c0 4c 1a a8 
 aa 71 3e 0f 54 b9 9a e4 99 68 3f 6c d6 76 84 61 
 00 00 00 00 00 00 00 00
  
 01 00 00 00 -> PROPRIETARYSERVERCERTIFICATE::dwVersion = CERT_CHAIN_VERSION_1 (1)
 01 00 00 00 -> PROPRIETARYSERVERCERTIFICATE::dwSigAlgId = SIGNATURE_ALG_RSA (1)
 01 00 00 00 -> PROPRIETARYSERVERCERTIFICATE::dwKeyAlgId = KEY_EXCHANGE_ALG_RSA (1)
 06 00 -> PROPRIETARYSERVERCERTIFICATE::wPublicKeyBlobType = BB_RSA_KEY_BLOB (6)
 5c 00 -> PROPRIETARYSERVERCERTIFICATE::wPublicKeyBlobLen = 92 bytes
  
 PROPRIETARYSERVERCERTIFICATE::PublicKeyBlob:
 52 53 41 31 48 00 00 00 00 02 00 00 3f 00 00 00 
 01 00 01 00 cb 81 fe ba 6d 61 c3 55 05 d5 5f 2e 
 87 f8 71 94 d6 f1 a5 cb f1 5f 0c 3d f8 70 02 96 
 c4 fb 9b c8 3c 2d 55 ae e8 ff 32 75 ea 68 79 e5 
 a2 01 fd 31 a0 b1 1f 55 a6 1f c1 f6 d1 83 88 63 
 26 56 12 bc 00 00 00 00 00 00 00 00
  
 52 53 41 31 -> RSA_PUBLIC_KEY::magic = "RSA1"
 48 00 00 00 -> RSA_PUBLIC_KEY::keylen = 72 bytes ((512 / 8) + 8)
 00 02 00 00 -> RSA_PUBLIC_KEY::bitlen = 0x0200 = 512 bits
 3f 00 00 00 -> RSA_PUBLIC_KEY::datalen = 63 bytes ((512 / 8) – 1)
 01 00 01 00 -> RSA_PUBLIC_KEY::pubExp = 0x00010001
  
 cb 81 fe ba 6d 61 c3 55 05 d5 5f 2e 87 f8 71 94 
 d6 f1 a5 cb f1 5f 0c 3d f8 70 02 96 c4 fb 9b c8 
 3c 2d 55 ae e8 ff 32 75 ea 68 79 e5 a2 01 fd 31 
 a0 b1 1f 55 a6 1f c1 f6 d1 83 88 63 26 56 12 bc 
 00 00 00 00 00 00 00 00 -> RSA_PUBLIC_KEY::modulus
  
 08 00 -> PROPRIETARYSERVERCERTIFICATE::wSignatureBlobType = BB_RSA_SIGNATURE_BLOB (8)
 48 00 -> PROPRIETARYSERVERCERTIFICATE::wSignatureBlobLen = 72 bytes
  
 e9 e1 d6 28 46 8b 4e f5 0a df fd ee 21 99 ac b4 
 e1 8f 5f 81 57 82 ef 9d 96 52 63 27 18 29 db b3 
 4a fd 9a da 42 ad b5 69 21 89 0e 1d c0 4c 1a a8 
 aa 71 3e 0f 54 b9 9a e4 99 68 3f 6c d6 76 84 61 
 00 00 00 00 00 00 00 00 -> PROPRIETARYSERVERCERTIFICATE::SignatureBlob