Inheritance: System.IO.BinaryReader
Beispiel #1
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadUID();
     this.Unknown1 = deserializer.ReadVarint();
     byte unknown2Length = deserializer.ReadByte();
     if (unknown2Length > 161)
     {
         throw new InvalidDataException();
     }
     Unknown2 = new int[unknown2Length];
     for (int i = 0; i < Unknown2.Length; i++)
     {
         Unknown2[i] = deserializer.ReadVarint();
     }
     this.Unknown3 = deserializer.ReadUtf16String();
     this.Unknown4 = deserializer.ReadUtf16String();
     this.Unknown5 = deserializer.ReadUtf16String();
     this.Unknown6 = deserializer.ReadByte();
     this.Unknown7 = deserializer.ReadByte();
     this.Unknown8 = deserializer.ReadByte();
     this.Unknown9 = deserializer.ReadByte();
     this.Unknown10 = deserializer.ReadInt16();
     this.Unknown11 = deserializer.ReadByte();
     this.Unknown12 = deserializer.ReadByte();
 }
Beispiel #2
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = deserializer.ReadByte();
     this.Unknown2 = deserializer.ReadUtf16String();
     this.Unknown3 = deserializer.ReadUtf16String();
 }
Beispiel #3
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadUtf16String();
     this.Unknown1 = new byte[48];
     for (int i = 0; i < this.Unknown1.Length; i++)
     {
         this.Unknown1[i] = deserializer.ReadByte();
     }
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadByte();
     this.Unknown4 = deserializer.ReadVarint();
     byte unknown5Length = deserializer.ReadByte();
     if (unknown5Length > 33)
     {
         throw new InvalidDataException();
     }
     Unknown5 = new byte[unknown5Length];
     for (int i = 0; i < Unknown5.Length; i++)
     {
         Unknown5[i] = deserializer.ReadByte();
     }
     this.Unknown6 = new int[24];
     for (int i = 0; i < this.Unknown6.Length; i++)
     {
         this.Unknown6[i] = deserializer.ReadVarint();
     }
 }
Beispiel #4
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadWorldPosition();
 }
Beispiel #5
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadVarint();
     this.Unknown3 = deserializer.ReadVarint();
 }
Beispiel #6
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadVarint();
     byte unknown4Length = deserializer.ReadByte();
     if (unknown4Length > 81)
     {
         throw new InvalidDataException();
     }
     Unknown4 = new byte[unknown4Length];
     for (int i = 0; i < Unknown4.Length; i++)
     {
         Unknown4[i] = deserializer.ReadByte();
     }
     this.Unknown5 = deserializer.ReadVector4();
     this.Unknown6 = deserializer.ReadVarint();
     if (deserializer.ReadBoolean())
     {
         this.Unknown7 = new Optional<Vector4>(deserializer.ReadVector4());
     }
     else
     {
         this.Unknown7 = null;
     }
     this.Unknown8 = deserializer.ReadByte();
     this.Unknown9 = deserializer.ReadByte();
     this.Unknown10 = deserializer.ReadByte();
     this.Unknown11 = deserializer.ReadInt16();
     this.Unknown12 = deserializer.ReadInt16();
     this.Unknown13 = deserializer.ReadInt16();
 }
Beispiel #7
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadByte();
     this.Unknown4 = deserializer.ReadSingle();
 }
Beispiel #8
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = new byte[16];
     for (int i = 0; i < this.Unknown1.Length; i++)
     {
         this.Unknown1[i] = deserializer.ReadByte();
     }
 }
Beispiel #9
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadVector3();
     this.Unknown3 = deserializer.ReadVarint();
     this.Unknown4 = deserializer.ReadByte();
     this.Unknown5 = deserializer.ReadByte();
 }
Beispiel #10
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = new int[4];
     for (int i = 0; i < this.Unknown0.Length; i++)
     {
         this.Unknown0[i] = deserializer.ReadVarint();
     }
     this.Unknown1 = deserializer.ReadVarint();
 }
Beispiel #11
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = deserializer.ReadUtf16String();
     this.Unknown2 = deserializer.ReadUtf16String();
     this.Unknown3 = new string[3];
     for (int i = 0; i < this.Unknown3.Length; i++)
     {
         this.Unknown3[i] = deserializer.ReadUtf16String();
     }
 }
