Page 1 of 6

Project: Independant MSL / Server Lister

Posted: 21 Mar 2009, 03:46
by ~Sanguine{DXA}Rose~
As I originally posted in DXA Forums:

Greetings my children,
In approximately 2 weeks or less time this project shall be completed and posted.

Project Info:

I am going to code an independant MSL from DX, it should be approximately 100kb-150kb executable
depending on the platform. Versions of the code will run on: Linux, BSD, Windows, and MAC OS/X.

There will also be a DX server query program as well that will connect to a MSL and download the server
data. This will be able to run on: Linux, BSD, Windows, and MAC OS/X.

This code will be released in Full along with a library version of the code for which you can include in
your own code or a possible windows/linux library version of it. I rarely do any coding if any in windows
so it may be a while for a windows dll to be available for use.

This program will be a fully featured CLI (Command Line Interface) program. It will be fast and portable
to every known operating system able to run code. This includes the MSL and the Server Lister. The
code can be modified to be used by Rune, Unreal, Unreal Tournament, etc. basically anything that uses
Unreal 1 Game Engine.

Code License:
BSD Style License

* Copyright (c) <year>, <copyright holder>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY <copyright holder> ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Inspiration for this project:

http://www.dxalpha.com/forum/viewtopic. ... 63&start=0

To urine off HDD21.

There is another post I believe in R T K were he mentions he wrote the MSL in C code and
cried about never releasing it to us assholes. This is why the code of choice for this project
will be in C with added support that will make it portable to every known OS/Platform.


That is all my children,
~Sanguine~


I have figured out the handshake so its going to be really soon that this will be
released or a beta version of it as a prof of concept. This should be allot more stable
then using Unreal to run a MSL. The protocol is not that complex or really that mysterious.
The Handshake responses are a variation of ARC4 Encryption using a private key
created by the name of the game used.

:D

Edit:

The MSL has been sourceforged:

http://openmsl.sourceforge.net/

Posted: 21 Mar 2009, 05:17
by Kaiden
After re-reading this topic 3 times I think I understand it.

You're basically remaking Deus Ex Server List?

Image

(Only version I have, there are later versions).

Posted: 21 Mar 2009, 10:17
by ~Sanguine{DXA}Rose~
Kaiden wrote:After re-reading this topic 3 times I think I understand it.

You're basically remaking Deus Ex Server List?

Image

(Only version I have, there are later versions).
It's goal is a MSL not that. The functionality of dxsl will be included in it
but it is not close to it. Instead of relying on Unreal MSL code I am making one
independent of that code that will be a native linux server which would be
more stable.

Posted: 21 Mar 2009, 14:15
by {17}star
me playing a nobb what is an msl??

Posted: 21 Mar 2009, 16:29
by ~][FGS][Nobody~
Master server list.

Posted: 22 Mar 2009, 13:42
by {17}star
okiez ty
:-)

Posted: 23 Mar 2009, 20:51
by [FGS]Hawk
Uhm... what is a MSL? Do you mean a independent Master Server utility?

If you mean that, there is already one around: UMSE (Unreal MasterServer Emulator) by DejaVu. Its yet unreleased, because of possible insecurity, but I could modify it for more security.

Posted: 24 Mar 2009, 08:25
by ~Sanguine{DXA}Rose~
[FGS]Hawk wrote:Uhm... what is a MSL? Do you mean a independent Master Server utility?

If you mean that, there is already one around: UMSE (Unreal MasterServer Emulator) by DejaVu. Its yet unreleased, because of possible insecurity, but I could modify it for more security.
Finally someone who knows what I'm doing!

The Major difference is that I'm releasing the full code instead of hiding it. I am also
pretty sure its going be coded better then that as well. Chances are it the same possible
insecurity as what I have foreseen while codding it so far.

As it stands I'm scrapping the Basic Auth from it and going to try to get a working beta
version before I mess anymore with the Handshake. It will take some time before I am
even able to figure out how it works precisely. I know the encryption routines because
I've seen the source code for them. I'm not sure exactly how they are implemented.

Basically this means its Authenticates anyone even with invalid handshake response
to get a server listing. I'll work on this later after I release the initial version.

