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); }
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); }
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); }