Page 1 of 1

UT99 Master Server address format

Posted: Sat Mar 31, 2018 4:06 am
by Higor
Has anyone tried seeing if it's possible to spoof the server's ip address when communicating with the master server?
The intent is not to try to exploit (I assume the server is already safe from that).

If the master server does indeed store the server address as a standard string instead of IP, then it's possible to send a resolvable hostname, or even a IPv6 address to it.
While the game has no support for IPv6 (that's not a problem to implement at all), hostname resolution can help servers with dynamic ip addresses.

Re: UT99 Master Server address format

Posted: Sat Mar 31, 2018 12:00 pm
by Feralidragon
While I don't know if it was ever tried, that would be a good question to ask to Darkelarious directly, since he made a master server of his own.
And even if the original master server only accepts IPs (IPv4), maybe his may accept something more already, or in the future if asked I would say.

Re: UT99 Master Server address format

Posted: Sat Mar 31, 2018 7:55 pm
by Higor
[Turns on the batsignal]

Re: UT99 Master Server address format

Posted: Sun Apr 01, 2018 12:21 am
by Hook
Higor wrote:[Turns on the batsignal]
FYI Darkelarious has been pretty busy lately, but he could see this soon I would guess, as he generally responds to us within a few days or less when needed.

Re: UT99 Master Server address format

Posted: Mon Apr 02, 2018 10:17 pm
by Darkelarious
Higor wrote:[Turns on the batsignal]
* Ropes in from the dark *

At the moment the 333networks masterserver looks at the UDP packet headers. Those can be spoofed as far as I know. But then the 333networks masterserver uses the secure/validate challenge to determine whether this server is reachable and legitimate before it can be added to the masterserver list.

Regarding IPv6 and hostnames; 333networks only stores IPv4 addresses in the database for now. I do not have a plan for IPv6 support, but I welcome suggestions for the implementation.

Re: UT99 Master Server address format

Posted: Mon Apr 02, 2018 10:37 pm
by Higor
I've done my research on the epic games masterserver and news are bad.

It does store in string format, but it takes the ip address from the UDP headers too.
And when validating a server it will take said address without any form of hostname conversion.

Proposed update for 333networks:

- Game Server can send his heartbeat using an additional value: "\\hostname\\"
- Master Server can detect and do the following:
-- Resolve address.
-- If address matches the packet's address, then store server in list as hostname (additional var?).
-- If address doesn't match or resolution fails, store the ip only.

UT Client's server browsers fully support hostnames so the game itself wouldn't need to be updated at all.
Also, when a client adds one of these servers to favorites, the entry will be saved with 'hostname' instead of 'ip'.

Also, you've probably noticed this in the server's uplink:

Code: Select all

	if( MasterServerAddress ~= "" )
		HeartbeatMessage = "\\heartbeat\\"$Query.Port$"\\gamename\\"$Query.GameName$"\\gamever\\"$Level.EngineVersion;
		HeartbeatMessage = "\\heartbeat\\"$Query.Port$"\\gamename\\"$Query.GameName;
If you want to implement the \\gamever\\ key, let me know and I'll remove that conditional in a XC_Engine update (so all master servers receive gamever).
If you'd like additional keywords to be sent (333networks-only feature), now's the chance.