Ejemplo n.º 1
0
        void Process(object sender, SocketAsyncEventArgs e)
        {
            try
            {
                var socket        = e.UserToken as Socket;
                var recievedBytes = e.BytesTransferred;

                if (recievedBytes != 0)
                {
                    // Enable packet encryption.
                    if (Crypt == null && dataBuffer[0] == 0x45 && dataBuffer[1] == 0x01)
                    {
                        Crypt = new BNetCrypt(SecureRemotePassword.SessionKey);

                        Buffer.BlockCopy(dataBuffer, 2, dataBuffer, 0, recievedBytes -= 2);

                        Log.Debug($"Encryption for account '{Account.Id}' enabled");
                    }

                    if (Crypt != null && Crypt.IsInitialized)
                    {
                        Crypt.Decrypt(dataBuffer, recievedBytes);
                    }

                    ProcessPacket(recievedBytes);

                    if (client != null)
                    {
                        client.ReceiveAsync(e);
                    }
                }
                else
                {
                    socket.Close();
                }
            }
            catch (Exception ex)
            {
                Dispose();

                ExceptionLog.Write(ex);

                Log.Error(ex.Message);
            }
        }
Ejemplo n.º 2
0
        void Process(object sender, SocketAsyncEventArgs e)
        {
            try
            {
                var socket        = e.UserToken as Socket;
                var recievedBytes = e.BytesTransferred;

                if (recievedBytes != 0)
                {
                    if (Crypt == null && dataBuffer[0] == 0x45 && dataBuffer[1] == 0x01)
                    {
                        Crypt = new BNetCrypt(SecureRemotePassword.SessionKey);

                        Buffer.BlockCopy(dataBuffer, 2, dataBuffer, 0, recievedBytes -= 2);

                        Log.Message(LogType.Debug, "Encryption for account '{0}' enabled", Account.Id);
                    }

                    if (Crypt != null && Crypt.IsInitialized)
                    {
                        Crypt.Decrypt(dataBuffer, recievedBytes);
                    }

                    ProcessPacket(recievedBytes);

                    client.ReceiveAsync(e);
                }
                else
                {
                    socket.Close();
                }
            }
            catch (Exception ex)
            {
                Log.Message(LogType.Error, "{0}", ex.Message);
            }
        }