Posted: 24 Mar 2009, 11:38
by ~][FGS][Nobody~
[DXA]Sanguine wrote: Basically this means its Authenticates anyone even with invalid handshake response
to get a server listing.
That doesn't make sense.

Posted: 24 Mar 2009, 17:00
by ~Sanguine{DXA}Rose~
~][FGS][Nobody~ wrote:
[DXA]Sanguine wrote: Basically this means its Authenticates anyone even with invalid handshake response
to get a server listing.
That doesn't make sense.
The protocol allows it LOL. Master server sends the Authentication string, MSL says
what ever and sends them the list when they send the response. Hence Authentication
with invalid handshake responses.

MSL Says: AZIGCV
DX Response: RCa/Ynig

The point being im ignoring the DX response and just validating it.

I think this explains it?

The MSL:

Code: Select all

18:19:09.056325 IP (tos 0x20, ttl 111, id 18888, offset 0, flags [DF], proto TCP (6), length 74) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: P, cksum 0x5f4b (correct), 1:23(22) ack 1 win 17520 <nop,nop,timestamp 83411180 24690411>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  004a 49c8 4000 6f06 24e5 cf26 0bae c0a8  .JI.@.o.$..&....
	0x0020:  0164 70e4 90b1 7f9a 74af 3587 63af 8018  .dp.....t.5.c...
	0x0030:  4470 5f4b 0000 0101 080a 04f8 c0ec 0178  Dp_K...........x
	0x0040:  beeb 5c62 6173 6963 5c5c 7365 6375 7265  ..\basic\\secure
	0x0050:  5c41 5a49 4743 5600                      \AZIGCV.
The Client:

Code: Select all

18:19:09.056590 IP (tos 0x0, ttl 64, id 56701, offset 0, flags [DF], proto TCP (6), length 133) 192.168.1.100.37041 > match.gta4ps3.gamespy.com.28900: P, cksum 0xdc8a (correct), 1:82(81) ack 23 win 46 <nop,nop,timestamp 24690447 83411180>
	0x0000:  0012 171b 6a5f 001e 4c95 6916 0800 4500  ....j_..L.i...E.
	0x0010:  0085 dd7d 4000 4006 c014 c0a8 0164 cf26  ...}@.@......d.&
	0x0020:  0bae 90b1 70e4 3587 63af 7f9a 74c5 8018  ....p.5.c...t...
	0x0030:  002e dc8a 0000 0101 080a 0178 bf0f 04f8  ...........x....
	0x0040:  c0ec 5c67 616d 656e 616d 655c 6465 7573  ..\gamename\deus
	0x0050:  6578 5c6c 6f63 6174 696f 6e5c 305c 7661  ex\location\0\va
	0x0060:  6c69 6461 7465 5c52 4361 2f59 6e69 675c  lidate\RCa/Ynig\
	0x0070:  6669 6e61 6c5c 5c6c 6973 745c 5c67 616d  final\\list\\gam
	0x0080:  656e 616d 655c 6465 7573 6578 5c66 696e  ename\deusex\fin
	0x0090:  616c 5c                                  al\
The MSL:

Code: Select all

18:19:09.388972 IP (tos 0x20, ttl 111, id 19605, offset 0, flags [DF], proto TCP (6), length 427) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: P, cksum 0xc7e3 (correct), 23:398(375) ack 82 win 17439 <nop,nop,timestamp 83411183 24690447>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  01ab 4c95 4000 6f06 20b7 cf26 0bae c0a8  ..L.@.o....&....
	0x0020:  0164 70e4 90b1 7f9a 74c5 3587 6400 8018  .dp.....t.5.d...
	0x0030:  441f c7e3 0000 0101 080a 04f8 c0ef 0178  D..............x
	0x0040:  bf0f 5c69 705c 3730 2e32 3338 2e31 3334  ..\ip\70.238.134
	0x0050:  2e32 383a 3737 3931 5c69 705c 3230 362e  .28:7791\ip\206.
	0x0060:  3235 312e 3732 2e32 3236 3a37 3739 315c  251.72.226:7791\
	0x0070:  6970 5c32 3036 2e32 3531 2e37 322e 3232  ip\206.251.72.22
	0x0080:  363a 3737 3939 5c69 705c 3635 2e39 382e  6:7799\ip\65.98.
	0x0090:  3131 2e31 3134 3a37 3739 315c 6970 5c36  11.114:7791\ip\6
	0x00a0:  352e 3938 2e31 312e 3131 343a 3737 3939  5.98.11.114:7799
	0x00b0:  5c69 705c 3837 2e31 3934 2e32 2e31 3238  \ip\87.194.2.128
	0x00c0:  3a37 3739 315c 6970 5c31 3231 2e34 342e  :7791\ip\121.44.
	0x00d0:  3135 392e 3235 343a 3737 3931 5c69 705c  159.254:7791\ip\
	0x00e0:  3732 2e32 3439 2e31 332e 3133 303a 3737  72.249.13.130:77
	0x00f0:  3931 5c69 705c 3634 2e36 392e 3737 2e31  91\ip\64.69.77.1
	0x0100:  3438 3a37 3739 315c 6970 5c31 3933 2e34  48:7791\ip\193.4
	0x0110:  372e 3833 2e32 3230 3a37 3739 315c 6970  7.83.220:7791\ip
	0x0120:  5c38 352e 3231 342e 3130 352e 3431 3a38  \85.214.105.41:8
	0x0130:  3736 385c 6970 5c38 372e 3233 302e 3839  768\ip\87.230.89
	0x0140:  2e32 3232 3a37 3739 315c 6970 5c39 322e  .222:7791\ip\92.
	0x0150:  3531 2e31 3339 2e31 3933 3a37 3739 315c  51.139.193:7791\
	0x0160:  6970 5c38 392e 3134 352e 3938 2e31 3030  ip\89.145.98.100
	0x0170:  3a37 3739 315c 6970 5c36 352e 3138 392e  :7791\ip\65.189.
	0x0180:  3233 382e 3136 363a 3737 3931 5c69 705c  238.166:7791\ip\
	0x0190:  3230 312e 3632 2e31 3730 2e31 3838 3a37  201.62.170.188:7
	0x01a0:  3739 315c 6970 5c38 392e 3134 352e 3938  791\ip\89.145.98
	0x01b0:  2e31 3031 3a37 3738 31                   .101:7781