Beispiel #12
0
 public static uint[] ToUints(byte[] bytes)
 {
     Deserializer deserializer = new Deserializer(bytes);
     uint[] uints = new uint[5];
     uints[0] = deserializer.ReadUInt32();
     uints[1] = deserializer.ReadUInt32();
     uints[2] = deserializer.ReadUInt32();
     uints[3] = deserializer.ReadUInt32();
     uints[4] = deserializer.ReadUInt32();
     return uints;
 }
Beispiel #13
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadInt16();
     this.Unknown2 = new short[3];
     for (int i = 0; i < this.Unknown2.Length; i++)
     {
         this.Unknown2[i] = deserializer.ReadInt16();
     }
     this.Unknown3 = deserializer.ReadByte();
 }
Beispiel #14
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadVector4();
     this.Unknown4 = deserializer.ReadVarint();
     this.Unknown5 = deserializer.ReadVector4();
     this.Unknown6 = deserializer.ReadByte();
     this.Unknown7 = deserializer.ReadByte();
     this.Unknown8 = deserializer.ReadByte();
 }
Beispiel #15
0
 public void Deserialize(Deserializer deserializer)
 {
     ushort unknown0Length = deserializer.ReadUInt16();
     if (unknown0Length > 8066)
     {
         throw new InvalidDataException();
     }
     Unknown0 = new byte[unknown0Length];
     for (int i = 0; i < Unknown0.Length; i++)
     {
         Unknown0[i] = deserializer.ReadByte();
     }
 }
Beispiel #16
0
 public void Deserialize(Deserializer deserializer)
 {
     byte unknown0Length = deserializer.ReadByte();
     if (unknown0Length > 161)
     {
         throw new InvalidDataException();
     }
     Unknown0 = new int[unknown0Length];
     for (int i = 0; i < Unknown0.Length; i++)
     {
         Unknown0[i] = deserializer.ReadVarint();
     }
 }
Beispiel #17
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     byte unknown4Length = deserializer.ReadByte();
     if (unknown4Length > 31)
     {
         throw new InvalidDataException();
     }
     Unknown4 = new Struct1[unknown4Length];
     for (int i = 0; i < Unknown4.Length; i++)
     {
         Unknown4[i] = new Struct1();
     }
 }
Beispiel #18
0
 public void Deserialize(Deserializer deserializer)
 {
     byte unknown0Length = deserializer.ReadByte();
     if (unknown0Length > 97)
     {
         throw new InvalidDataException();
     }
     Unknown0 = new byte[unknown0Length];
     for (int i = 0; i < Unknown0.Length; i++)
     {
         Unknown0[i] = deserializer.ReadByte();
     }
     this.Unknown1 = deserializer.ReadUID();
 }
Beispiel #19
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     ushort unknown1Length = deserializer.ReadUInt16();
     if (unknown1Length > 4098)
     {
         throw new InvalidDataException();
     }
     Unknown1 = new byte[unknown1Length];
     for (int i = 0; i < Unknown1.Length; i++)
     {
         Unknown1[i] = deserializer.ReadByte();
     }
 }
Beispiel #20
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVarint();
     this.Unknown1 = deserializer.ReadByte();
     byte unknown2Length = deserializer.ReadByte();
     if (unknown2Length > 21)
     {
         throw new InvalidDataException();
     }
     Unknown2 = new short[unknown2Length];
     for (int i = 0; i < Unknown2.Length; i++)
     {
         Unknown2[i] = deserializer.ReadInt16();
     }
 }
Beispiel #21
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadByte();
     byte unknown1Length = deserializer.ReadByte();
     if (unknown1Length > 255)
     {
         throw new InvalidDataException();
     }
     Unknown1 = new Vector2[unknown1Length];
     for (int i = 0; i < Unknown1.Length; i++)
     {
         Unknown1[i] = deserializer.ReadVector2();
     }
     this.Unknown2 = deserializer.ReadVarint();
 }
Beispiel #22
0
        public IEnumerable<IMessage> Deserialize(ISession session, byte[] data)
        {
            Deserializer deserializer = new Deserializer(data);

            while (deserializer.BaseStream.Position < deserializer.BaseStream.Length)
            {
                byte header = deserializer.ReadByte();
                byte length = deserializer.ReadByte();

                switch (length)
                {
                    case 0x05: // Version
                        deserializer.BaseStream.Position += 2;
                        /*this.clientVersion = */deserializer.ReadUInt32();
                        deserializer.BaseStream.Position += 56; // Probably wrong offset
                        break;

                    case 0x42: // PublicKey
                        byte[] publicKey = deserializer.ReadBytes(64);
                        byte[] sharedKey = DiffieHellman.GenerateSharedKey(publicKey, Keys.PrivateKey, Keys.Prime);
                        byte[] randomBytes = CryptoUtils.GetRandomBytes();
                        byte[] hashedRandomBytes = CryptoUtils.Hash(randomBytes);
                        byte[] xoredRandomBytes = CryptoUtils.XOR(randomBytes, sharedKey);
                        this.key = hashedRandomBytes;

                        Serializer serializer = new Serializer();
                        serializer.Write((byte)0x01); // RC4Seed Header
                        serializer.Write((byte)0x16); // RC4Seed Length
                        serializer.Write(xoredRandomBytes); // xored RC4Key

                        session.Send(serializer.GetBytes());

                        session.State = prepareNewState();

                        break;

                    default:
                        Console.WriteLine("Unhandled packet, header: {0}, length: {1}", header, length);
                        break;
                }
            }

            // mock up, since we return the byte-encoded messages directly
            return new IMessage[] {};
        }
Beispiel #23
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadInt16();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadByte();
     this.Unknown3 = deserializer.ReadVarint();
     byte unknown4Length = deserializer.ReadByte();
     if (unknown4Length > 81)
     {
         throw new InvalidDataException();
     }
     Unknown4 = new byte[unknown4Length];
     for (int i = 0; i < Unknown4.Length; i++)
     {
         Unknown4[i] = deserializer.ReadByte();
     }
     this.Unknown5 = deserializer.ReadInt16();
 }
Beispiel #24
0
        public IEnumerable<IMessage> CreateMessages(byte[] data)
        {
            var deserializer = new Deserializer(data);

            // template method call
            var message = this.CreateEmptyMessage((ushort) deserializer.ReadInt16());

            // TODO: implement stream chopping and stream combination here somhow, or in the Deserializer

            // check if the data is enough, in that case return and save the data in between or something

            message.Deserialize(deserializer);

            // check if we got leftover data
            // or simply return the message we just read
            if (deserializer.IsEmpty()) { return new List<IMessage> { message }; }

            // else invoke this method with the leftover data, and add the messages to the list of messages
            // maybe yield the messages one after another?
            return new List<IMessage>();
        }
Beispiel #25
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadByte();
     this.Unknown1 = deserializer.ReadVarint();
     this.Unknown2 = deserializer.ReadInt16();
     this.Unknown3 = deserializer.ReadUtf16String();
     this.Unknown4 = deserializer.ReadVarint();
     this.Unknown5 = deserializer.ReadUtf16String();
     this.Unknown6 = deserializer.ReadInt16();
     this.Unknown7 = deserializer.ReadVarint();
     this.Unknown8 = deserializer.ReadVarint();
     this.Unknown9 = deserializer.ReadVarint();
     this.Unknown10 = deserializer.ReadInt16();
     this.Unknown11 = deserializer.ReadVarint();
     this.Unknown12 = deserializer.ReadInt16();
     this.Unknown13 = deserializer.ReadInt16();
     this.Unknown14 = deserializer.ReadInt16();
     this.Unknown15 = deserializer.ReadInt16();
     this.Unknown16 = deserializer.ReadInt16();
     this.Unknown17 = deserializer.ReadByte();
     this.Unknown18 = deserializer.ReadUID();
     this.Unknown19 = deserializer.ReadUtf16String();
 }
Beispiel #26
0
 public void Deserialize(Deserializer deserializer)
 {
 }
Beispiel #27
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadAsciiString();
 }
Beispiel #28
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadUID();
 }
Beispiel #29
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadUtf16String();
     this.Unknown1 = deserializer.ReadUtf16String();
 }
Beispiel #30
0
 public void Deserialize(Deserializer deserializer)
 {
     this.Unknown0 = deserializer.ReadVector2();
     this.Unknown1 = deserializer.ReadByte();
 }