Hello, I finding information or some help about client and gameserver encryption.
1st question is that Client 6.xx and 7.xx use TwoFish encrypt right? Because if I used in extern program for UO who was wrote before 6 years for client 2.xx than if I used 6.0.1.0 client with 2.xx encryption (game works fine!) but if I use encryption 6.0.1.0 program don't shows item in backpack, on ground, casting spells -> crashclient, ect. How is it possible? What's wrong?
2nd question is how I can watch packet from server which incoming to client?
And If I log into game witch client more 6.0.7.x program crashed, because different login packet.
And buffer lenght in this client is same as old client or not? Or just packet are different?
Thanks you for Informaation or help with this. (I would like to this program rewrite for new client) (Sorry for my bad english)
Where is a problem? With old client (client to 6.0.1.0 working) with 6.0.7.0
sending this error
1st question is that Client 6.xx and 7.xx use TwoFish encrypt right? Because if I used in extern program for UO who was wrote before 6 years for client 2.xx than if I used 6.0.1.0 client with 2.xx encryption (game works fine!) but if I use encryption 6.0.1.0 program don't shows item in backpack, on ground, casting spells -> crashclient, ect. How is it possible? What's wrong?
2nd question is how I can watch packet from server which incoming to client?
And If I log into game witch client more 6.0.7.x program crashed, because different login packet.
And buffer lenght in this client is same as old client or not? Or just packet are different?
Thanks you for Informaation or help with this. (I would like to this program rewrite for new client) (Sorry for my bad english)
Where is a problem? With old client (client to 6.0.1.0 working) with 6.0.7.0
sending this error
Code:
Phoenix.Communication.SocketException: Part predefined messages are not supported.
at Phoenix.Communication.UltimaSocket.Send(Int64 socket, Byte[] buff, Int32 len, Int32 flags) in e:\Phoenix_Source\src\Phoenix\Communication\UltimaSocket.cs:line 316
at Phoenix.Communication.CommunicationManager.OnSend(Int64 s, Byte[] buff, Int32 len, Int32 flags) in e:\Phoenix_Source\src\Phoenix\Communication\CommunicationManager.cs:line 186
at ComInterop.ComObject.ComInterop.IComObject.OnSend(Int64 socket, Byte[] buff, Int32 len, Int32 flags) in e:\Phoenix_Source\src\Phoenix\ComInterop\ComObject.cs:line 142
Phoenix.Communication.LoginSocket dump:
Socket: 1816 Address: 217.11.225.196,2593
Seed: 0
Predefined messages pending: True
Client encryption: UOEncryption.Encryption object using No encryption for encryption and No encryption for decryption.
Server encryption: UOEncryption.Encryption object using No encryption for encryption and No encryption for decryption.
Phoenix->Client: No messages pending.
Phoenix->Server: No messages pending.
Current data:
Packet id: 0xEF; 1 bytes:
EF ï
Code:
public int Send(long socket, byte[] buff, int len, int flags)
{
CommunicationManager.CheckThread();
lock (CommunicationManager.SyncRoot)
{
if (socket != this.socket) throw new ArgumentException("socket");
int buffLen = len;
// Process predefined messages
while (len > 0 && predefinedClientMsgs != null && clientMsgIndex < predefinedClientMsgs.Length)
{
if (fromClientBuffer != null) throw new SocketException("Trying to read predefined message but there are unprocessed data in buffer.", this, buff);
int msgLen = predefinedClientMsgs[clientMsgIndex];
int newLen = len - msgLen;
if (newLen < 0)
{
throw new SocketException("Part predefined messages are not supported.", this, buff);
}
byte[] msg = new byte[msgLen];
Array.Copy(buff, msg, msgLen);
byte[] newBuf = new byte[newLen];
Array.Copy(buff, msgLen, newBuf, 0, newLen);
len = newLen;
byte[] decryptedBuffer = clientEncryption.Decrypt(msg, msgLen);
ProcessMessages(decryptedBuffer, false);
}
if (len > 0)
{
byte[] decryptedBuffer = clientEncryption.Decrypt(buff, len);
ProcessMessages(decryptedBuffer, false);
}
SendData();
return buffLen;
}
}