About SERVER_CHAT_INDEX (0xB025) packet

01/12/2017 18:10 "Abner"#1
I'm trying to bypass the "Cannot find [charname]" while sending a private message, and I've found that 0xB025 packet sent from the client somehow is the packet that allow the message to look like it is sent. However, when i push the packet to the client it shows all chat message, and sometimes it succeed..
Push code:
Packet packet = new Packet(0xB025);
packet.WriteUInt8(0x01);
packet.WriteUInt8(0x02); ---
problem in this two lines
packet.WriteUInt8(0x00); ---
Any hints would be really appreciated
Best,
01/12/2017 19:09 LasEm#2
RESPONSE

0xB025 - SERVER_AGENT_CHAT_RESPONSE

1 byte result
if(result == 2)
{
2 ushort errorCode
}
1 byte chatType
1 byte chatIndex
01/12/2017 19:46 "Abner"#3
This part i already get, that's what i'm working on, the chat index is somehow changed auto on every response, is there any way to enter the correct chatindex automatically every time...
best,
01/12/2017 20:44 DaxterSoul#4
Quote:
Originally Posted by LasEm View Post
RESPONSE

0xB025 - SERVER_AGENT_CHAT_RESPONSE

1 byte result
if(result == 2)
{
2 ushort errorCode
}
1 byte chatType
1 byte chatIndex
Thank you for heartlessly copy-pasting this mess, but it looks better with [Only registered and activated users can see links. Click Here To Register...] ;)

Anyways...
Quote:
is there any way to enter the correct chatindex automatically every time...
The chatIndex is always counting up for every CHAT_REQUEST the client sends (no matter what chatType and even if the target is not found).

Track the index yourself or copy it from the response. Also, don't hardcode the chatType.

Code:
if (packet.Opcode == 0xB025)
{
    byte result = packet.ReadByte();
    if (result == 2)
    {
        var errorCode = packet.ReadUShort();
        var chatType = packet.ReadByte();
        var chatIndex = packet.ReadByte();

        if (errorCode == 3) //UIIT_CHATERR_CANT_FIND_TARGET
        {
            var replace = new Packet(packet.Opcode, packet.Encrypted, packet.Massive);
            replace.WriteByte(1); //success
            replace.WriteByte(chatType);
            replace.WriteByte(chatIndex);

            ag_local_security.Send(replace);
            continue;
        }
    }
}
[Only registered and activated users can see links. Click Here To Register...]
01/12/2017 22:16 "Abner"#5
I believe this code/method will work if you have a packet filter on clientside, but any idea how to do it on server side, as its a s->c packet..
Ps: thanks for your reply


Sent from my CHM-U01 using Tapatalk
01/12/2017 23:36 ​Exo#6
Quote:
Originally Posted by "Abner" View Post
I believe this code/method will work if you have a packet filter on clientside, but any idea how to do it on server side, as its a s->c packet..
Ps: thanks for your reply


Sent from my CHM-U01 using Tapatalk
Here's an idea! Run the filter on server side.
[Only registered and activated users can see links. Click Here To Register...]
01/13/2017 09:16 "Abner"#7
Oh, really sorry for being dump, wasn't having enough sleep...
Just did a typo on the packet, thanks for your help
01/13/2017 13:12 Isoline#8
Thanks daxter aswell here