• Welcome to Valhalla Legends Archive.
 

0x51

Started by Don Cullen, February 14, 2007, 04:14 AM

Previous topic - Next topic

Don Cullen

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?
Regards,
Don
-------

Don't wonder why people suddenly are hostile when you treat them the way they shouldn't be- it's called 'Mutual Respect'.

Barabajagal

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.

Gangz

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.

Barabajagal

As has been stated in numerous other posts... just use JBLS for war3 and everything will be fine.

brew

You don't need BNLS to connect with WAR3 at all.
<3 Zorm
Quote[01:08:05 AM] <@Zorm> haha, me get pussy? don't kid yourself quik
Scio te esse, sed quid sumne? :P

Ante

#5
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
Efficiency is the Key to Productivity, and
Productivity is the Key to Success.

brew

Ersan, stop flaming people just because they prefer a certain packet over your gay 0x1A
<3 Zorm
Quote[01:08:05 AM] <@Zorm> haha, me get pussy? don't kid yourself quik
Scio te esse, sed quid sumne? :P

Don Cullen

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?
Regards,
Don
-------

Don't wonder why people suddenly are hostile when you treat them the way they shouldn't be- it's called 'Mutual Respect'.

UserLoser

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.

Don Cullen

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?
Regards,
Don
-------

Don't wonder why people suddenly are hostile when you treat them the way they shouldn't be- it's called 'Mutual Respect'.

UserLoser

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.  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')

Don Cullen

ah, so the version in this case would be 1.14, and the version code would be CF, right?
Regards,
Don
-------

Don't wonder why people suddenly are hostile when you treat them the way they shouldn't be- it's called 'Mutual Respect'.

UserLoser

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:"