コード例 #1
0
        public bool ProcessClientData()
        {
            switch (State)
            {
            case -1:
                //Garbage. Drop it.
                GetClientData(ClientBuffer.Length);
                return(false);

            case 0:
                if (ClientBuffer.Length < 128)
                {
                    // garbage from a running game session. we ignore it.
                    //If we open a hex File we handle it diffrent ;)
                    if (OpenFileMode == false)
                    {
                        GetClientData(ClientBuffer.Length);
                    }
                    return(false);
                }

                SecSession.ClientKey1 = GetClientData(128);
                return(true);

            case 1:
                if (ClientBuffer.Length < 128)
                {
                    return(false);
                }

                SecSession.ClientKey2 = GetClientData(128);
                return(true);
            }

            if (ClientBuffer.Length < 4)
            {
                return(false);
            }

            int length = BitConverter.ToUInt16(ClientBuffer, 0);

            if (ClientBuffer.Length < length)
            {
                return(false);
            }

            ushort opCode     = BitConverter.ToUInt16(ClientBuffer, 2);
            string opcodename = PacketTranslator.GetOpcodeName(MainWindow, opCode);

            Packet_old tmpPacket = new Packet_old(false, opCode, opcodename, GetClientData(length), false);

            string itemText = string.Format("[C] {0} [{1}]"
                                            , tmpPacket.Name
                                            , tmpPacket.Data.Length
                                            );

            MainWindow.AppendPacket(Colors.WhiteSmoke, itemText, tmpPacket);

            return(false);
        }
コード例 #2
0
        public bool ProcessServerData()
        {
            switch (State)
            {
            case -1:
                //Garbage. Drop it.
                GetServerData(ServerBuffer.Length);
                return(false);

            case 0:
                if (ServerBuffer.Length < 128)
                {
                    //First Dword 1 Options Packet. Ignore it.
                    if (OpenFileMode == false)
                    {
                        GetServerData(ServerBuffer.Length);
                    }

                    return(false);
                }

                SecSession.ServerKey1 = GetServerData(128);
                State++;
                return(true);

            case 1:
                if (ServerBuffer.Length < 128)
                {
                    return(false);
                }
                SecSession.ServerKey2 = GetServerData(128);
                SecSession.Init();
                State++;
                return(true);
            }

            if (ServerBuffer.Length < 4)
            {
                return(false);
            }

            int length = BitConverter.ToUInt16(ServerBuffer, 0);

            if (ServerBuffer.Length < length)
            {
                return(false);
            }

            ushort opCode     = BitConverter.ToUInt16(ServerBuffer, 2);
            string opcodename = PacketTranslator.GetOpcodeName(MainWindow, opCode);

            Packet_old tmpPacket = new Packet_old(true, opCode, opcodename, GetServerData(length), false);

            ;

            string itemText = string.Format("[S] {0} [{1}]"
                                            , tmpPacket.Name
                                            , tmpPacket.Data.Length
                                            );

            MainWindow.AppendPacket(Colors.LightBlue, itemText, tmpPacket);

            return(false);
        }