Skip to content

Commit 83a83fd

Browse files
committed
Log packet data in debug mode
Using positions in the NetworkMessage, this will extract and log just the bytes for the parsed packet.
1 parent b8ae0cd commit 83a83fd

2 files changed

Lines changed: 39 additions & 7 deletions

File tree

TibiaAPI/Network/ClientPackets/Login.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
5959
ChallengeRandom = message.ReadByte();
6060

6161
// Skip the RSA encryption junk data.
62-
var rsaEndPosition = message.Position;
63-
message.Seek((int)(128 - (rsaStartPosition - rsaEndPosition)), SeekOrigin.Current);
62+
message.Seek((int)message.Size, SeekOrigin.Begin);
6463
}
6564

6665
public override void AppendToNetworkMessage(NetworkMessage message)

TibiaAPI/Network/Communication.cs

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55

66
using OXGaming.TibiaAPI.Constants;
7+
using OXGaming.TibiaAPI.Utilities;
78

89
namespace OXGaming.TibiaAPI.Network
910
{
@@ -339,6 +340,7 @@ public void ParseClientMessage(Client client, NetworkMessage inMessage, NetworkM
339340
var packetPosition = 0u;
340341
var currentPacket = ClientPacketType.Invalid;
341342
var lastKnownPacket = ClientPacketType.Invalid;
343+
byte[] packetData = null;
342344

343345
try
344346
{
@@ -353,12 +355,19 @@ public void ParseClientMessage(Client client, NetworkMessage inMessage, NetworkM
353355
}
354356
}
355357

358+
if (client.Logger.Level == Logger.LogLevel.Debug)
359+
{
360+
packetData = inMessage.GetData();
361+
}
362+
356363
while (inMessage.Position < inMessage.Size)
357364
{
358365
packetPosition = inMessage.Position;
359-
currentPacket = (ClientPacketType)inMessage.ReadByte();
360366

361-
client.Logger.Debug($"[CLIENT:{inMessage.SequenceNumber}] {currentPacket}");
367+
var opcode = inMessage.ReadByte();
368+
currentPacket = (ClientPacketType)opcode;
369+
370+
client.Logger.Debug($"[CLIENT:{inMessage.SequenceNumber}] {opcode:X2} - {currentPacket}");
362371

363372
var packet = ClientPacket.CreateInstance(client, currentPacket);
364373
packet.ParseFromNetworkMessage(inMessage);
@@ -811,6 +820,14 @@ public void ParseClientMessage(Client client, NetworkMessage inMessage, NetworkM
811820

812821
packets.Add((currentPacket, packetPosition));
813822
lastKnownPacket = currentPacket;
823+
824+
if (client.Logger.Level == Logger.LogLevel.Debug && packetData != null)
825+
{
826+
var len = inMessage.Position - packetPosition;
827+
var data = new byte[len];
828+
Array.Copy(packetData, packetPosition, data, 0, len);
829+
client.Logger.Debug($"{BitConverter.ToString(data).Replace('-', ' ')}");
830+
}
814831
}
815832
}
816833
catch (Exception ex)
@@ -842,15 +859,23 @@ public void ParseServerMessage(Client client, NetworkMessage inMessage, NetworkM
842859
var packetPosition = 0u;
843860
var currentPacket = ServerPacketType.Invalid;
844861
var lastKnownPacket = ServerPacketType.Invalid;
862+
byte[] packetData = null;
845863

846864
try
847865
{
866+
if (client.Logger.Level == Logger.LogLevel.Debug)
867+
{
868+
packetData = inMessage.GetData();
869+
}
870+
848871
while (inMessage.Position < inMessage.Size)
849872
{
850873
packetPosition = inMessage.Position;
851-
currentPacket = (ServerPacketType)inMessage.ReadByte();
852874

853-
client.Logger.Debug($"[SERVER:{inMessage.SequenceNumber}] {currentPacket}");
875+
var opcode = inMessage.ReadByte();
876+
currentPacket = (ServerPacketType)opcode;
877+
878+
client.Logger.Debug($"[SERVER:{inMessage.SequenceNumber}] {opcode:X2} - {currentPacket}");
854879

855880
var packet = ServerPacket.CreateInstance(client, currentPacket);
856881
packet.ParseFromNetworkMessage(inMessage);
@@ -1396,6 +1421,14 @@ public void ParseServerMessage(Client client, NetworkMessage inMessage, NetworkM
13961421

13971422
packets.Add((currentPacket, packetPosition));
13981423
lastKnownPacket = currentPacket;
1424+
1425+
if (client.Logger.Level == Logger.LogLevel.Debug && packetData != null)
1426+
{
1427+
var len = inMessage.Position - packetPosition;
1428+
var data = new byte[len];
1429+
Array.Copy(packetData, packetPosition, data, 0, len);
1430+
client.Logger.Debug($"{BitConverter.ToString(data).Replace('-', ' ')}");
1431+
}
13991432
}
14001433
}
14011434
catch (Exception ex)
@@ -1405,7 +1438,7 @@ public void ParseServerMessage(Client client, NetworkMessage inMessage, NetworkM
14051438
// possible and continue.
14061439
client.Logger.Error(ex.ToString());
14071440
client.Logger.Error($"Current position: {inMessage.Position}");
1408-
client.Logger.Error($"Current packet: [{((byte)currentPacket).ToString("X2")}:{packetPosition}]{currentPacket}");
1441+
client.Logger.Error($"Current packet: [{(byte)currentPacket:X2}:{packetPosition}]{currentPacket}");
14091442
client.Logger.Error($"Last known packets: {string.Join(" ", packets.Select(p => "[" + ((byte)p.PacketType).ToString("X2") + ":" + p.Position + "]" + p.PacketType).ToArray())}");
14101443
client.Logger.Error($"Data: {BitConverter.ToString(inMessage.GetData()).Replace('-', ' ')}");
14111444
}

0 commit comments

Comments
 (0)