Exemplo n.º 1
0
        private OpCodePacket GetOpCodePacket(byte[] data, PacketDirection direction)
        {
            Crypt.Decrypt(data, Constants.HEADER_SIZE, data.Length - Constants.HEADER_SIZE);

            var test = new OpCodePacket(new MemoryStream(data));

            if (test.OpCode.Id1 == 0 && !Crypt.IsInitial)
            {
                logger.Error($"{direction}: Received Zero Length packet. Payload:{BitConverter.ToString(data)}");
            }
            return(test);
        }
Exemplo n.º 2
0
        private IBasePacket GetInstance(OpCodePacket test, PacketDirection direction, byte[] data)
        {
            var packetList = direction == PacketDirection.ServerToClient ? LoginPackets.ServerToClientPackets : LoginPackets.ClientToServerPackets;
            var cp         = packetList.Where(p => p.OpCode.Match(test.OpCode)).FirstOrDefault();

            if (cp == null)
            {
                logger.Warning($"{direction}: Unknown packet {test.OpCode.ToInfoString()} Data:{BitConverter.ToString(data)}");
                return(null);
            }

            logger.Information($"{direction}: Found Packet {test.OpCode.ToInfoString()} Type:{cp.Packet}");
            var packetInstane = Activator.CreateInstance(cp.Packet, new MemoryStream(data)) as IBasePacket;

            return(packetInstane);
        }
Exemplo n.º 3
0
        private IBasePacket ParsePacket(byte[] data, PacketDirection direction)
        {
            var test = new OpCodePacket(new MemoryStream(data));

            if (test.OpCode.Id1 == 0)
            {
                Logger.Error($"{direction}: Received Zero Length packet. Payload:{BitConverter.ToString(data)}");
                return(null);
            }
            var packetList = direction == PacketDirection.ServerToClient ? GamePackets.ServerToClientPackets :
                             GamePackets.ClientToServerPackets;

            var cp = packetList.Where(p => p.OpCode.Match(test.OpCode)).FirstOrDefault();

            if (cp == null)
            {
                Logger.Warning($"{direction}: Unknown packet {test.OpCode.ToInfoString()} Data:{BitConverter.ToString(data)}");
                return(null);
            }
            Logger.Information($"{direction}: Found Packet {test.OpCode.ToInfoString()} Type:{cp.Packet} Data:{BitConverter.ToString(data)}");
            var packetInstane = Activator.CreateInstance(cp.Packet, new MemoryStream(data)) as IBasePacket;

            return(packetInstane);
        }