internal static void SendMCS(RdpPacket packet, int channel) { int length = (int)packet.Length; length |= 0x8000; RdpPacket data = new RdpPacket(); data.WriteByte((byte)(MCS.SDRQ << 2)); data.WriteBigEndian16((short)RDPClient.McsUserID); data.WriteBigEndian16((short)channel); data.WriteByte(0x70); data.WriteBigEndian16((short)length); data.copyToByteArray(packet); SendTPKT(data); }
public static void SendTPKT(RdpPacket data) { short num = (short)(data.Length + 7L); data.Position = 0L; RdpPacket packet = new RdpPacket(); packet.WriteByte(3); packet.WriteByte(0); packet.WriteBigEndian16(num); packet.WriteByte(2); packet.WriteByte(240); packet.WriteByte(0x80); packet.copyToByteArray(data); Write(packet); }
private static void SendTSRequest(RdpPacket negoTokens, byte[] auth_info, byte[] pub_key_auth) { RdpPacket packet = new RdpPacket(); ASN1.WriteTag(packet, ASN1.SequenceTag(0), "TSRequest"); ASN1.WriteTag(packet, ASN1.ContextTag(0), "CTX_Version"); ASN1.WriteInteger(packet, 2); ASN1.CloseTag(packet, "CTX_Version"); if (negoTokens != null) { ASN1.WriteTag(packet, ASN1.ContextTag(1), "CTX_NegTokens"); ASN1.WriteTag(packet, ASN1.SequenceTag(0), "NegTokens"); ASN1.WriteTag(packet, ASN1.SequenceTag(0), "NegTokens2"); ASN1.WriteTag(packet, ASN1.ContextTag(0), "CTX_OctetString"); ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString"); packet.copyToByteArray(negoTokens); ASN1.CloseTag(packet, "OctetString"); ASN1.CloseTag(packet, "CTX_OctetString"); ASN1.CloseTag(packet, "NegTokens2"); ASN1.CloseTag(packet, "NegTokens"); ASN1.CloseTag(packet, "CTX_NegTokens"); } if (auth_info != null) { ASN1.WriteTag(packet, ASN1.ContextTag(2), "CTX_AuthInfo"); ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString"); packet.Write(auth_info, 0, auth_info.Length); ASN1.CloseTag(packet, "OctetString"); ASN1.CloseTag(packet, "CTX_AuthInfo"); } if (pub_key_auth != null) { ASN1.WriteTag(packet, ASN1.ContextTag(3), "CTX_PubKeyAuth"); ASN1.WriteTag(packet, ASN1.OctetStringTag(), "OctetString"); packet.Write(pub_key_auth, 0, pub_key_auth.Length); ASN1.CloseTag(packet, "OctetString"); ASN1.CloseTag(packet, "CTX_PubKeyAuth"); } ASN1.CloseTag(packet, "TSRequest"); Send(packet); }
internal static void sendDataPDU(RdpPacket packet, PDUType2 type, int sec_flags) { RdpPacket packet2 = new RdpPacket(); packet.Position = 0L; int num = ((int)packet.Length) + 0x12; packet2.WriteLittleEndian16((short)num); packet2.WriteLittleEndian16((short)0x17); packet2.WriteLittleEndian16((short)(RDPClient.McsUserID + 0x3e9)); packet2.WriteLittleEndian32(RDPClient.rdp_shareid); packet2.WriteByte(0); packet2.WriteByte(1); packet2.WriteLittleEndian16((short)(num - 14)); packet2.WriteByte((byte)type); packet2.WriteByte(0); packet2.WriteLittleEndian16((short)0); packet2.copyToByteArray(packet); SendMCS_GlobalChannel(packet2, sec_flags); }
internal static RdpPacket sendConnectInitial(RdpPacket data) { int length = (int)data.Length; int num2 = ((((9 + domainParamSize(0x22, 2, 0, 0xffff)) + domainParamSize(1, 1, 1, 0x420)) + domainParamSize(0xffff, 0xfc17, 0xffff, 0xffff)) + 4) + length; RdpPacket packet = new RdpPacket(); sendBerHeader(packet, BER_Header.CONNECT_INITIAL, num2); sendBerHeader(packet, BER_Header.BER_TAG_OCTET_STRING, 1); packet.WriteByte(1); sendBerHeader(packet, BER_Header.BER_TAG_OCTET_STRING, 1); packet.WriteByte(1); sendBerHeader(packet, BER_Header.BER_TAG_BOOLEAN, 1); packet.WriteByte(0xff); sendDomainParams(packet, 0x22, 2, 0, 0xffff); sendDomainParams(packet, 1, 1, 1, 0x420); sendDomainParams(packet, 0xffff, 0xffff, 0xffff, 0xffff); sendBerHeader(packet, BER_Header.BER_TAG_OCTET_STRING, length); packet.copyToByteArray(data); return(packet); }