// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package rdpclient.rdp; import streamer.ByteBuffer; import streamer.Element; import streamer.Link; import streamer.OneTimeSwitch; import streamer.Pipeline; import streamer.PipelineImpl; import streamer.debug.MockSink; import streamer.debug.MockSource; public class ClientMCSConnectInitial extends OneTimeSwitch { public ClientMCSConnectInitial(String id) { super(id); } @Override protected void handleOneTimeData(ByteBuffer buf, Link link) { if (buf == null) return; throw new RuntimeException("Unexpected packet: " + buf + "."); } @Override protected void onStart() { super.onStart(); int length = 1024; // Large enough ByteBuffer buf = new ByteBuffer(length, true); /* @formatter:off */ buf.writeBytes(new byte[] { (byte)0x7f, (byte)0x65, (byte)0x82, (byte)0x01, (byte)0x6d, (byte)0x04, (byte)0x01, (byte)0x01, (byte)0x04, (byte)0x01, (byte)0x01, (byte)0x01, (byte)0x01, (byte)0xff, (byte)0x30, (byte)0x1a, (byte)0x02, (byte)0x01, (byte)0x22, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x30, (byte)0x19, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x02, (byte)0x04, (byte)0x20, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x30, (byte)0x20, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xfc, (byte)0x17, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x04, (byte)0x82, (byte)0x01, (byte)0x07, (byte)0x00, (byte)0x05, (byte)0x00, (byte)0x14, (byte)0x7c, (byte)0x00, (byte)0x01, (byte)0x80, (byte)0xfe, (byte)0x00, (byte)0x08, (byte)0x00, (byte)0x10, (byte)0x00, (byte)0x01, (byte)0xc0, (byte)0x00, (byte)0x44, (byte)0x75, (byte)0x63, (byte)0x61, (byte)0x80, (byte)0xf0, (byte)0x01, (byte)0xc0, (byte)0xd8, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x08, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x03, (byte)0x01, (byte)0xca, (byte)0x03, (byte)0xaa, (byte)0x09, (byte)0x04, (byte)0x00, (byte)0x00, (byte)0x28, (byte)0x0a, (byte)0x00, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x70, (byte)0x00, (byte)0x6f, (byte)0x00, (byte)0x6c, (byte)0x00, (byte)0x6c, (byte)0x00, (byte)0x6f, (byte)0x00, (byte)0x2e, (byte)0x00, (byte)0x76, (byte)0x00, (byte)0x6c, (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x76, (byte)0x00, (byte)0x6b, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x0c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0xca, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x10, (byte)0x00, (byte)0x07, (byte)0x00, (byte)0x21, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x06, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0xc0, (byte)0x0c, (byte)0x00, (byte)0x0d, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0xc0, (byte)0x0c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, }); // // buf.writeBytes(new byte[] { //// - T125: MCSConnect Initial //// - MCSConnectInitial: Identifier=Generic Conference Control (0.0.20.124.0.1), ConnectPDULength=254 //// - ConnectInitialHeader: // (byte)0x7F, (byte)0x65, //// - AsnId: Application Constructed Tag (101) //// - HighTag: //// Class: (01......) Application (1) //// Type: (..1.....) Constructed //// TagNumber: (...11111) //// TagValueEnd: 101 (0x65) // (byte)0x82, (byte)0x01, (byte)0x6C, //// - AsnLen: Length = 364, LengthOfLength = 2 //// LengthType: LengthOfLength = 2 //// Length: 364 bytes // (byte)0x04, (byte)0x01, (byte)0x01, //// - CallingDomainSelector: 0x1 //// - AsnOctetStringHeader: //// - AsnId: OctetString type (Universal 4) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00100) 4 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// OctetStream: 0x1 // (byte)0x04, (byte)0x01, (byte)0x01, //// - CalledDomainSelector: 0x1 //// - AsnOctetStringHeader: //// - AsnId: OctetString type (Universal 4) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00100) 4 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// OctetStream: 0x1 // (byte)0x01, (byte)0x01, (byte)0xFF, //// - UpwardFlag: True //// - AsnBooleanHeader: //// - AsnId: Boolean type (Universal 1) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00001) 1 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// Tf: 255 (0xFF) // //// //// - TargetParameters: Length = 26, LengthOfLength = 0 // (byte)0x30, (byte)0x1A, //// - DomainParametersHeader: 0x1 //// - AsnId: Sequence and SequenceOf types (Universal 16) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..1.....) Constructed //// TagValue: (...10000) 16 //// - AsnLen: Length = 26, LengthOfLength = 0 //// Length: 26 bytes, LengthOfLength = 0 // (byte)0x02, (byte)0x01, (byte)0x22, //// - ChannelIds: 34 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 34 (0x22) // (byte)0x02, (byte)0x01, (byte)0x02, //// - UserIDs: 2 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 2 (0x2) // (byte)0x02, (byte)0x01, (byte)0x00, //// - TokenIds: 0 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 0 (0x0) // (byte)0x02, (byte)0x01, (byte)0x01, //// - NumPriorities: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x00, //// - MinThroughput: 0 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 0 (0x0) // (byte)0x02, (byte)0x01, (byte)0x01, //// - Height: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xFF, (byte)0xFF, //// - MCSPDUsize: 65535 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 3, LengthOfLength = 0 //// Length: 3 bytes, LengthOfLength = 0 //// AsnInt: 65535 (0xFFFF) // (byte)0x02, (byte)0x01, (byte)0x02, //// - protocolVersion: 2 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 2 (0x2) // //// //// - MinimumParameters: Length = 25, LengthOfLength = 0 // (byte)0x30, (byte)0x19, //// - DomainParametersHeader: 0x1 //// - AsnId: Sequence and SequenceOf types (Universal 16) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..1.....) Constructed //// TagValue: (...10000) 16 //// - AsnLen: Length = 25, LengthOfLength = 0 //// Length: 25 bytes, LengthOfLength = 0 // (byte)0x02, (byte)0x01, (byte)0x01, //// - ChannelIds: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x01, //// - UserIDs: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x01, //// - TokenIds: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x01, //// - NumPriorities: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x00, //// - MinThroughput: 0 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 0 (0x0) // (byte)0x02, (byte)0x01, (byte)0x01, //// - Height: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x02, (byte)0x04, (byte)0x20, //// - MCSPDUsize: 1056 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 2, LengthOfLength = 0 //// Length: 2 bytes, LengthOfLength = 0 //// AsnInt: 1056 (0x420) // (byte)0x02, (byte)0x01, (byte)0x02, //// - protocolVersion: 2 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 2 (0x2) //// - MaximumParameters: Length = 31, LengthOfLength = 0 //// - DomainParametersHeader: 0x1 // (byte)0x30, (byte)0x1F, //// - AsnId: Sequence and SequenceOf types (Universal 16) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..1.....) Constructed //// TagValue: (...10000) 16 //// - AsnLen: Length = 31, LengthOfLength = 0 //// Length: 31 bytes, LengthOfLength = 0 // (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xFF, (byte)0xFF, //// - ChannelIds: 65535 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 3, LengthOfLength = 0 //// Length: 3 bytes, LengthOfLength = 0 //// AsnInt: 65535 (0xFFFF) // (byte)0x02, (byte)0x02, (byte)0xFC, (byte)0x17, //// - UserIDs: 64535 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 2, LengthOfLength = 0 //// Length: 2 bytes, LengthOfLength = 0 //// AsnInt: 64535 (0xFC17) // (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xFF, (byte)0xFF, //// - TokenIds: 65535 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 3, LengthOfLength = 0 //// Length: 3 bytes, LengthOfLength = 0 //// AsnInt: 65535 (0xFFFF) // (byte)0x02, (byte)0x01, (byte)0x01, //// - NumPriorities: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x01, (byte)0x00, //// - MinThroughput: 0 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 0 (0x0) // (byte)0x02, (byte)0x01, (byte)0x01, //// - Height: 1 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 1 (0x1) // (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xFF, (byte)0xFF, //// - MCSPDUsize: 65535 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 3, LengthOfLength = 0 //// Length: 3 bytes, LengthOfLength = 0 //// AsnInt: 65535 (0xFFFF) // (byte)0x02, (byte)0x01, (byte)0x02, //// - protocolVersion: 2 //// - AsnIntegerHeader: //// - AsnId: Integer type (Universal 2) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00010) 2 //// - AsnLen: Length = 1, LengthOfLength = 0 //// Length: 1 bytes, LengthOfLength = 0 //// AsnInt: 2 (0x2) //// - UserData: Identifier=Generic Conference Control (0.0.20.124.0.1), ConnectPDULength=254 //// - UserDataHeader: // (byte)0x04, (byte)0x82, (byte)0x01, (byte)0x07, //// - AsnId: OctetString type (Universal 4) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00100) 4 //// - AsnLen: Length = 263, LengthOfLength = 2 //// LengthType: LengthOfLength = 2 //// Length: 263 bytes // (byte)0x00, (byte)0x05, (byte)0x00, (byte)0x14, (byte)0x7C, (byte)0x00, (byte)0x01, //// - AsnBerObjectIdentifier: Generic Conference Contro (0.0.20.124.0.1) //// - AsnObjectIdentifierHeader: //// - AsnId: Reserved for use by the encoding rules (Universal 0) //// - LowTag: //// Class: (00......) Universal (0) //// Type: (..0.....) Primitive //// TagValue: (...00000) 0 //// - AsnLen: Length = 5, LengthOfLength = 0 //// Length: 5 bytes, LengthOfLength = 0 //// First: 0 (0x0) //// Final: 20 (0x14) //// Final: 124 (0x7C) //// Final: 0 (0x0) //// Final: 1 (0x1) // (byte)0x80, (byte)0xFE, //// - ConnectPDULength: 254 //// Align: No Padding //// Length: 254 // (byte)0x00, (byte)0x08, (byte)0x00, (byte)0x10, //// - ConnectGCCPDU: conferenceCreateRequest //// ExtensionBit: 0 (0x0) //// - ChoiceValue: conferenceCreateRequest //// Value: (000.....) 0x0 //// - conferenceCreateRequest: //// ExtensionBit: 0 (0x0) //// convenerPasswordPresent: 0 (0x0) //// passwordPresent: 0 (0x0) //// conductorPrivilegesPresent: 0 (0x0) //// conductedPrivilegesPresent: 0 (0x0) //// nonConductedPrivilegesPresent: 0 (0x0) //// conferenceDescriptionPresent: 0 (0x0) //// callerIdentifierPresent: 0 (0x0) //// userDataPresent: 1 (0x1) //// - conferenceName: //// ExtensionBit: 0 (0x0) //// textPresent: 0 (0x0) //// - numeric: 1 //// - SimpleNumericString: 1 //// - NumericString: 1 //// - Align: No Padding //// Padding1: (0.......) 0x0 //// - Length: 1 //// Value: (00000000) 0x0 //// - Restrictedstr: 1 //// FourBits: (0001....) 0x1 //// - lockedConference: False //// Value: False 0....... //// - listedConference: False //// Value: False 0....... //// - conductibleConference: False //// Value: False 0....... //// - TerminationMethod: automatic //// ExtensionBit: 0 (0x0) //// - RootIndex: 0 //// Value: (0.......) 0x0 //// - userData: // (byte)0x00, (byte)0x01, //// - Size: 1 //// - Align: No Padding //// Padding7: (0000000.) 0x0 //// Length: 1 //// - UserData: 0x44756361 // (byte)0xC0, (byte)0x00, (byte)0x44, (byte)0x75, (byte)0x63, (byte)0x61, //// valuePresent: 1 (0x1) //// - key: h221NonStandard "Duca" //// - ChoiceValue: h221NonStandard //// Value: (1.......) 0x1 //// - h221NonStandard: //// - H221NonStandardIdentifier: length: 4 //// - ConstrainedLength: 4 //// Value: (00000000) 0x0 //// - Align: No Padding //// Padding6: (000000..) 0x0 //// Value: Binary Large Object (4 Bytes) "Duca" //// - ClientMcsConnectInitialPdu: // (byte)0x80, (byte)0xF0, //// - RDPGCCUserDataRequestLength: 240 //// Align: No Padding //// Length: 240 //// - TsUd: CS_CORE // (byte)0x01, (byte)0xC0, (byte)0xD8, (byte)0x00, //// - TsUdHeader: Type = CS_CORE, Length = 216 //// Type: CS_CORE //// Length: 216 (0xD8) //// - TsUdCsCore: // (byte)0x04, (byte)0x00, (byte)0x08, (byte)0x00, //// Version: RDP 5.0, 5.1, 5.2, 6.0, 6.1, and 7.0 // (byte)0x00, (byte)0x04, //// DesktopWidth: 1024 (0x400) // (byte)0x00, (byte)0x03, //// DesktopHeight: 768 (0x300) // (byte)0x01, (byte)0xCA, //// ColorDepth: 8 bpp // (byte)0x03, (byte)0xAA, //// SASSequence: 0xaa03, SHOULD be set to RNS_UD_SAS_DEL(0xAA03) // (byte)0x09, (byte)0x04, (byte)0x00, (byte)0x00, //// KeyboardLayout: Language: English, Location: United States // (byte)0x28, (byte)0x0A, (byte)0x00, (byte)0x00, //// ClientBuild: 2600 (0xA28) // (byte)0x61, (byte)0x00, (byte)0x70, (byte)0x00, (byte)0x6F, (byte)0x00, (byte)0x6C, (byte)0x00, (byte)0x6C, (byte)0x00, (byte)0x6F, (byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// ClientName: apollo3 // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// KeyboardType: Undefined value: 0 // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// KeyboardSubType: 0 (0x0) // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// KeyboardFunctionKey: 0 (0x0) // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// ImeFileName: // (byte)0x01, (byte)0xCA, //// PostBeta2ColorDepth: 8 bpp // (byte)0x01, (byte)0x00, //// ClientProductId: 0x1, SHOULD be set to initialized to 1 // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// SerialNumber: 0x0, SHOULD be set to 0 // (byte)0x10, (byte)0x00, //// HighColorDepth: 16-bit 565 RGB // (byte)0x07, (byte)0x00, //// - SupportedColorDepth: 7 (0x7) //// Support24BPP: (...............1) Support 24BPP //// Support16BPP: (..............1.) Support 16BPP //// Support15BPP: (.............1..) Support 15BPP //// Support32BPP: (............0...) Not Support 32BPP //// Reserved: (000000000000....) // (byte)0x01, (byte)0x00, //// - EarlyCapabilityFlags: 1 (0x1) //// SupportSetErrorPdu: (...............1) Indicates that the client supports the Set Error Info PDU //// Want32BppSession: (..............0.) Client is not requesting 32BPP session //// SupportStatusInfoPdu: (.............0..) Client not supports the Server Status Info PDU //// StrongAsymmetricKeys: (............0...) Not support asymmetric keys larger than 512-bits //// Unused: (...........0....) //// ValidConnection: (..........0.....) Not Indicates ConnectionType field contains valid data //// SupportMonitorLayoutPdu: (.........0......) Not Indicates that the client supports the Monitor Layout PDU //// Unused2: (000000000.......) // (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// ClientDigProductId: //(byte)0x00, //// connectionType: invalid connection type //(byte)0x00, //// pad1octet: 0 (0x0) //(byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, //// ServerSelectedProtocols: TLS 1.0 //// //// - TsUd: CS_CLUSTER //// - TsUdHeader: Type = CS_CLUSTER, Length = 12 //(byte)0x04, (byte)0xC0, //// Type: CS_CLUSTER //(byte)0x0C, (byte)0x00, //// Length: 12 (0xC) //(byte)0x0D, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// - TsUdCsCluster: //// - Flags: 13 (0xD) //// RedirectedSupported: (...............................1) Support Redirected //// SessionIDFieldValid: (..............................0.) SessionID Field not Valid //// SupportedVersion: (..........................0011..) REDIRECTION_VERSION4 //// RedirectedSmartcard: (.........................0......) Not Logon with Smartcard //// Unused: (0000000000000000000000000.......) //// RedirectedSessionID: 0 (0x0) //// //// - TsUd: CS_SECURITY //// - TsUdHeader: Type = CS_SECURITY, Length = 12 //(byte)0x02, (byte)0xC0, //// Type: CS_SECURITY //(byte)0x0C, (byte)0x00, //// Length: 12 (0xC) //// //// - TsUdCsSec: //(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// - EncryptionMethod: //// Support40Bit: (...............................0) Not Support //// Support128Bit: (..............................0.) Not Support 128-bit //// Reserved1: (.............................0..) //// Support56Bit: (............................0...) Not Support 56-bit //// SupportFIPS: (...........................0....) Not Support FIPS Compliant //// Reserved2: (000000000000000000000000000.....) //(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //// - ExtEncryptionMethod: //// Support40Bit: (...............................0) Not Support //// Support128Bit: (..............................0.) Not Support 128-bit //// Reserved1: (.............................0..) //// Support56Bit: (............................0...) Not Support 56-bit //// SupportFIPS: (...........................0....) Not Support FIPS Compliant //// Reserved2: (000000000000000000000000000.....) // }); /* @formatter:on */ buf.trimAtCursor(); pushDataToOTOut(buf); switchOff(); } /** * Example. * * @see http://msdn.microsoft.com/en-us/library/cc240836.aspx */ public static void main(String args[]) { // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); // System.setProperty("streamer.Pipeline.debug", "true"); /* @formatter:off */ byte[] packet = new byte[] { // TPKT: TPKT version = 3 (byte) 0x03, (byte) 0x00, // TPKT: Packet length: 378 bytes (byte) 0x01, (byte) 0x78, // X.224: Length indicator = 2 (byte) 0x02, // X.224: Type: Data TPDU (byte) 0xf0, // X.224: EOT (byte) 0x80, // Captured packet (byte)0x7f, (byte)0x65, (byte)0x82, (byte)0x01, (byte)0x6c, (byte)0x04, (byte)0x01, (byte)0x01, (byte)0x04, (byte)0x01, (byte)0x01, (byte)0x01, (byte)0x01, (byte)0xff, (byte)0x30, (byte)0x1a, (byte)0x02, (byte)0x01, (byte)0x22, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x30, (byte)0x19, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x02, (byte)0x04, (byte)0x20, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x30, (byte)0x1f, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x02, (byte)0xfc, (byte)0x17, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x01, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x02, (byte)0x01, (byte)0x02, (byte)0x04, (byte)0x82, (byte)0x01, (byte)0x07, (byte)0x00, (byte)0x05, (byte)0x00, (byte)0x14, (byte)0x7c, (byte)0x00, (byte)0x01, (byte)0x80, (byte)0xfe, (byte)0x00, (byte)0x08, (byte)0x00, (byte)0x10, (byte)0x00, (byte)0x01, (byte)0xc0, (byte)0x00, (byte)0x44, (byte)0x75, (byte)0x63, (byte)0x61, (byte)0x80, (byte)0xf0, (byte)0x01, (byte)0xc0, (byte)0xd8, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x08, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x03, (byte)0x01, (byte)0xca, (byte)0x03, (byte)0xaa, (byte)0x09, (byte)0x04, (byte)0x00, (byte)0x00, (byte)0x28, (byte)0x0a, (byte)0x00, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x70, (byte)0x00, (byte)0x6f, (byte)0x00, (byte)0x6c, (byte)0x00, (byte)0x6c, (byte)0x00, (byte)0x6f, (byte)0x00, (byte)0x33, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0xca, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x10, (byte)0x00, (byte)0x07, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x04, (byte)0xc0, (byte)0x0c, (byte)0x00, (byte)0x0d, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0xc0, (byte)0x0c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, }; /* @formatter:on */ MockSource source = new MockSource("source", ByteBuffer.convertByteArraysToByteBuffers(new byte[] {1, 2, 3})); Element todo = new ClientMCSConnectInitial("ClientMCSConnectInitial"); Element x224 = new ClientX224DataPDU("x224"); Element tpkt = new ClientTpkt("tpkt"); Element sink = new MockSink("sink", ByteBuffer.convertByteArraysToByteBuffers(packet)); Element mainSink = new MockSink("mainSink", ByteBuffer.convertByteArraysToByteBuffers(new byte[] {1, 2, 3})); Pipeline pipeline = new PipelineImpl("test"); pipeline.add(source, todo, x224, tpkt, sink, mainSink); pipeline.link("source", "ClientMCSConnectInitial", "mainSink"); pipeline.link("ClientMCSConnectInitial >" + OTOUT, "x224", "tpkt", "sink"); pipeline.runMainLoop("source", STDOUT, false, false); } }