Esempio n. 1
0
        public void SendHandshake(ushort pVersion, string pPatchLocation, byte pLocale)
        {
            _encryptIV = new byte[4];
            rnd.NextBytes(_encryptIV);
            _decryptIV = new byte[4];
            rnd.NextBytes(_decryptIV);

            Packet packet = new Packet();
            packet.WriteUShort(pVersion);
            packet.WriteString(pPatchLocation);
            packet.WriteBytes(_decryptIV);
            packet.WriteBytes(_encryptIV);
            packet.WriteByte(pLocale);
            SendPacket(packet);
            _mapleVersion = pVersion;
            _maplePatchLocation = pPatchLocation;
            _mapleLocale = pLocale;
        }
        private void ConnectToChannelServer(Packet pPacket)
        {
            ushort status = pPacket.ReadUShort();
                string ip = string.Format("{0}.{1}.{2}.{3}", pPacket.ReadByte(), pPacket.ReadByte(), pPacket.ReadByte(), pPacket.ReadByte());
                // Ignore IP
                ushort port = pPacket.ReadUShort();
                byte[] leftover = pPacket.ReadLeftoverBytes();

                CCing = true;
                NextPort = port;

                Packet packet = new Packet();
                packet.WriteUShort(0x000B);
                packet.WriteShort(0);
                packet.WriteBytes(Constants.MapleStory_LoginIP_Bytes);
                packet.WriteUShort(8484);
                packet.WriteBytes(leftover);
                ClientSession.Instance.SendPacket(packet);

                Console.WriteLine("Status " + status + " ConnectToChannelServer: " + packet.ToString());
        }