for this packet:
QuoteMessage ID: 0x51
Message Name: SID_AUTH_CHECK
Direction: Client -> Server (Sent)
Used By: Starcraft, Starcraft Broodwar, Diablo II, Diablo II LOD, Warcraft III, Warcraft III: TFT
(DWORD) Client Token
(DWORD) EXE Version
(DWORD) EXE Hash
(DWORD) Number of keys in this packet
(BOOLEAN) Using Spawn (32-bit)
For Each Key:
(DWORD) Key Length
(DWORD) CD key's product value
(DWORD) CD key's public value
(DWORD) Unknown (0)
(DWORD[5]) Hashed Key Data
(STRING) Exe Information
(STRING) CD Key owner name
how do i get exe version, hash, and what do i set for number of keys in the packet? is it talking about cdkeys? if it's sc, i set &h1, if it's wc3 exp, i set &h2, right? for the boolean, i set &h0, right? what about the exe info? what should be done about that one?
Version and Hash (Checksum) are returned by BNLS or whatever DLL you use for local hasing. The Version is the Product Version of the main EXE. For example, DRTL is "1.0.9.1", so its version is 0x01090001. The number of keys is 2 for expansions, 1 for non-expansion. Spawn 1 = yes, 0 = no. You can only use that for STAR (and W2BN and JSTR, even through the normal client does not use this packet). EXE Information is also returned by BNLS or the Local Hashing DLL. EXE Hash and EXE Information are returned from the CheckRevision function.
Assuming you are using BNLS checkversionex2 will give you back all the info needed for 0x51. I haven't check but I believe the only product it will not work for is warcraft III and that is only because BNLS was not updated for it.
Message ID: 0x1A
Message Name: BNLS_VERSIONCHECKEX2
Direction: Server -> Client (Received)
Format:
Help
Hint: Field names highlighted in blue will display a definition if you hover over the text.
(BOOL) Success*
(DWORD) Version.
(DWORD) Checksum.
(STRING) Version check stat string.
(DWORD) Cookie.
(DWORD) The latest version code for this product.
Remarks: * Success is TRUE if successful, FALSE otherwise. If this is FALSE, the next DWORD is the provided cookie, following which the message ends.
As has been stated in numerous other posts... just use JBLS for war3 and everything will be fine.
You don't need BNLS to connect with WAR3 at all.
with the bf checkrevision, you don't need bnls for sexp either...
but if you do, use BNLS 0x18 for the checksum, version, and exeinfo
for the cd key dwords you can get then from BNLS_CDKEY (0x01) or from bncsutil 1.3.1
Ersan, stop flaming people just because they prefer a certain packet over your gay 0x1A
Two quick questions for 0x1A:
QuoteMessage ID: 0x1A
Message Name: BNLS_VERSIONCHECKEX2
Direction: Server -> Client (Received)
(BOOL) Success*
(DWORD) Version.
(DWORD) Checksum.
(STRING) Version check stat string.
(DWORD) Cookie.
(DWORD) The latest version code for this product.
The first DWORD (after BOOL) says 'Version', the last DWORD also says version. What's the difference between the two?
Also, the version check stat string in the packet -- it's of course null terminated, right?
Every string in any protocol Battle.net/BNLS/whatever related will be NULL terminated unless they're is a byte beforehand describing the length of the following string.
Quote from: Kyro on February 14, 2007, 11:31 AMThe first DWORD (after BOOL) says 'Version', the last DWORD also says version. What's the difference between the two?
Alright, that's what I thought... Thanks for educating me! What about the second question?
Quote from: Kyro on February 14, 2007, 01:09 PM
Quote from: Kyro on February 14, 2007, 11:31 AMThe first DWORD (after BOOL) says 'Version', the last DWORD also says version. What's the difference between the two?
Alright, that's what I thought... Thanks for educating me! What about the second question?
The
version consists of major, minor, revision, etc, of the game executable (i.e. Starcraft.exe). To learn more about this you can read this on MSDN (http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/versioninformation.asp). The executable
version is used as part of the CheckRevision verification to make sure you're using the up-to-date game file.
The
version code is the value that traditionally changes when there is a patch to the game. If you send the wrong value here the server will reject your version check challenge and tell you that either, a) your version must be upgraded with a patch, b) your version is unknown, or c) your version is must be downgraded with a patch (this one has never been seen 'in the wild')
ah, so the version in this case would be 1.14, and the version code would be CF, right?
Quote from: Kyro on February 14, 2007, 01:26 PM
ah, so the version in this case would be 1.14, and the version code would be CF, right?
No, the executable version isn't just 1.14. The version code is
0xcf.
To get the actual version in readable format: right click on your Starcraft.exe->Properties->Version tab->See what it says next to "File version:"