Exemple #1
0
        public void CheckPacket(byte[] data, GameClient client)
        {
            this.pkt = new Packet();
            pkt.SetData(data);
            this.client = client;

            switch ((PacketOpcodes)pkt.Opcode)
            {
                case PacketOpcodes.SYS_ALIVE: /* TO SKIP LOGGING THIS PACKET */ break;
                case PacketOpcodes.SYS_HANDSHAKE_RES: client.SendHandShakeRes(); break;
                default:
                    SysCons.WriteLine("Recv Unknow Packet Len({0}) Enc({1}) Opcode({2})", pkt.Lenght, pkt.Encrypt, pkt.Opcode);
                    SysCons.SavePacket(pkt.Data, pkt.Opcode);
                    break;
            }
        }
Exemple #2
0
        private int Encrypt(ref Packet pkt, int Length, uint CipherKey)
        {
            if (pkt == null)
                return 0;

            int pOff = 2, pLen = Length - pOff;
            byte[] outdata = pkt.Data;
            byte[] Plain = new byte[pLen];
            Buffer.BlockCopy(outdata, pOff, Plain, 0, pLen);

            int Off = 0;

            int Round = pLen / sizeof(uint);
            for (int i = 0; i < Round; i++)
            {
                uint RoundPlain = BitConverter.ToUInt32(Plain, Off);
                RoundPlain ^= CipherKey;
                Buffer.BlockCopy(BitConverter.GetBytes(RoundPlain), 0, Plain, Off, sizeof(uint));
                Off += sizeof(uint);
            }

            int Rest = pLen % sizeof(uint);
            for (int i = 0; i < Rest; i++)
            {
                byte RestPlain = Plain[Off];
                RestPlain ^= (byte)CipherKey;
                Plain[Off] = RestPlain;
                Off++;
            }
            Buffer.BlockCopy(Plain, 0, outdata, pOff, pLen);
            pkt.SetData(outdata);
            return Length;
        }
Exemple #3
0
        public void CheckPacket(byte[] data, CharClient client)
        {
            this.pkt = new Packet();
            pkt.SetData(data);
            this.client = client;

            switch ((PacketOpcodes)pkt.Opcode)
            {
                case PacketOpcodes.SYS_ALIVE: /* TO SKIP LOGGING THIS PACKET */ break;
                case PacketOpcodes.SYS_HANDSHAKE_RES: client.SendHandShakeRes(); break;
                case PacketOpcodes.UC_LOGIN_REQ: client.SendLoginResponse(data); break;
                case PacketOpcodes.UC_CHARACTER_SERVERLIST_REQ: client.SendServerList(false); break;
                case PacketOpcodes.UC_CHARACTER_SERVERLIST_ONE_REQ: client.SendServerList(true); break;
                case PacketOpcodes.UC_CHARACTER_LOAD_REQ: client.SendCharacterLoad(data); break;
                default:
                    SysCons.WriteLine("Recv Unknow Packet Len({0}) Enc({1}) Opcode({2})", pkt.Lenght, pkt.Encrypt, pkt.Opcode);
                    SysCons.SavePacket(pkt.Data, pkt.Opcode);
                    break;
            }
        }