Support for newer clients

Archive of the older Feature Request Forum Posts

Moderator: POL Developer

Locked
Pierce
Forum Regular
Posts: 420
Joined: Thu Feb 02, 2006 8:33 am

Support for newer clients

Post by Pierce » Mon Feb 04, 2008 7:43 am

With client 2.48.0.3+ (KR) and 6.0.5.0+ (2D) there comes a change in handling the login packets. It would be nice if the pol core could handle that in the future.

Some information, if needed:
OK, my dear ladies and gentlemen, i want to say that NO NEW encryption was implemented in 6.0.5.0 patch. NO NEW packets were added in this patch. It was just a game for children and you're faked :)
How UO works before this patch: client sends seed (4 bytes, really local IP-address) and then sends packets for login server stage authorization.
How UO works after this patch: client sends seed (same 4 bytes), THEN SENDS 17 NEW BYTES, after this sends packets for login server state authorization. That's all! It's very simple, really? OK, now for these 17 cursed bytes
First byte is random value, usually it's last byte of seed, because first byte of seed is really new byte and our IP begins from second byte.
Next 16 bytes is client version - 00 00 00 06 00 00 00 00 00 00 00 05 00 00 00 00
So, all we need is to expand seed buffer for new clients.

Pierce
Forum Regular
Posts: 420
Joined: Thu Feb 02, 2006 8:33 am

Re: Support for newer clients

Post by Pierce » Thu Oct 30, 2008 1:25 pm

I know i'll probably stress the devs and getting on their nerves (and i am really sorry for that), but will there be a possibility to login with newer KR clients in the near future?

It's now 18 month ago i started to investigate the KR things. Thx to Shini we
could login with some nowadays very old clients. But after writing the map converter i had to stop, cause newer KR client don't work with Pol. And i don't like watching RunUO forums to see what is possible and search the info there to be not too much outdated ;)

Pierce
Forum Regular
Posts: 420
Joined: Thu Feb 02, 2006 8:33 am

Re: Support for newer clients

Post by Pierce » Tue Dec 16, 2008 8:21 am

I've done some more investigation on that by reading a few forums and together with my own old infos and e.g. Rogdushs post this really seems to be a simple change. I've just insert the 0xEF packet to the online packet doc.

If i connect with a newer KR client i get an unexpected 0xF4 message because Pol reads the 0xEF packet as it's expects the normal older 4 byte local ip adress. In my case thats xx.xx.xx.244 thats why KR is sending EF xx xx xx 244 ....... and Pol thinks 0xF4 (244) is the first incoming packet after the old 4 byte seed.

So imho we just need a:

Code: Select all

if (first_byte == 0xEF)
 first_packet_position := 22;
else
 first_packet_position := 5;
endif
:D

Nando
POL Developer
Posts: 261
Joined: Wed Sep 17, 2008 6:53 pm
Contact:

Re: Support for newer clients

Post by Nando » Tue Dec 16, 2008 6:46 pm

Pierce, this is just before the 0x80 packet? I've read somewhere that it works normal after that.

Pierce
Forum Regular
Posts: 420
Joined: Thu Feb 02, 2006 8:33 am

Re: Support for newer clients

Post by Pierce » Wed Dec 17, 2008 5:09 am

Yes it's right before the 0x80 login.

It could perhaps be combined with the ConnectUO/ListUO 0xF1 packet problem from Steve, so it's just one time work :D

Something like (in beer language ;) ):

Code: Select all

if (first_received_byte == 0xEF)
 login_packet_position := 22;
else
 login_packet_position := 5;
endif
if(byte at login_packet_position == 0x80)
 continue normal client connection;
elseif(byte at login_packet_position == 0xF1)
 don't know: allow F1 packet hook or read a specific cfg file or script to answer F1;
 login_packet_position := 9;
 if(byte at login_packet_position == 0x80)
  continue normal client connection;
 else
  disconnect;
 endif
else
 disconnect;
endif

Locked