18:19:09.389327 IP (tos 0x20, ttl 111, id 19606, offset 0, flags [DF], proto TCP (6), length 59) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: FP, cksum 0xfb07 (correct), 398:405(7) ack 82 win 17439 <nop,nop,timestamp 83411183 24690447>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  003b 4c96 4000 6f06 2226 cf26 0bae c0a8  .;L.@.o."&.&....
	0x0020:  0164 70e4 90b1 7f9a 763c 3587 6400 8019  .dp.....v<5.d...
	0x0030:  441f fb07 0000 0101 080a 04f8 c0ef 0178  D..............x
	0x0040:  bf0f 5c66 696e 616c 5c                   ..\final\

Posted: 24 Mar 2009, 17:02
by ~][FGS][Nobody~
Ohh, so you were referring to YOUR master server program!
I thought you meant the real master server.

Posted: 24 Mar 2009, 17:32
by ~[FGS]Próphèt~
[DXA]Sanguine wrote: I think this explains it?

The MSL:

Code: Select all

18:19:09.056325 IP (tos 0x20, ttl 111, id 18888, offset 0, flags [DF], proto TCP (6), length 74) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: P, cksum 0x5f4b (correct), 1:23(22) ack 1 win 17520 <nop,nop,timestamp 83411180 24690411>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  004a 49c8 4000 6f06 24e5 cf26 0bae c0a8  .JI.@.o.$..&....
	0x0020:  0164 70e4 90b1 7f9a 74af 3587 63af 8018  .dp.....t.5.c...
	0x0030:  4470 5f4b 0000 0101 080a 04f8 c0ec 0178  Dp_K...........x
	0x0040:  beeb 5c62 6173 6963 5c5c 7365 6375 7265  ..\basic\\secure
	0x0050:  5c41 5a49 4743 5600                      \AZIGCV.
The Client:

Code: Select all

18:19:09.056590 IP (tos 0x0, ttl 64, id 56701, offset 0, flags [DF], proto TCP (6), length 133) 192.168.1.100.37041 > match.gta4ps3.gamespy.com.28900: P, cksum 0xdc8a (correct), 1:82(81) ack 23 win 46 <nop,nop,timestamp 24690447 83411180>
	0x0000:  0012 171b 6a5f 001e 4c95 6916 0800 4500  ....j_..L.i...E.
	0x0010:  0085 dd7d 4000 4006 c014 c0a8 0164 cf26  ...}@.@......d.&
	0x0020:  0bae 90b1 70e4 3587 63af 7f9a 74c5 8018  ....p.5.c...t...
	0x0030:  002e dc8a 0000 0101 080a 0178 bf0f 04f8  ...........x....
	0x0040:  c0ec 5c67 616d 656e 616d 655c 6465 7573  ..\gamename\deus
	0x0050:  6578 5c6c 6f63 6174 696f 6e5c 305c 7661  ex\location\0\va
	0x0060:  6c69 6461 7465 5c52 4361 2f59 6e69 675c  lidate\RCa/Ynig\
	0x0070:  6669 6e61 6c5c 5c6c 6973 745c 5c67 616d  final\\list\\gam
	0x0080:  656e 616d 655c 6465 7573 6578 5c66 696e  ename\deusex\fin
	0x0090:  616c 5c                                  al\
The MSL:

Code: Select all

