• Welcome to Valhalla Legends Archive.
 

W3GS action packets (0x0C 0x26 0x27)

Started by ptn, July 18, 2008, 01:25 PM

Previous topic - Next topic

ptn

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?