コード例 #1
0
        public void handlePacketData(byte[] data)
        {
            int pos = 0;

            while (pos < data.Length)
            {
                try
                {
                    int MessageLength = Base64Encoding.DecodeInt32(new byte[] { data[pos++], data[pos++], data[pos++] });
                    int MessageId     = Base64Encoding.DecodeInt32(new byte[] { data[pos++], data[pos++] });

                    byte[] Content = new byte[MessageLength - 2];

                    for (int i = 0; i < Content.Length && pos < data.Length; i++)
                    {
                        Content[i] = data[pos++];
                    }
                    if (onNewPacket != null)
                    {
                        using (ClientMessage message = ClientMessageFactory.GetClientMessage(MessageId, Content))
                        {
                            onNewPacket.Invoke(message);
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.HandleException(e, "packet handling");
                    con.Dispose();
                }
            }
        }
コード例 #2
0
        public void handlePacketData(byte[] data)
        {
            int position = 0;

            while (position < data.Length)
            {
                try
                {
                    var MessageLength = HabboEncoding.DecodeInt32(new byte[] { data[position++], data[position++], data[position++], data[position++] });
                    if (MessageLength < 2 || MessageLength > 4096)
                    {
                        continue;
                    }

                    var MessageId = HabboEncoding.DecodeInt16(new byte[] { data[position++], data[position++] });
                    var Content   = new byte[MessageLength - 2];

                    Buffer.BlockCopy(data, position, Content, 0, MessageLength - 2);
                    position += MessageLength - 2;

                    if (onNewPacket != null)
                    {
                        using (ClientMessage message = ClientMessageFactory.GetClientMessage(MessageId, Content))
                        {
                            onNewPacket.Invoke(message);
                        }
                    }
                }
                catch { }
            }
        }
コード例 #3
0
 /// <summary>
 /// Handles the message.
 /// </summary>
 /// <param name="messageId">The message identifier.</param>
 /// <param name="packetContent">Content of the packet.</param>
 /// <param name="position">The position.</param>
 /// <param name="packetLength">Length of the packet.</param>
 private void HandleMessage(int messageId, byte[] packetContent, int position, int packetLength)
 {
     using (ClientMessage clientMessage = ClientMessageFactory.GetClientMessage(messageId, packetContent, position, packetLength))
         if (_currentClient?.GetMessageHandler() != null)
         {
             _currentClient.GetMessageHandler().HandleRequest(clientMessage);
         }
 }
コード例 #4
0
        public void handlePacketData(byte[] data)
        {
            int pos = 0;

            while (pos < data.Length)
            {
                try
                {
                    int MessageLength = HabboEncoding.DecodeInt32(new byte[] { data[pos++], data[pos++], data[pos++], data[pos++] });
                    if (MessageLength < 2 || MessageLength > 1024)
                    {
                        //Logging.WriteLine("bad size packet!");
                        continue;
                    }
                    int MessageId = HabboEncoding.DecodeInt16(new byte[] { data[pos++], data[pos++] });



                    byte[] Content = new byte[MessageLength - 2];

                    for (int i = 0; i < Content.Length && pos < data.Length; i++)
                    {
                        Content[i] = data[pos++];
                    }

                    //Logging.WriteLine("[REQUEST] [" + MessageId + " / len: " + MessageLength + "] => " + Encoding.Default.GetString(Content).Replace(Convert.ToChar(0).ToString(), "{char0}"));

                    if (onNewPacket != null)
                    {
                        using (ClientMessage message = ClientMessageFactory.GetClientMessage(MessageId, Content))
                        {
                            onNewPacket.Invoke(message);
                        }
                    }
                }
                catch (Exception e)
                {
                    int MessageLength = HabboEncoding.DecodeInt32(new byte[] { data[pos++], data[pos++], data[pos++], data[pos++] });
                    int MessageId     = HabboEncoding.DecodeInt16(new byte[] { data[pos++], data[pos++] });
                    Logging.HandleException(e, "packet handling ----> " + MessageId);
                    con.Dispose();
                }
            }
        }
コード例 #5
0
        public void handlePacketData(byte[] data)
        {
            int i = 0;

            if (currentClient != null && currentClient.ARC4 != null)
            {
                currentClient.ARC4.Decrypt(ref data);
            }
            checked
            {
                while (i < data.Length)
                {
                    try
                    {
                        int num = HabboEncoding.DecodeInt32(new byte[]
                        {
                            data[i++],
                            data[i++],
                            data[i++],
                            data[i++]
                        });
                        if (num >= 2 && num <= 1024)
                        {
                            int messageId = HabboEncoding.DecodeInt16(new byte[]
                            {
                                data[i++],
                                data[i++]
                            });
                            byte[] array = new byte[num - 2];
                            int    num2  = 0;
                            while (num2 < array.Length && i < data.Length)
                            {
                                array[num2] = data[i++];
                                num2++;
                            }
                            if (this.onNewPacket != null)
                            {
                                using (ClientMessage clientMessage = ClientMessageFactory.GetClientMessage(messageId, array))
                                {
                                    this.onNewPacket(clientMessage);
                                }
                            }
                        }
                    }
                    catch (Exception pException)
                    {
                        HabboEncoding.DecodeInt32(new byte[]
                        {
                            data[i++],
                            data[i++],
                            data[i++],
                            data[i++]
                        });
                        int num3 = HabboEncoding.DecodeInt16(new byte[]
                        {
                            data[i++],
                            data[i++]
                        });
                        Logging.HandleException(pException, "packet handling ----> " + num3);
                        this.con.Dispose();
                    }
                }
            }
        }