• Welcome to Valhalla Legends Archive.
 
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - ptn

#1
There was once information posted about those packets here, but few fields were not interpreted. Anyone knows what their meaning is? I tried various CRC16, for whole and parts of the packets, xoring various parts, and got nothing similiar.

#define W3GS_CLIENTSYNC 0x27 // Clients Sync packets (only if packet size = 9)
struct sW3GS_CLIENTSYNC {
   BYTE unknown; // most of the time 0, probably sync too. I don't really know if this extra byte is at end, and what all the fields mean
   SHORT sync; // ?
   SHORT crc16; // ?
};
#define W3GS_CLIENTACTREQ 0x26 // Client requests action
struct sW3GS_CLIENTACTREQ {
   SHORT sync; // dont know - maybe sync value
   SHORT crc16; // possible crc16?
   BYTE subPktData[1]; // sub packet data - consist game command
};

#define W3GS_HOSTSYNC 0x0C // Host Sync packets or/with actions (only sync when packet size = 6)
#define W3GS_HOSTACT  0x0C
struct sW3GS_HOSTACT {
   SHORT sync; // 0xfa | 0x6D | 0x6E | 0x7D - time slot in ms, usually ~250 for battle.net 100 for lan/listchecker
   SHORT crc16; // possible crc16 value // command time in ticks?
   BYTE playerNum; // 1 (for host)
subPktsArray[]{
   SHORT subPktSize; // sub packet size = packet size - 11 // multiple subpackets allowed, each has size in front
   BYTE subPktData[1]; // sub packet data - consist game command
}
};

Usually packets look like that (these are real, in order of appearance - sync response/sync req):
f7 27 09 00 a8 5f ce 03  02
f7 0c 06 00 fa 00 <-- this is fully understood 0xfa = 250, it must be sync
f7 27 09 00 18 3a 1a f4  8c <-- this is  what I'm interested in, probably first bytes are sync response, but why 5 bytes? Does not seem too change like GetTickCount, does not increase like number of packets or bytes
f7 0c 06 00 fa 00

What could it be?
#2
General Programming / Re: W3GS program C++
September 30, 2007, 01:50 PM
Banlist is mostly about banning people. Strangely this feature is not really working, but the program is very popular for checking country and ping in custom games. I focused my program on the features which I consider most usefull: ingame ping (with tracert instead of "stupid" ping), country check(with file instead of internet database), detecting players ips, movie recording (fraps like, but without 30s restriction), automation of stats checking, game clock, popular registry error fix. I also tried to make reading international chat possible, but for now this simply does not fit into screen, and the performance is poor (using international fonts is pretty slow in directx 8.1, and loading them all in memory is a waste of resources).

Maybe I will make real packet description later and post it in bnetdocs reasearch. I got all the chat packets figured out, which isn't mentioned there. Only real packets missing from my program are bnet authentication, clan etc. (useless except for bots - already known through bnetdocs), and some from game - actions (useless except for mh or maybe live apm analyser), slots (already figured out by others, but I didn't have to use this).

This:
http://bnetdocs.dementedminds.net/forums/viewtopic.php?t=12
http://forum.valhallalegends.com/index.php?topic=14970.0
my program sources and replay format description is the most accurate public info about wg3s packets so far.
#3
General Programming / W3GS program C++
September 30, 2007, 07:38 AM
Hi
Some people here were interested in W3GS packets. I used old posts from here, replays format description, bnetdocs and some of my own research to create a program interpreting packets. It's main purpose is easier game hosting on battle.net.

Full source code is here:
http://pyton0.googlepages.com/w3projectsrc.zip

Main webpage:
http://w3p.one.pl/
or
http://pyton0.googlepages.com/

Source code is far from perfect, but it's working :)
If someone wants to write a "banlist" or similiar program it's a good place to start.