Page 1 of 1

The D3 query packet

Posted: Sun Feb 27, 2005 2:05 pm
by iten
I've heard many a time that the query packet to send to servers is documented somewhere. The problem is, I've looked everywhere (well, not everywhere, but a lot of places) and can't find it.

So does anyone know where I could find this documentation? I've already gotten some stuff figured out, but I figured I might as well save myself some time.

This is for two projects, one being D3launch, the other being something really cool (more cool if the query packet has what I want in it.)

Thanks in advance,
-iten

Posted: Mon Feb 28, 2005 10:34 pm
by Verran
I would also appreciate having access to this info! Thanks!

Posted: Sat Mar 05, 2005 3:26 pm
by iten
I'm compiling the information into a nicely readable format and will post it here soon.

Posted: Mon Mar 14, 2005 2:06 pm
by SolidAir
this is the header I used back in the day when I was coding D3IP (to hold IP addresses of servers)

Code: Select all

/**************************************
* Descent3 Server Request #defines    
*
*
*/

//this data is used to request the players on a Descent3 server. 0x72 is requesting a
//MP_REQUEST_PLAYERS when the D3 Server receives this message. 0x03 should be 0x00 but I'm not sure.
//the packet sniffer says so.
const byte PLAYERS_REQUEST[] = {  0x01, 0x72, 0x03, 0x00 };

const int PLAYERS_SIZE = 4;

//this data is used to request the server info for a descent3 server. For
//instance, the map, mode, and players. 0x29 is what Descent3 sees to know
// that we're requesting data. Don't know about the rest.

const byte SERVINFO_REQUEST[] = { 0x01, 0x29, 0x0b, 0x00,
								  0x01, 0x00, 0x5e, 0x42,
								  0x09, 0x00, 0x00, 0x00,
								  0x00, 0x00, 0x00, 0x00,
								  0x00, 0x00 };
const int SERVINFO_SIZE = 18;

const byte TCPIPSERVINFO_REQUEST[] = { 0x01, 0x1e, 0x0b, 0x00,
									 0x3f, 0x4e, 0x58, 0x42,
									 0x09, 0x00, 0x00, 0x00 };
const int TCPIPSERVINFO_SIZE = 12;

#define SI_INIT_HEADER 21

const byte SERVSTATUS_REQUEST[] = { 0x5c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00 };

const int SERVSTATUS_SIZE = 9;

//pxo stuff

const byte PXOSERVER_REQUEST[] = { 0x03, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
								   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
								   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
								   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61,
								   0x75, 0x74, 0x6f, 0x73, 0x65, 0x6c, 0x65, 0x63,
								   0x74, 0x00 };
const int PXOSERVER_SIZE = 42;

const byte PXOOKAYTHATSENOUGH_REQUEST[] = { 0x03, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
											0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
											0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
											0x00, 0x00, 0xdd, 0x64, 0x72, 0x03 };

const int PXOOKAYTHATSENOUGH_SIZE = 30;