Skip to content

Commit f71c0b7

Browse files
committed
Address Login client packet changes for 12.40.10030
1 parent 4264d7e commit f71c0b7

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

TibiaAPI/Network/ClientPackets/Login.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class Login : ClientPacket
1212

1313
public string CharacterName { get; set; }
1414
public string SessionKey { get; set; }
15+
public string Version { get; set; }
1516

1617
public uint ChallengeTimeStamp { get; set; }
1718
public uint ClientVersion { get; set; }
@@ -36,10 +37,10 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
3637
ClientType = message.ReadUInt16();
3738
ProtocolVersion = message.ReadUInt16();
3839
ClientVersion = message.ReadUInt32();
40+
Version = message.ReadString();
3941
DatRevision = message.ReadUInt16();
4042
ClientPreviewState = message.ReadByte();
4143

42-
var rsaStartPosition = message.Position;
4344
if (message.ReadByte() != 0)
4445
{
4546
throw new Exception("[ClientPackets.Login.ParseFromNetworkMessage] RSA decryption failed.");
@@ -68,6 +69,7 @@ public override void AppendToNetworkMessage(NetworkMessage message)
6869
message.Write(ClientType);
6970
message.Write(ProtocolVersion);
7071
message.Write(ClientVersion);
72+
message.Write(Version);
7173
message.Write(DatRevision);
7274
message.Write(ClientPreviewState);
7375
message.Write((byte)0); // Start RSA block.

TibiaAPI/Network/Connection.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,10 @@ private void BeginReceiveClientCallback(IAsyncResult ar)
792792
var protocol = (int)ar.AsyncState;
793793
if (protocol == 0)
794794
{
795-
_rsa.OpenTibiaDecrypt(_clientInMessage, 18);
796-
_clientInMessage.Seek(18, SeekOrigin.Begin);
795+
var rsaStartIndex = _client.VersionNumber >= 124010030 ? 31 : 18;
796+
797+
_rsa.OpenTibiaDecrypt(_clientInMessage, rsaStartIndex);
798+
_clientInMessage.Seek(rsaStartIndex, SeekOrigin.Begin);
797799
if (_clientInMessage.ReadByte() != 0)
798800
{
799801
throw new Exception("[Connection.BeginReceiveClientCallback] RSA decryption failed.");
@@ -817,13 +819,13 @@ private void BeginReceiveClientCallback(IAsyncResult ar)
817819

818820
if (string.IsNullOrEmpty(_loginWebService))
819821
{
820-
_rsa.TibiaEncrypt(_clientInMessage, 18);
822+
_rsa.TibiaEncrypt(_clientInMessage, rsaStartIndex);
821823
}
822824
else
823825
{
824826
// If the user supplied a login web service address,
825827
// it's safe to assume it's an Open-Tibia server.
826-
_rsa.OpenTibiaEncrypt(_clientInMessage, 18);
828+
_rsa.OpenTibiaEncrypt(_clientInMessage, rsaStartIndex);
827829
}
828830

829831
SendToServer(_clientInMessage.GetData());

0 commit comments

Comments
 (0)