public void setName(CString pBuffer)
		{
			// Grab Type
			int i = 0;
			CString servername = pBuffer;
			string firsttwo = servername.ReadChars(2);
			this.type = "";
			foreach (string serverType in serverTypes)
			{
				if (firsttwo == serverType)
				{
					pBuffer.Remove(0, 2);
					//Console.WriteLine(pBuffer.Text);
					this.type = firsttwo.ToString();
					break;
				}
				i++;
			}
			
			if (this.type == "3 ")
				this.type = "1";
			else if (this.type == "P ")
				this.type = "2";
			else if (this.type == "")
				this.type = "3";
			else if (this.type == "H ")
				this.type = "4";
			else if (this.type == "U ")
				this.type = "5";
			// Set Name
			this.name = pBuffer.Text.ToString();
		}
Esempio n. 2
0
        /// <summary>
        /// Decrypt Packet
        /// </summary>
        public void DecryptPacket(CString Packet)
        {
            // Encryption Type
            Encrypt.Type EncryptType = Encrypt.Type.UNCOMPRESSED;

            // Generation Type
            switch (mCodec.Gen)
            {
            // Unencrypted Packets
                case Encrypt.Generation.GEN1:
                case Encrypt.Generation.GEN2:
                    return;

            // Zlib
                case Encrypt.Generation.GEN3:
                    mCodec.Apply(Encrypt.CryptType.DECRYPT, Packet, Encrypt.Type.UNCOMPRESSED);
                    return;

            // BZip2
                case Encrypt.Generation.GEN4:
                    EncryptType = Encrypt.Type.BZ2;
                    break;

            // BZip2 / Zlib
                case Encrypt.Generation.GEN5:
                    EncryptType = (Encrypt.Type)Packet.ReadByte();
                    Packet.Remove(0, 1);
                    break;
            }

            // Decrypt Packet
            mCodec.Apply(Encrypt.CryptType.DECRYPT, Packet, EncryptType);

            // Uncompress Packet
            if (EncryptType == Encrypt.Type.ZLIB)
                Packet.ZDecompress();
            else if (EncryptType == Encrypt.Type.BZ2)
                Packet.BDecompress();
        }
Esempio n. 3
0
        /// <summary>
        /// Apply Encryption
        /// </summary>
        public void Apply(CryptType Crypt, CString Buffer)
        {
            // Apply the correct decryption algorithm
            switch (mGeneration)
            {
            // No Encryption
                case Generation.GEN1:
                case Generation.GEN2:
                    return;

            // Single byte insertion/zlib compression
                case Generation.GEN3:
                    mIterator[(Int32)Crypt] *= 0x8088405;
                    mIterator[(Int32)Crypt] += mKey;
                    Buffer.Remove((((Int32)mIterator[(Int32)Crypt] & 0x0FFFF) % Buffer.Length), 1);
                    break;

            // Partial packet encryption/none, zlib, bz2 compression methods.
            // Gen 4 is only bz2.
                case Generation.GEN4:
                case Generation.GEN5:
                    for (int i = 0; i < Buffer.Length; i++)
                    {
                        if (i % 4 == 0)
                        {
                            if (mLimit == 0)
                                return;

                            mIterator[(Int32)Crypt] *= 0x8088405;
                            mIterator[(Int32)Crypt] += mKey;
                            if (mLimit > 0)
                                mLimit--;
                        }

                        Buffer[i] ^= (Byte)((mIterator[(Int32)Crypt] >> ((i % 4) * 8)) & 0xFF);
                    }
                    break;

            // Future Encryption Method (Graal V6)
                case Generation.GEN6:
                    break;
            }
        }