Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }