示例#1
0
        public static ObjectStats Read(NReader rdr)
        {
            ObjectStats ret = new ObjectStats();

            ret.Id       = rdr.ReadInt32();
            ret.Position = Position.Read(rdr);
            ret.Stats    = new KeyValuePair <StatsType, object> [rdr.ReadInt16()];
            for (var i = 0; i < ret.Stats.Length; i++)
            {
                StatsType type = (StatsType)rdr.ReadByte();
                if (type == StatsType.Guild || type == StatsType.Name)
                {
                    ret.Stats[i] = new KeyValuePair <StatsType, object>(type, rdr.ReadUTF());
                }
                else
                {
                    ret.Stats[i] = new KeyValuePair <StatsType, object>(type, rdr.ReadInt32());
                }
            }

            return(ret);
        }
        void ProcessCli()
        {
            try
            {
                var rdr = new NReader(new NetworkStream(skt));
                var wtr = new NWriter(dest.GetStream());
                while (true)
                {
                    int len = rdr.ReadInt32();
                    byte id = rdr.ReadByte();
                    byte[] content = rdr.ReadBytes(len - 5);

                    var state = ReceiveKey.SaveState();

                    content = ReceiveKey.Crypt(content);
                    ReceiveKey.LoadState(state);
                    //if (id == 17)
                    //{
                    //    MemoryStream ms = new MemoryStream();
                    //    using (NWriter w = new NWriter(ms))
                    //    using (NReader r = new NReader(new MemoryStream(content)))
                    //    {
                    //        w.WriteUTF(r.ReadUTF());
                    //        Console.WriteLine(r.ReadInt32()); w.Write(-3);
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.Write(r.ReadInt32());
                    //        var c = r.ReadBytes(r.ReadInt16());
                    //        w.Write((short)c.Length);
                    //        w.Write(c);
                    //        w.Write32UTF(r.Read32UTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //    }
                    //    content = ms.ToArray();
                    //}
                    if (id == 4)
                    {
                        using (NReader r = new NReader(new MemoryStream(content)))
                        {
                            var Name = rdr.ReadUTF();
                            var Host = rdr.ReadUTF();
                            var Port = rdr.ReadInt32();
                            var GameId = rdr.ReadInt32();
                            var KeyTime = rdr.ReadInt32();
                            var Key = rdr.ReadBytes(rdr.ReadInt16());
                        }
                    }
                    content = ReceiveKey.Crypt(content);
                    ReceiveKey.LoadState(state);

                    wtr.Write(len);
                    wtr.Write((byte)id);
                    wtr.Write(content);

                    cliPkts.Add(new Packet() { id = id, content = ReceiveKey.Crypt(content) });
                }
            }
            catch { }
            finally
            {
                skt.Close();
            }
            for (var i = 0; i < cliPkts.Count; i++)
                File.WriteAllBytes("cli_pkt/" + i + "_" + cliPkts[i].id, cliPkts[i].content);
        }
示例#3
0
        public static ObjectStats Read(NReader rdr)
        {
            ObjectStats ret = new ObjectStats();
            ret.Id = rdr.ReadInt32();
            ret.Position = Position.Read(rdr);
            ret.Stats = new KeyValuePair<StatsType, object>[rdr.ReadInt16()];
            for (var i = 0; i < ret.Stats.Length; i++)
            {
                StatsType type = (StatsType)rdr.ReadByte();
                if (type == StatsType.Guild || type == StatsType.Name)
                    ret.Stats[i] = new KeyValuePair<StatsType, object>(type, rdr.ReadUTF());
                else
                    ret.Stats[i] = new KeyValuePair<StatsType, object>(type, rdr.ReadInt32());
            }

            return ret;
        }
        void ProcessCli()
        {
            try
            {
                var rdr = new NReader(new NetworkStream(skt));
                var wtr = new NWriter(dest.GetStream());
                while (true)
                {
                    int len = rdr.ReadInt32();
                    byte id = rdr.ReadByte();
                    byte[] content = rdr.ReadBytes(len - 5);

                    var state = ReceiveKey.SaveState();

                    content = ReceiveKey.Crypt(content);
                    ReceiveKey.LoadState(state);
                    //if (id == 17)
                    //{
                    //    MemoryStream ms = new MemoryStream();
                    //    using (NWriter w = new NWriter(ms))
                    //    using (NReader r = new NReader(new MemoryStream(content)))
                    //    {
                    //        w.WriteUTF(r.ReadUTF());
                    //        Console.WriteLine(r.ReadInt32()); w.Write(-3);
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.Write(r.ReadInt32());
                    //        var c = r.ReadBytes(r.ReadInt16());
                    //        w.Write((short)c.Length);
                    //        w.Write(c);
                    //        w.Write32UTF(r.Read32UTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //        w.WriteUTF(r.ReadUTF());
                    //    }
                    //    content = ms.ToArray();
                    //}
                    if (id == 4)
                    {
                        using (NReader r = new NReader(new MemoryStream(content)))
                        {
                            var Name = rdr.ReadUTF();
                            var Host = rdr.ReadUTF();
                            var Port = rdr.ReadInt32();
                            var GameId = rdr.ReadInt32();
                            var KeyTime = rdr.ReadInt32();
                            var Key = rdr.ReadBytes(rdr.ReadInt16());
                        }
                    }
                    content = ReceiveKey.Crypt(content);
                    ReceiveKey.LoadState(state);


                    wtr.Write(len);
                    wtr.Write((byte)id);
                    wtr.Write(content);

                    cliPkts.Add(new Packet() { id = id, content = ReceiveKey.Crypt(content) });
                }
            }
            catch { }
            finally
            {
                skt.Close();
            }
            for (var i = 0; i < cliPkts.Count; i++)
                File.WriteAllBytes("cli_pkt/" + i + "_" + cliPkts[i].id, cliPkts[i].content);
        }