18:19:09.388972 IP (tos 0x20, ttl 111, id 19605, offset 0, flags [DF], proto TCP (6), length 427) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: P, cksum 0xc7e3 (correct), 23:398(375) ack 82 win 17439 <nop,nop,timestamp 83411183 24690447>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  01ab 4c95 4000 6f06 20b7 cf26 0bae c0a8  ..L.@.o....&....
	0x0020:  0164 70e4 90b1 7f9a 74c5 3587 6400 8018  .dp.....t.5.d...
	0x0030:  441f c7e3 0000 0101 080a 04f8 c0ef 0178  D..............x
	0x0040:  bf0f 5c69 705c 3730 2e32 3338 2e31 3334  ..\ip\70.238.134
	0x0050:  2e32 383a 3737 3931 5c69 705c 3230 362e  .28:7791\ip\206.
	0x0060:  3235 312e 3732 2e32 3236 3a37 3739 315c  251.72.226:7791\
	0x0070:  6970 5c32 3036 2e32 3531 2e37 322e 3232  ip\206.251.72.22
	0x0080:  363a 3737 3939 5c69 705c 3635 2e39 382e  6:7799\ip\65.98.
	0x0090:  3131 2e31 3134 3a37 3739 315c 6970 5c36  11.114:7791\ip\6
	0x00a0:  352e 3938 2e31 312e 3131 343a 3737 3939  5.98.11.114:7799
	0x00b0:  5c69 705c 3837 2e31 3934 2e32 2e31 3238  \ip\87.194.2.128
	0x00c0:  3a37 3739 315c 6970 5c31 3231 2e34 342e  :7791\ip\121.44.
	0x00d0:  3135 392e 3235 343a 3737 3931 5c69 705c  159.254:7791\ip\
	0x00e0:  3732 2e32 3439 2e31 332e 3133 303a 3737  72.249.13.130:77
	0x00f0:  3931 5c69 705c 3634 2e36 392e 3737 2e31  91\ip\64.69.77.1
	0x0100:  3438 3a37 3739 315c 6970 5c31 3933 2e34  48:7791\ip\193.4
	0x0110:  372e 3833 2e32 3230 3a37 3739 315c 6970  7.83.220:7791\ip
	0x0120:  5c38 352e 3231 342e 3130 352e 3431 3a38  \85.214.105.41:8
	0x0130:  3736 385c 6970 5c38 372e 3233 302e 3839  768\ip\87.230.89
	0x0140:  2e32 3232 3a37 3739 315c 6970 5c39 322e  .222:7791\ip\92.
	0x0150:  3531 2e31 3339 2e31 3933 3a37 3739 315c  51.139.193:7791\
	0x0160:  6970 5c38 392e 3134 352e 3938 2e31 3030  ip\89.145.98.100
	0x0170:  3a37 3739 315c 6970 5c36 352e 3138 392e  :7791\ip\65.189.
	0x0180:  3233 382e 3136 363a 3737 3931 5c69 705c  238.166:7791\ip\
	0x0190:  3230 312e 3632 2e31 3730 2e31 3838 3a37  201.62.170.188:7
	0x01a0:  3739 315c 6970 5c38 392e 3134 352e 3938  791\ip\89.145.98
	0x01b0:  2e31 3031 3a37 3738 31                   .101:7781
18:19:09.389327 IP (tos 0x20, ttl 111, id 19606, offset 0, flags [DF], proto TCP (6), length 59) match.gta4ps3.gamespy.com.28900 > 192.168.1.100.37041: FP, cksum 0xfb07 (correct), 398:405(7) ack 82 win 17439 <nop,nop,timestamp 83411183 24690447>
	0x0000:  001e 4c95 6916 0012 171b 6a5f 0800 4520  ..L.i.....j_..E.
	0x0010:  003b 4c96 4000 6f06 2226 cf26 0bae c0a8  .;L.@.o."&.&....
	0x0020:  0164 70e4 90b1 7f9a 763c 3587 6400 8019  .dp.....v<5.d...
	0x0030:  441f fb07 0000 0101 080a 04f8 c0ef 0178  D..............x
	0x0040:  bf0f 5c66 696e 616c 5c                   ..\final\
no it does not.

Posted: 24 Mar 2009, 18:37
by [FGS]Hawk
[quote="~[FGS]Pr

Posted: 24 Mar 2009, 20:23
by [FGS]FlyingGhost
c'mon proth even a ghost understands it :D ;)

Posted: 24 Mar 2009, 20:36
by ~[FGS]Próphèt~
you two seem to forget I'm not, I repeat: not, a program conoisseur.

Furthest I ever got was making a button with Delphi :lol: