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