Valhalla Legends Forums Archive | Battle.net Bot Development | Re: Quick Question: CDKeys with letters in them

AuthorMessageTime
LockesRabb
Up to date, I've been working only on coding in support for SEXP, now I'm working on coding in support for D2 and D2LOD; I noticed that the cdkeys have letters and I started wondering:

For sending them to BNLS for hashing, do they have to be of a certain case (upper or lower)? Or is it case insensitive?
February 19, 2007, 3:38 AM
l2k-Shadow
[quote author=Kyro link=topic=16351.msg165168#msg165168 date=1171856337]
Up to date, I've been working only on coding in support for SEXP, now I'm working on coding in support for D2 and D2LOD; I noticed that the cdkeys have letters and I started wondering:

For sending them to BNLS for hashing, do they have to be of a certain case (upper or lower)? Or is it case insensitive?
[/quote]

should convert all cd-keys to upper case prior to hashing
February 19, 2007, 3:39 AM
LockesRabb
Thanks. Closing thread. :)

[Edit]

BreW PM'ed me saying this:

[quote author=BreW link=action=profile;u=4430 date=1171858057]
In response to the CDKey topic, (which you closed so quick) Acually it is case insensitive. Really. If anything, though, it should be LCase()'d, just like a battle.net password.
[/quote]

So I'm reopening this thread to see what people have to say.
February 19, 2007, 3:41 AM
Spht
[quote author=Kyro link=topic=16351.msg165170#msg165170 date=1171856463]
Thanks. Closing thread. :)
[/quote]

Enough of the excessive closing of your own topics.

This is a discussions board, not necessarily an "ask question - get answer - move on" board.  When you start a topic, you're opening a discussion.  Just because you found out what you wanted, doesn't mean other people don't have anything to say.
February 19, 2007, 4:17 AM
LockesRabb
Understood.
February 19, 2007, 4:36 AM
l2k-Shadow
[quote author=Kyro link=topic=16351.msg165170#msg165170 date=1171856463]
Thanks. Closing thread. :)

[Edit]

BreW PM'ed me saying this:

[quote author=BreW link=action=profile;u=4430 date=1171858057]
In response to the CDKey topic, (which you closed so quick) Acually it is case insensitive. Really. If anything, though, it should be LCase()'d, just like a battle.net password.
[/quote]

So I'm reopening this thread to see what people have to say.
[/quote]

Unlike passwords, which are converted to lower case, Blizzard's code converts cd-keys to upper case so I would too.
February 19, 2007, 5:11 AM
BreW
Interesting. For what client(s) did you find this to be true? And how did you find this in the first place?
February 19, 2007, 6:47 PM
l2k-Shadow
IIRC, someone before made a post on this forum which said that Blizzard uses a single function to decode cd-keys for clients because they convert the key to upper case whether it's all numbers or contains letters as well... You could probably search for it.

But if you think about it, the installers convert your key to upper case when you type it in, and not to mention, the key comes upper case on the cd case of the game.. so..
February 19, 2007, 9:13 PM
LockesRabb
Makes sense. Now to wait for BNLS to come back up so I can implement this... :p
February 19, 2007, 9:16 PM
BreW
@Shadow: I do believe it is a better idea to uppercase the letters of a cdkey, not only because it looks more orderly but because, here it is, in the decode function itself.
And as for the cdkey being uppercase on the case, it's printed in as a uniform, no-caps "font" if you will made for specifically for packaging. Since there are no lower case letters in that entire font, Blizzard assumes the end user will enter it anyway. It doesn't matter, because the installer probably UCase()'s it anyways.
Even though we established it really, doesn't matter at all what the cdkey is. I assume Kyro is using BNCSUtil to decode his cdkey, and it uppercases it anyways.
@Kyro, why are you using BNLS to connect? To be honest, you should use the checkrevision database like I have along with everyone else for the past month ffs. And use local hashing for clients such as d2dv and war3.
February 19, 2007, 10:29 PM
rabbit
Why?  BNLS exists for a reason.  I actually prefer BNLS over local hashing, because then my bots don't require users to get new hash files after every release, and I don't need to update and release my bot every time a game gets patched.
February 19, 2007, 10:58 PM
LockesRabb
[quote author=brew link=topic=16351.msg165220#msg165220 date=1171924160]
@Shadow: I do believe it is a better idea to uppercase the letters of a cdkey, not only because it looks more orderly but because, here it is, in the decode function itself.
And as for the cdkey being uppercase on the case, it's printed in as a uniform, no-caps "font" if you will made for specifically for packaging. Since there are no lower case letters in that entire font, Blizzard assumes the end user will enter it anyway. It doesn't matter, because the installer probably UCase()'s it anyways.
Even though we established it really, doesn't matter at all what the cdkey is. I assume Kyro is using BNCSUtil to decode his cdkey, and it uppercases it anyways.
@Kyro, why are you using BNLS to connect? To be honest, you should use the checkrevision database like I have along with everyone else for the past month ffs. And use local hashing for clients such as d2dv and war3.
[/quote]

Incorrect -- I use BNLS to hash the cdkey. And I use BNLS because I prefer not to force the users to have to worry about local hashing. I also prefer not to have to frequently update my program whenever a patch occurs. When the lockdown reversal/bypass does get released by someone into the public domain, then I'll add in local hashing support. Until then, BNLS it is. If BNLS goes down, the users won't die, and it won't be the end of the world. They can live until BNLS comes back up.

[quote author=rabbit link=topic=16351.msg165222#msg165222 date=1171925915]
Why?  BNLS exists for a reason.  I actually prefer BNLS over local hashing, because then my bots don't require users to get new hash files after every release, and I don't need to update and release my bot every time a game gets patched.
[/quote]

I agree with rabbit in this retrospect.
February 20, 2007, 1:16 AM
Barabajagal
it's easy enough to support both. And if you use something like BNCSutil, you can hash CD keys and passwords and all that without any hash files.
February 20, 2007, 1:19 AM
rabbit
Probably because CD-keys and passwords don't need "hash files".  "Hash files" actually means "key game files which are hashed and the result of that sent to Battle.net".  You still need BNLS or Skywing's brain to locally hash your game files.
February 20, 2007, 1:32 AM
Barabajagal
Orly? This topic's on CD Key hashing, not game hashing. My comment was about this topic.
February 20, 2007, 2:13 AM
LockesRabb
[quote author=[RealityRipple] link=topic=16351.msg165227#msg165227 date=1171934360]
it's easy enough to support both. And if you use something like BNCSutil, you can hash CD keys and passwords and all that without any hash files.
[/quote]

The less dependencies, the better.
February 20, 2007, 2:53 AM
bethra
[quote author=Kyro link=topic=16351.msg165231#msg165231 date=1171940020]
[quote author=[RealityRipple] link=topic=16351.msg165227#msg165227 date=1171934360]
it's easy enough to support both. And if you use something like BNCSutil, you can hash CD keys and passwords and all that without any hash files.
[/quote]

The less dependencies, the better.
[/quote]I guess it depends on what you consider a dependency because relying on BNLS for hashing passwords, cdkeys, and game files to me is three functional dependencies, granted they all depend on BNLS.  Where as using BNLS for hashing game files and BNCSutil for hashing cdkeys and passwords is still 3 functional dependencies in my eyes.

Anyways, I don't see your reasoning for using BNLS for cdkey and password hashing since it's slower because you have to construct, send, receive, and parse extra BNLS packets for cdkey and password hashing instead of just doing it locally.
February 20, 2007, 6:10 AM
Barabajagal
[quote author=Kyro link=topic=16351.msg165231#msg165231 date=1171940020]
[quote author=[RealityRipple] link=topic=16351.msg165227#msg165227 date=1171934360]
it's easy enough to support both. And if you use something like BNCSutil, you can hash CD keys and passwords and all that without any hash files.
[/quote]

The less dependencies, the better.
[/quote]

And as it is, you're dependent on a third-party server to do what can be done locally. I'd rather have a second option for my users, just in case. Especially cause you can technically do all the hashing within your own code (it's just faster using a dll than vb).
February 20, 2007, 6:11 AM
LockesRabb
I don't think you guys understand; by dependency, I meant file dependency. I'm trying to minimize the amount of files required by my program. ATM, it only requires one: itself.
February 20, 2007, 6:17 AM
Barabajagal
If it's written in vb, it also requires the VB runtime environment. And it requires BNLS/JBLS to be working, and probably MSWINSCK.OCX, and I'm sure some other OCX or DLL files. The point is it's better to have user convenience than few dependencies.
February 20, 2007, 6:19 AM
LockesRabb
Perhaps you have a point. But even then, that's not really an option thanks to lockdown.
February 20, 2007, 10:26 AM
Barabajagal
Works for d2/war3, and BNLS is currently not working, so there's no way to connect on SC anyway.
February 20, 2007, 11:05 AM
Ersan
Using pure visual basic for all the algorithms used during logon is horribly inefficient, I would much prefer someone use a C++ library like bncsutil.

I'm sure there's some way to include the DLL inside your program binary and extract it to a temporary folder for usage, the license bncsutil uses permits this (LGPL).
February 20, 2007, 12:40 PM
rabbit
Yeah, that's pretty easy to do, actually.
February 20, 2007, 4:57 PM
replaced
[quote author=Ersan link=topic=16351.msg165257#msg165257 date=1171975207]
Using pure visual basic for all the algorithms used during logon is horribly inefficient, I would much prefer someone use a C++ library like bncsutil.

I'm sure there's some way to include the DLL inside your program binary and extract it to a temporary folder for usage, the license bncsutil uses permits this (LGPL).
[/quote]

Umm no

Instead of taking 2 milliseconds to complete it takes 4?
February 20, 2007, 6:02 PM
rabbit
No, more like instead of taking 200 milliseconds it takes 40000.
February 20, 2007, 6:57 PM
l2k-Shadow
[quote author=rabbit link=topic=16351.msg165268#msg165268 date=1171997846]
No, more like instead of taking 200 milliseconds it takes 40000.
[/quote]
And trying to overcome the signed/unsigned barrier and writing functions to do operations such as << and >> that native VB does not have. GL trying to be speed efficient.
February 20, 2007, 7:17 PM
BreW
Wait wait hold up! If Kyro is trying to make his bot only use one file (the .exe itself) he should definately go the BNLS route. And, ffs, even use registry keys. I know this has been done before (daemonchat). But I recommend, going the older route, which is having a config.ini file, hashes, bncsutil.dll, so on. In the long run it's faster, requires less code, and in general is more efficient. I highly disapprove of your bot depending soley on BNLS though, because BNLS is just too unreliable. It's been "down" more then ever, and let's face it: It still requires updates itself. Let's say there's a new patch, and nobody updated BNLS. Everyone's stuck with the same problem! You need an option to update your bot by yourself. I, myself, am fed up with depending on other 3rd party services that sometimes work.
February 20, 2007, 11:35 PM
rabbit
Then YOU reverse lockdown.  Battle.net isn't so crucial to my existence that I go stark raving mad if I can't get on because BNLS is down.  I don't want people who feel the same way using my bots, either.  My stuff is designed for the person who wants to chat with as little effort as possible.  Having them check bncsutil versions, hash file versions, bot versions, and registry settings is stupid.
February 21, 2007, 12:35 AM
MyStiCaL
welll i haven't seen any loads or floods since BNLS has been down. =D

eaither way this checkrevision hurts the battle.net bot development community, and because most bot programmers weather you program in vb6, java, c++, .Net don't have the asm knowledge.

Even if it was released publicy i'd much rather have loads, floods going as long as i can still connect! instead of relying on BNLS and if not BNLS using limited clients to connect. not like i care but i idle in a small idled channel anyways floods/loads don't affect me.


EDIT: remember is was a anti-hack movement not an anti-bot movement its just making it worse for us. =(

Since Spht Deleted the post in the other thread this current BNLS IP works for those of you that need to connect =)
84.9.75.83
February 21, 2007, 12:42 AM
Spht
[quote author=Mystical link=topic=16351.msg165300#msg165300 date=1172018522]
Since Spht Deleted the post in the other thread
[/quote]

Sorry!  Meant to split the posts, not remove them
February 21, 2007, 1:34 AM
LockesRabb
[quote author=Mystical link=topic=16351.msg165300#msg165300 date=1172018522]
Since Spht Deleted the post in the other thread this current BNLS IP works for those of you that need to connect =)
84.9.75.83
[/quote]

I just tried that IP address. My BNLS_VERSIONCHECKEX2 got rejected (when it was normally working fine). By rejected I mean the server disconnected me after sending the packet.

[edit]
Isn't that Hdx's JBLS server, not BNLS? IIRC, Hdx's JBLS server doesn't work with lockdown as of now.
February 21, 2007, 1:52 AM
MyStiCaL
Im assuming BNLS since im connected on STARCRAFT with it =P
February 21, 2007, 1:54 AM
LockesRabb
That's strange. I'm having problems when I normally didn't. See anything wrong with this packet I'm sending to BNLS? It's the BNLS 0x1A packet...

[pre]0000  00 11 43 6e c2 07 00 15 e9 65 d2 4c 08 00 45 20  ..Cn.....e.L..E
0010  00 28 82 81 40 00 70 06 27 c6 54 09 4b 53 c0 a8  .(..@.p.'.T.KS..
0020  00 64 24 97 05 b3 58 cf ec 69 bc 2c 18 ac 50 10  .d$...X..i.,..P.
0030  44 29 c6 e6 00 00 00 00 00 00 00 00              D)..........[/pre]
February 21, 2007, 2:05 AM
BreW
Kyro are you sure that's the right packet....? If it is then your send0x1a sub is severly screwed up.
February 21, 2007, 2:24 AM
Ersan
My, what blatant source leeching skills you have brew...
February 21, 2007, 2:52 AM
BreW
.........what the hell is that supposed to mean. I'm just saying that his packetlog is nothing close to what an 0x1a packet should look like.
February 21, 2007, 3:07 AM
l2k-Shadow
[quote author=Kyro link=topic=16351.msg165306#msg165306 date=1172023525]
That's strange. I'm having problems when I normally didn't. See anything wrong with this packet I'm sending to BNLS? It's the BNLS 0x1A packet...

[pre]0000  00 11 43 6e c2 07 00 15 e9 65 d2 4c 08 00 45 20  ..Cn.....e.L..E
0010  00 28 82 81 40 00 70 06 27 c6 54 09 4b 53 c0 a8  .(..@.p.'.T.KS..
0020  00 64 24 97 05 b3 58 cf ec 69 bc 2c 18 ac 50 10  .d$...X..i.,..P.
0030  44 29 c6 e6 00 00 00 00 00 00 00 00              D)..........[/pre]
[/quote]

well if it was the 0x1A packet it would contain a 0x1A byte inside the packet....
February 21, 2007, 3:14 AM
Ringo
[quote author=Kyro link=topic=16351.msg165303#msg165303 date=1172022746]
[quote author=Mystical link=topic=16351.msg165300#msg165300 date=1172018522]
Since Spht Deleted the post in the other thread this current BNLS IP works for those of you that need to connect =)
84.9.75.83
[/quote]

I just tried that IP address. My BNLS_VERSIONCHECKEX2 got rejected (when it was normally working fine). By rejected I mean the server disconnected me after sending the packet.

[edit]
Isn't that Hdx's JBLS server, not BNLS? IIRC, Hdx's JBLS server doesn't work with lockdown as of now.

[/quote]
Nah, its a temp server im running why the main BNLS is down.
It currently supports messages 0x01, 0x02, 0x03, 0x04, 0x09, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x18, 0x1A and clients RATS, PXES, NB2W, VD2D, PX2D, RTSJ, 3RAW, PX3W. ( 1, 2, 3, 4, 5, 6, 7, 8 )
I havent really been able to test any of these packets apart from 0x1A, so know 0x1A is working correctly.
I have seen a few "kdown-IX86-XX.mpq"'s in the immediate window a few times, and a few empty version check strings.
Currently the following will cause a client to be disconnected on 0x1A:
If the packet lengh is under 22 or over 500 bytes.
If the client is not 1, 2, 3, 4, 5, 6, 7or 8 (RATS, PXES, NB2W, VD2D, PX2D, RTSJ, 3RAW, PX3W)
If the file or formula are not null-terminated
If the file or formula are under 2 bytes in lengh
If you borrow more than 20 seconds packet time (version checks costs 1 second currently - to stop load spams across 1 connection) -- this will cause an IP ban tomorow (if BNLS is not back up by then) as well as some ip tracking/banning on connections/packets :)


Aside, does anyone know when are the main BNLS servers coming back up?
Soon hopefully.. damn reconnecting bots that are ip'ed/dead proxyed keep spaming me with 5 - 10 connections per-second :(
If BNLS isnt up by tomorow, they are all getting IP banned from useing my BNLS server :P
February 21, 2007, 9:40 AM
MyStiCaL
no no no, ipban notta =P i need it =)
February 21, 2007, 9:43 AM
Ringo
Im thinking 100-200 connections per-hour limit, nothing to worry about for somone whos not rappidly connecting/requesting :)
I added a CR correction thingy for all them users that use 0x09 and ALWAYS use the lockdown file number 0 and the ver-IX86 file number 6. So even in that case the correct results should be returned, so older BNLS bots (pre-lockdown) should beable to use it, if they dont crash parseing the file number.
That will cut out alota users needing to rappid connect untill they get the 1 in 20 or 1 in 8 change to logon from being IP banned :P
February 21, 2007, 9:54 AM
MyStiCaL
ah, im good, I only connect once about every 10 days, im pretty stable.
February 21, 2007, 9:59 AM
Barabajagal
Hmm... you may want to give this temp server to people you can trust with it... to lessen the load on your own server. Maybe get a No-IP host and a splitting server, so that clients will connect to the least busy of the servers...

Might I ask why this is in this topic? Methinks this should be split....
February 21, 2007, 10:56 AM
LockesRabb
Apologies, I posted the wrong packet. I'm tired. >.<

Here's the 0x1A that keeps getting me disconnected:

[pre]0000: 32 00 1A 02 00 00 00 00 00 00 00 00 00 00 00 32  2............2
0010: 39 38 30 35 34 36 35 20 32 31 30 32 39 32 37 33  9805465 21029273
0020: 36 30 76 65 72 2D 49 58 38 36 2D 30 2E 6D 70 71  60ver-IX86-0.mpq
0030: 00 00                                            ................[/pre]
February 21, 2007, 11:48 AM
rabbit
Ringo, I keep getting 0x1a failure out  of your server, but I got a normal result out of BNLS (when it was up) using the same code.  Are you using that database?
February 21, 2007, 11:48 AM
LockesRabb
Et tu, rabbit? my 0x1A was working when BNLS was up too. I was wondering the same thing. At first I thought it was my code, that I somehow broke it. 0.o
February 21, 2007, 12:00 PM
rabbit
Mine doesn't disconnect me, though.  I can send it again and again with no trouble besides getting a failure result.
February 21, 2007, 12:05 PM
LockesRabb
...

Mind if I see a packet dump of your 0x1A? Also can I see your 0x1A code? This is mine:

[code]Private Sub BNLS_VERSIONCHECKEX2()  '0x1A
    With PacketBuf
        .InsertDWORD ProductID
        .InsertDWORD &H0
        .InsertDWORD Cookie
        .InsertNonNTString MPQFileTime
        .InsertNTString Ix86verfilename
        .InsertNTString ChecksumFormula
        .SendBNLSPacket sckBNLS, &H1A  'Send 0x1A packet
    End With
    RaiseEvent DebugOutput("0x1A BNLS_VERSIONCHECKEX2 packet sent.")
End Sub[/code]

Packet Dump:

[pre]0000: 32 00 1A 02 00 00 00 00 00 00 00 00 00 00 00 32  2............2
0010: 39 38 30 35 34 36 35 20 32 31 30 32 39 32 37 33  9805465 21029273
0020: 36 30 76 65 72 2D 49 58 38 36 2D 30 2E 6D 70 71  60ver-IX86-0.mpq
0030: 00 00                                            ................[/pre]

Edit:

Also thought I'd mention that I got curious and pinged bnls.valhallalegends.com. It responded to the ping. So the computer (server) that was hosting BNLS is still up and running, it's the BNLS server software that isn't up. Or at least it's up but refusing connections? AFAIK, if something was unable to accept a connection, it'd time out. But instead of timing out, it's actively refusing connections. Which leads me to think that perhaps the BNLS software is indeed running, but that it's actively refusing connections.
February 21, 2007, 12:09 PM
Ringo
[quote author=[RealityRipple] link=topic=16351.msg165338#msg165338 date=1172055368]
Hmm... you may want to give this temp server to people you can trust with it... to lessen the load on your own server. Maybe get a No-IP host and a splitting server, so that clients will connect to the least busy of the servers...

Might I ask why this is in this topic? Methinks this should be split....

[/quote]
No problems with speed/stress, mainly just dont like the idea of 95% of connections being a waste of time/space :P

[quote author=Kyro link=topic=16351.msg165339#msg165339 date=1172058481]
Apologies, I posted the wrong packet. I'm tired. >.<

Here's the 0x1A that keeps getting me disconnected:

[pre]0000: 32 00 1A 02 00 00 00 00 00 00 00 00 00 00 00 32  2............2
0010: 39 38 30 35 34 36 35 20 32 31 30 32 39 32 37 33  9805465 21029273
0020: 36 30 76 65 72 2D 49 58 38 36 2D 30 2E 6D 70 71  60ver-IX86-0.mpq
0030: 00 00                                            ................[/pre]
[/quote]
Ah, I see the problem, your format is bad (supprised BNLS handled it like that)
29805465 21029273 should be as 2 DWORDS, rather than a string and also your version check string is blank.

[quote author=rabbit link=topic=16351.msg165340#msg165340 date=1172058514]
Ringo, I keep getting 0x1a failure out  of your server, but I got a normal result out of BNLS (when it was up) using the same code.  Are you using that database?
[/quote]

0x1A is returning false? or bnet is rejecting the results?
The errors i see atm, are:
[code]
0x09 Failed CR lockdown-IX86-00.mpq Broodwar Hash - 5C 37 56 21 4A A6 8F 8A CE DB 67 26 34 1B DD 44
0x09 Failed CR lockdown-IX86-00.mpq Broodwar Hash - 04 1D FA 75 56 8D 0C 74 4E 12 01 B9 E0 7D 3F 6E
0x09 Failed CR lockdown-IX86-00.mpq Broodwar Hash - C1 6F BC 59 0E E7 0F 2F 69 3C BB A9 1F B5 55 FC
0x09 Failed CR lockdown-IX86-00.mpq Broodwar Hash - B9 17 C9 1D 31 E8 A9 6C CE 14 1E 08 E6 5C 0E 72
0x09 Correcting RATS lockdown-IX86-07.mpq To lockdown-IX86-17.mpq
0x09 Failed CR lockdown-IX86-00.mpq Broodwar Hash - A8 0B 48 F6 52 BB 6C 4B AA 38 B0 E1 47 2B AB 51
[/code]
And ye its a databse, so theres a very small change it might have not been found  :'(

[EDIT]: Just a side note, if anyone is useing the server and is naughty, you will end up with the following: :)
[code]
[14:12:43] [BNLS] Connecting..
[14:12:43] [BNLS] Connected!
[14:12:43] [BNLS] UnHandled Packet: 0xFF
41 00 FF 59 6F 75 72 20 49 50 20 49 73 20 52 65      A..Your IP Is Re
73 74 72 69 63 74 65 64 20 46 6F 72 20 41 6E 6F      stricted For Ano
74 68 65 72 20 31 31 20 4D 69 6E 73 2E 2E 20 50      ther 11 Mins.. P
6C 65 61 73 65 20 54 72 79 20 4C 61 74 65 72 2E      lease Try Later.
00                                                    .
[14:12:43] [BNLS] Disconnected.
[/code]
February 21, 2007, 12:11 PM
Barabajagal
Wait, you're getting ver-ix86-0 using which client? Is the notorious ver-ix86-0 with no request string back?
February 21, 2007, 5:29 PM
LockesRabb
[quote author=[RealityRipple] link=topic=16351.msg165353#msg165353 date=1172078980]
Wait, you're getting ver-ix86-0 using which client? Is the notorious ver-ix86-0 with no request string back?
[/quote]

Using SEXP. And I would assume so that there was no request string because my code was obtaining them without a problem previously with BNLS.

[quote author=[Ringo]]Ah, I see the problem, your format is bad (supprised BNLS handled it like that)
29805465 21029273 should be as 2 DWORDS, rather than a string[/quote]

I'll convert my current code to use 2 DWORDs rather than a string then. I'm just surprised that your server isn't reacting well to my using it as a string when BNLS handled it fine.
February 21, 2007, 5:59 PM
Barabajagal
If you're getting ver-ix86-0 with no request string on SEXP, then change the server you're connecting to until you don't get that request anymore. None of the BNLS servers can handle it. It's still an anomaly.
February 21, 2007, 6:05 PM
LockesRabb
[quote author=[RealityRipple] link=topic=16351.msg165356#msg165356 date=1172081150]
If you're getting ver-ix86-0 with no request string on SEXP, then change the server you're connecting to until you don't get that request anymore. None of the BNLS servers can handle it. It's still an anomaly.
[/quote]

By 'change the server', you're referring to the Battle.net server or BNLS server?

[Edit]

I was on uswest originally. I changed bnet server to uswest, europe, asia. All four still resulted in the ver-ix86-0 with no request string.

[Edit 2]

Decided to try switching to D2DV. This time, I got a request string:

[pre]0000: 70 00 1A 04 00 00 00 00 00 00 00 00 00 00 00 32  p............2
0010: 39 38 30 35 34 36 35 20 32 31 30 32 39 32 37 33  9805465 21029273
0020: 36 30 76 65 72 2D 49 58 38 36 2D 30 2E 6D 70 71  60ver-IX86-0.mpq
0030: 00 42 3D 32 37 35 30 39 33 36 30 34 37 20 43 3D  .B=2750936047 C=
0040: 33 31 31 31 38 31 33 39 20 41 3D 33 33 30 32 33  31118139 A=33023
0050: 38 30 34 31 33 20 34 20 41 3D 41 5E 53 20 42 3D  80413 4 A=A^S B=
0060: 42 2D 43 20 43 3D 43 2D 41 20 41 3D 41 5E 42 00  B-C C=C-A A=A^B.[/pre]

But this time, I'm getting a failure response like rabbit.

[edit 3]

Wait, my failure response isn't like rabbit's: his is failing at 0x1A, mine is failing at 0x01 (BNLS_CDKEY)

[quote][10:19:00 AM] Connecting to Battle.net...
[10:19:00 AM] Connected to Battle.net.
[10:19:01 AM] BNLS reported failure with 0x01 (BNLS_CDKEY). Disconnecting.
[10:19:01 AM] Disconnected.[/quote]

And the debug log:

[quote][10:18:57 AM] Username set.
[10:18:57 AM] Password set.
[10:18:57 AM] GameCode set to D2DV.
[10:18:57 AM] Default Home channel set to Op xDMx.
[10:18:57 AM] UseLagPlug set.
[10:18:57 AM] BNLS server set to 84.9.75.83.
[10:18:57 AM] BNET server set to asia.battle.net.
[10:18:57 AM] CDKey set.
[10:19:00 AM] Connecting to BNLS...
[10:19:00 AM] Connected to BNLS.
[10:19:00 AM] Connecting to BNET...
[10:19:00 AM] Connected to BNET.
[10:19:00 AM] 0x01 SID_EmuByte sent.
[10:19:00 AM] 0x50 SID_AUTH_INFO packet sent.
[10:19:00 AM] Received Packet: 0x25 (SID_PING)
[10:19:00 AM] 0x25 SID_PING packet sent.
[10:19:00 AM] Received Packet: 0x50 (SID_AUTH_INFO)
[10:19:00 AM] 0x01 BNLS_CDKEY packet sent.
[10:19:01 AM] Receiving data from BNLS...
[10:19:01 AM] Received Packet: 0x1 (BNLS_CDKEY)
[10:19:01 AM] Sockets closed: BNLS_CDKEY failure.[/quote]
February 21, 2007, 6:09 PM
Ringo
[quote author=Kyro link=topic=16351.msg165355#msg165355 date=1172080779]
[quote author=[RealityRipple] link=topic=16351.msg165353#msg165353 date=1172078980]
Wait, you're getting ver-ix86-0 using which client? Is the notorious ver-ix86-0 with no request string back?
[/quote]

Using SEXP. And I would assume so that there was no request string because my code was obtaining them without a problem previously with BNLS.

[quote author=[Ringo]]Ah, I see the problem, your format is bad (supprised BNLS handled it like that)
29805465 21029273 should be as 2 DWORDS, rather than a string[/quote]

I'll convert my current code to use 2 DWORDs rather than a string then. I'm just surprised that your server isn't reacting well to my using it as a string when BNLS handled it fine.
[/quote]
If your not downloading or handling any of the BnFTP files, then you dont really need to do anything with the 8 byte filetime structure other than copy it over into the 0x1A BNLS packet body.
From 0x50 to 0x1A
The problem being, is that as a string, it is no longer fixed lengh and put the filename offset out, causeing 0x1A handler to abort.
When you say BNLS handled it, did Bnet accept it originaly?
Also, any chance you can post your 0x50 parseing, where you gather the values for 0x1A?


Also what i ment about the lockdown filenumber 0, and ver-IX86 filenumber 6, is (im guessing) out of date bots that are not parseing the number from the new file names correctly.
So what I have done, is try to correct/match to the correct file number, inorder to return the correct result. (or at least better chance to)
Example:
[code]
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-2.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-7.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-1.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-5.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-1.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-5.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-5.mpq
0x09 Correcting VD2D ver-IX86-6.mpq To ver-IX86-1.mpq
0x09 Correcting NB2W lockdown-IX86-00.mpq To lockdown-IX86-17.mpq
0x09 Correcting NB2W lockdown-IX86-00.mpq To lockdown-IX86-19.mpq
0x09 Correcting NB2W lockdown-IX86-00.mpq To lockdown-IX86-14.mpq
0x09 Correcting RATS lockdown-IX86-00.mpq To lockdown-IX86-13.mpq
0x09 Correcting RATS lockdown-IX86-00.mpq To lockdown-IX86-15.mpq
[/code]
Also, it should handle IX86ver version checks to (0x1A only) so as long as the formula string is not empty, it should pass with no problems.
February 21, 2007, 6:22 PM
Barabajagal
ver-ix86-0.mpq with no request string is only showing up for lockdown clients on certain servers. As far as I know, changing your BNet Server IP should fix the problem. Last time I checked this (a few weeks ago, so it may be different now), 63.241.83.9 and 63.241.83.12 requested ver 0 with no request, whereas the rest of the west servers (63.241.83.13, 63.241.83.107, 63.241.83.108, 63.241.83.109, 63.241.83.110, 63.241.83.111, and 63.241.83.112) returned the normal lockdown system.

Edit: Just checked on Starcraft and I'm not getting any ver requests... You may want to double-check what you're receiving.
February 21, 2007, 6:28 PM
Ringo
[quote author=[RealityRipple] link=topic=16351.msg165359#msg165359 date=1172082519]
Edit: Just checked on Starcraft and I'm not getting any ver requests... You may want to double-check what you're receiving.
[/quote]
I just twigged on, hes trying to add D2, so that sorta adds up :)
Kyro, try checking your code vs the below code, to make sure your parseing lines up for 0x50.
Im taking a wild guess, and guesing that is the cause of the problems.
[code]
    0x50:
    m_ServerToken = GetDWORD(Mid(Data, 9, 4))
    tmpFileTime = Mid(Data, 17, 8)
    tmpFile = GetSTRING(Mid(Data, 25))
    tmpVals = GetSTRING(Mid(Data, 26 + Len(tmpFile)))
   
    BNLS 0x1A:
    With Buf
        .InsertDWORD m_ClientIndex '1, 2, 3, 4, 5, 6, 7, 8
        .InsertDWORD 0 'Flags (unused)
        .InsertDWORD 1 'cookie
        .InsertSTRING tmpFileTime
        .InsertNTSTRING tmpFile
        .InsertNTSTRING tmpVals
        .InsertHEADER &H1A, BNRS_HEADER
        .SendPacket sckTCP.SocketHandle
    End With
   
    BNLS 0x01:
    With Buf
        .InsertDWORD m_ServerToken
        .InsertNTSTRING "YOURCDKEYHERE"
        .InsertHEADER &H1, BNRS_HEADER
        .SendPacket sckTCP.SocketHandle
    End With
[/code]
February 21, 2007, 6:40 PM
LockesRabb
[quote author=Ringo link=topic=16351.msg165358#msg165358 date=1172082177]
When you say BNLS handled it, did Bnet accept it originaly?
[/quote]

Yes.

[quote author=Ringo link=topic=16351.msg165358#msg165358 date=1172082177]Also, any chance you can post your 0x50 parseing, where you gather the values for 0x1A?[/quote]

I'll do better than that. Here:

[pre][10:37:23 AM] Username set.
[10:37:23 AM] Password set.
[10:37:23 AM] GameCode set to SEXP.
[10:37:23 AM] CDKey set.
[10:37:23 AM] Default Home channel set to Op xDMx.
[10:37:23 AM] UseLagPlug set.
[10:37:23 AM] BNLS server set to 84.9.75.83.
[10:37:23 AM] BNET server set to 63.241.83.13.
[10:37:24 AM] Connecting to BNLS...
[10:37:25 AM] Connected to BNLS.
[10:37:25 AM] Connecting to BNET...
[10:37:25 AM] Connected to BNET.
[10:37:25 AM] 0x01 SID_EmuByte sent.
[10:37:25 AM] 0x50 SID_AUTH_INFO packet sent.
[10:37:25 AM] Received Packet: 0x25 (SID_PING)
[10:37:25 AM] 0x25 SID_PING packet sent.
[10:37:25 AM] Received Packet: 0x50 (SID_AUTH_INFO)
[10:37:25 AM] 0x01 BNLS_CDKEY packet sent.
[10:37:25 AM] Dumping sent packet...
(removed since it exposes cdkey)
[10:37:25 AM] End of packet dump.
[10:37:25 AM] Receiving data from BNLS...
[10:37:25 AM] Dumping received packet...
[10:37:25 AM] Dumping packet...
[10:37:25 AM]
0000: 2F 00 01 01 00 00 00 63 E2 EC 71 0D 00 00 00 01  /....câìq....
0010: 00 00 00 36 F7 66 00 00 00 00 00 70 66 66 85 7C  ...6÷f.....pff…|
0020: D5 C8 9B 78 51 18 73 23 9D 10 E8 C0 87 AC B3    ÕÈ›xQs#?èÀ‡¬³.
[10:37:25 AM] End of packet dump.
[10:37:25 AM] Received Packet: 0x1 (BNLS_CDKEY)
[10:37:25 AM] 0x1A BNLS_VERSIONCHECKEX2 packet sent.
[10:37:25 AM] Dumping sent packet...
[10:37:25 AM] Dumping packet...
[10:37:25 AM]
0000: 32 00 01 02 00 00 00 00 00 00 00 00 00 00 00 32  2............2
0010: 39 38 30 35 34 36 35 20 32 31 30 32 39 32 37 33  9805465 21029273
0020: 36 30 76 65 72 2D 49 58 38 36 2D 30 2E 6D 70 71  60ver-IX86-0.mpq
0030: 00 00                                            ................
[10:37:25 AM] End of packet dump.
[10:37:25 AM] BNLS Disconnected.
[10:37:38 AM] Sockets closed.[/pre]

This is my 0x50 parsing code:

[code]        Case cSID_AUTH_INFO&  '0x50
            LogonType = PktDeBuf.rDWORD
            ServerToken = PktDeBuf.rDWORD  'AKA Session Key
            UDPValue = PktDeBuf.rDWORD
            MPQFileTime = PktDeBuf.rFILETIME(True)
            Ix86verfilename = PktDeBuf.rNTString
            ChecksumFormula = PktDeBuf.rNTString
            Call BNLS_CDKEY(ServerToken)[/code]

Then after receiving BNLS_CDKEY, here's the parsing section for that:

[code]        Case &H1    'BNLS_CDKEY
            Results = CBool(PktDeBuf.rDWORD)
            If Results = False Then
                RaiseEvent sError("BNLS reported failure with 0x01 (BNLS_CDKEY). Disconnecting.")
                Disconnect
                Exit Sub
            End If
            ClientToken = PktDeBuf.rDWORD
            KeyLength = PktDeBuf.rDWORD
            CDKeyProdValue = PktDeBuf.rDWORD
            CDKeyPubValue = PktDeBuf.rDWORD
            Unknown = PktDeBuf.rDWORD
            HashedKeyData(0) = PktDeBuf.rDWORD
            HashedKeyData(1) = PktDeBuf.rDWORD
            HashedKeyData(2) = PktDeBuf.rDWORD
            HashedKeyData(3) = PktDeBuf.rDWORD
            HashedKeyData(4) = PktDeBuf.rDWORD
            Call BNLS_VERSIONCHECKEX2[/code]

This is the BNLS_VERSIONCHECKEX2 sub:

[code]Private Sub BNLS_VERSIONCHECKEX2()  '0x1A
    Dim tmp As String
    With PacketBuf
        .InsertDWORD ProductID
        .InsertDWORD &H0
        .InsertDWORD Cookie
        .InsertNonNTString MPQFileTime
        .InsertNTString Ix86verfilename
        .InsertNTString ChecksumFormula
        tmp = .RetBNLSPkt(&H1)
        .SendBNLSPacket sckBNLS, &H1A  'Send 0x1A packet
    End With
    RaiseEvent DebugOutput("0x1A BNLS_VERSIONCHECKEX2 packet sent.")
    RaiseEvent DebugOutput("Dumping sent packet...")
    DumpPacket (tmp)
    RaiseEvent DebugOutput("End of packet dump.")
End Sub[/code]

Ringo, I only switched to D2DV because SEXP wasn't working. D2DV got a BNLS_CDKEY failure so I just switched back to SEXP.

RealityRipple, 63.241.83.13, 63.241.83.107, 108, 109, 110, 111, 112 all return ver-ix86-0 with no request string.
February 21, 2007, 6:44 PM
Ringo
[quote author=Kyro link=topic=16351.msg165363#msg165363 date=1172083450]
This is my 0x50 parsing code:
[code]        Case cSID_AUTH_INFO&   '0x50
            LogonType = PktDeBuf.rDWORD
            ServerToken = PktDeBuf.rDWORD   'AKA Session Key
            UDPValue = PktDeBuf.rDWORD
            MPQFileTime = PktDeBuf.rFILETIME(True)
            Ix86verfilename = PktDeBuf.rNTString
            ChecksumFormula = PktDeBuf.rNTString
            Call BNLS_CDKEY(ServerToken)[/code]

Then after receiving BNLS_CDKEY, here's the parsing section for that:

[code]        Case &H1    'BNLS_CDKEY
            Results = CBool(PktDeBuf.rDWORD)
            If Results = False Then
                RaiseEvent sError("BNLS reported failure with 0x01 (BNLS_CDKEY). Disconnecting.")
                Disconnect
                Exit Sub
            End If
            ClientToken = PktDeBuf.rDWORD
            KeyLength = PktDeBuf.rDWORD
            CDKeyProdValue = PktDeBuf.rDWORD
            CDKeyPubValue = PktDeBuf.rDWORD
            Unknown = PktDeBuf.rDWORD
            HashedKeyData(0) = PktDeBuf.rDWORD
            HashedKeyData(1) = PktDeBuf.rDWORD
            HashedKeyData(2) = PktDeBuf.rDWORD
            HashedKeyData(3) = PktDeBuf.rDWORD
            HashedKeyData(4) = PktDeBuf.rDWORD
            Call BNLS_VERSIONCHECKEX2[/code]

This is the BNLS_VERSIONCHECKEX2 sub:

[code]Private Sub BNLS_VERSIONCHECKEX2()  '0x1A
    Dim tmp As String
    With PacketBuf
        .InsertDWORD ProductID
        .InsertDWORD &H0
        .InsertDWORD Cookie
        .InsertNonNTString MPQFileTime
        .InsertNTString Ix86verfilename
        .InsertNTString ChecksumFormula
        tmp = .RetBNLSPkt(&H1)
        .SendBNLSPacket sckBNLS, &H1A   'Send 0x1A packet
    End With
    RaiseEvent DebugOutput("0x1A BNLS_VERSIONCHECKEX2 packet sent.")
    RaiseEvent DebugOutput("Dumping sent packet...")
    DumpPacket (tmp)
    RaiseEvent DebugOutput("End of packet dump.")
End Sub[/code]
[/quote]

From what I can see by the responces, its all good apart from the filetime.
[code]
    MPQFileTime = PktDeBuf.rFILETIME(True)
[/code]
[code]
        .InsertNonNTString MPQFileTime
[/code]

rFILETIME() just needs to return a fixed lengh 8 byte string, then 0x1A should aline.

Also, one other thing, what version byte are you useing in 0x50? 0xCF for sc/bw and 0x0B for d2/d2lod?
February 21, 2007, 6:52 PM
LockesRabb
WTH? I just checked the verbyte (it obtains verbyte by itself automatically), and it was 0. Bah, must be an error in the verbyte code somewhere. In any case I put it back to CF. Let's see if it works...

Hmm, this is where the whole mess started. No wonder why it was set to 0. Check this out:

Main window:

[quote][10:57:59 AM] Connecting to Battle.net...
[10:57:59 AM] Connected to Battle.net.
[10:58:00 AM] BNLS reported failure with 0x1A (BNLS_VERSIONCHECKEX2). Disconnecting.
[10:58:00 AM] Disconnected.
[10:58:00 AM] VerByte has been updated with new VerByte. Please reconnect.
[10:58:00 AM] Disconnected.[/quote]

This is the debug log:

[quote][pre][10:57:57 AM] Username set.
[10:57:57 AM] Password set.
[10:57:57 AM] GameCode set to SEXP.
[10:57:57 AM] CDKey set.
[10:57:57 AM] Default Home channel set to Op xDMx.
[10:57:57 AM] UseLagPlug set.
[10:57:57 AM] BNLS server set to 84.9.75.83.
[10:57:57 AM] BNET server set to 63.241.83.112.
[10:57:59 AM] Connecting to BNLS...
[10:57:59 AM] Connected to BNLS.
[10:57:59 AM] Connecting to BNET...
[10:57:59 AM] Connected to BNET.
[10:57:59 AM] 0x01 SID_EmuByte sent.
[10:57:59 AM] 0x50 SID_AUTH_INFO packet sent.
[10:57:59 AM] Received Packet: 0x25 (SID_PING)
[10:57:59 AM] 0x25 SID_PING packet sent.
[10:57:59 AM] Received Packet: 0x50 (SID_AUTH_INFO)
[10:57:59 AM] 0x01 BNLS_CDKEY packet sent.
[10:57:59 AM] Dumping sent packet...
[10:57:59 AM] Dumping packet...
[10:57:59 AM]
(removed dump due to cdkey)
[10:57:59 AM] End of packet dump.
[10:58:00 AM] Receiving data from BNLS...
[10:58:00 AM] Dumping received packet...
[10:58:00 AM] Dumping packet...
[10:58:00 AM]
0000: 2F 00 01 01 00 00 00 A1 B9 FF 71 0D 00 00 00 01  /....¡¹ÿq....
0010: 00 00 00 36 F7 66 00 00 00 00 00 E5 28 B9 5D 12  ...6÷f.....å(¹]
0020: 98 19 CC 5E C0 FD F6 D7 28 97 4D 48 01 D2 FA    ˜Ì^Àýö×(—MHÒú.
[10:58:00 AM] End of packet dump.
[10:58:00 AM] Received Packet: 0x1 (BNLS_CDKEY)
[10:58:00 AM] 0x1A BNLS_VERSIONCHECKEX2 packet sent.
[10:58:00 AM] Dumping sent packet...
[10:58:00 AM] Dumping packet...
[10:58:00 AM]
0000: 48 00 01 02 00 00 00 00 00 00 00 00 00 00 00 32  H............2
0010: 39 38 31 37 39 37 30 20 2D 36 33 38 30 37 36 34  9817970 -6380764
0020: 31 36 6C 6F 63 6B 64 6F 77 6E 2D 49 58 38 36 2D  16lockdown-IX86-
0030: 31 33 2E 6D 70 71 00 24 EF 45 31 02 95 71 3B 9A  13.mpq.$ïE1•q;š
0040: 14 DF B0 93 7B 72 44 00                          ß°“{rD.........
[10:58:00 AM] End of packet dump.
[10:58:00 AM] Receiving data from BNLS...
[10:58:00 AM] Dumping received packet...
[10:58:00 AM] Dumping packet...
[10:58:00 AM]
0000: 0B 00 1A 00 00 00 00 00 00 00 00                ..............
[10:58:00 AM] End of packet dump.
[10:58:00 AM] Received Packet: 0x1A (BNLS_VERSIONCHECKEX2)
[10:58:00 AM] Sockets closed.
[10:58:00 AM] VerByte set.[/pre][/quote]

Jeez. What a mess... No wonder why. I forgot to add 'Exit Sub' right after it fails. So it was trying to parse the rest of the packet.

Okay, now this time instead of getting disconnected, 0x1A (like rabbit) is returning failure.
February 21, 2007, 7:05 PM
Barabajagal
I just tried connecting to all the west servers, and got the following requests:
[code]Server Request: lockdown-IX86-15.mpq -  86 EF 2D EC 11 06 0C CE 11 A4 E8 D4 75 1B 1B 47
Server Request: lockdown-IX86-03.mpq -  DD 47 36 80 82 03 48 AF 9E 50 39 44 34 72 AB 92
Server Request: lockdown-IX86-19.mpq -  46 4F BC 12 E2 F5 19 A4 3C 2B 56 86 90 53 32 1C
Server Request: lockdown-IX86-02.mpq -  7F F6 0A D6 1A DC 5A F5 F9 C8 47 34 17 0F 2D 04
Server Request: lockdown-IX86-12.mpq -  A4 B3 70 7C C9 70 D8 81 B4 F3 B2 54 58 48 39 63
Server Request: lockdown-IX86-18.mpq -  A2 FE AB 7B 03 66 29 A8 27 39 64 EF F2 C5 8D B8
Server Request: lockdown-IX86-09.mpq -  33 11 19 7C A3 FE F9 1B 38 DE 84 99 DF 11 1B BC
Server Request: lockdown-IX86-11.mpq -  98 28 1C 75 08 CC 22 FE E2 D6 4C 90 9B 5F 0F 78
Server Request: lockdown-IX86-10.mpq -  69 13 AE 6D 84 24 19 C7 A8 57 10 E9 C8 E3 1F C4[/code]

You may want to use WPE or a similar packet logger to check that you're actually receiving ver-ix86-0.mpq from BNCS.

Edit: Nvm, Looks like you're getting the right requests now.
February 21, 2007, 7:06 PM
LockesRabb
Nah, no need. I just found the reason why I kept getting the ver-ix86-0.mpq with empty string; it was because my verbyte that I was passing to bnet was set to 0. When I fixed the verbyte error, bnet stopped giving me ver-ix86-0.mpq with empty packets and everything was normal after that. So the fault was mine.

Now to try to figure out this damnable filetime thing...
February 21, 2007, 7:08 PM
Barabajagal
Try loading it as two DWord (Long) values instead. the first dword is the Low filetime, the second is High.

[code]
Case cSID_AUTH_INFO&  '0x50
LogonType = PktDeBuf.rDWORD
ServerToken = PktDeBuf.rDWORD  'AKA Session Key
UDPValue = PktDeBuf.rDWORD
MPQFTLow = PktDeBuf.rDWORD
MPQFTHigh = PktDeBuf.rDWORD
Ix86verfilename = PktDeBuf.rNTString
ChecksumFormula = PktDeBuf.rNTString
Call BNLS_CDKEY(ServerToken)
[/code]

[code]
Private Sub BNLS_VERSIONCHECKEX2()  '0x1A
    Dim tmp As String
    With PacketBuf
        .InsertDWORD ProductID
        .InsertDWORD &H0
        .InsertDWORD Cookie
        .InsertDWORD MPQFTLow
        .InsertDWORD MPQFTHigh
        .InsertNTString Ix86verfilename
        .InsertNTString ChecksumFormula
        tmp = .RetBNLSPkt(&H1)
        .SendBNLSPacket sckBNLS, &H1A  'Send 0x1A packet
    End With
    RaiseEvent DebugOutput("0x1A BNLS_VERSIONCHECKEX2 packet sent.")
    RaiseEvent DebugOutput("Dumping sent packet...")
    DumpPacket (tmp)
    RaiseEvent DebugOutput("End of packet dump.")
End Sub
[/code]

Something along those lines.
February 21, 2007, 7:13 PM
LockesRabb
That solved the problem. Thanks RealityRipple.

Ringo, just wondering -- do you have plans on adding support for 0x0B on your server?
February 21, 2007, 7:21 PM
Ringo
[quote author=Kyro link=topic=16351.msg165372#msg165372 date=1172085665]
That solved the problem. Thanks RealityRipple.

Ringo, just wondering -- do you have plans on adding support for 0x0B on your server?
[/quote]
Can do, I just need to know one thing from somone whos used 0x0B before, Can 0x0B single hash? Or is it just double hashing?
February 21, 2007, 7:34 PM
HdxBmx27
It can do both,
http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=171
Depending on what the user specify.
And Ringo get on MSN some time ><
~Hdx
February 21, 2007, 7:39 PM
Ringo
[quote author=Kyro link=topic=16351.msg165372#msg165372 date=1172085665]
Ringo, just wondering -- do you have plans on adding support for 0x0B on your server?
[/quote]
Done, Just needs testing now :)

[quote author=Hdx link=topic=16351.msg165374#msg165374 date=1172086790]
It can do both,
http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=171
Depending on what the user specify.
And Ringo get on MSN some time ><
~Hdx
[/quote]
Great, thanks. Im guessing if the 2nd bit of the flag is not set, then it should be single hashed?
btw, I cant logon MSN, I always get "service unavalible" because I cant remember my password/and/or becuase it was made by microsoft :P
I think I have an aim account, but I will need to try remember it. :(
February 21, 2007, 8:10 PM
LockesRabb
[quote author=Ringo link=topic=16351.msg165376#msg165376 date=1172088645]
[quote author=Kyro link=topic=16351.msg165372#msg165372 date=1172085665]
Ringo, just wondering -- do you have plans on adding support for 0x0B on your server?
[/quote]
Done, Just needs testing now :)

[quote author=Hdx link=topic=16351.msg165374#msg165374 date=1172086790]
It can do both,
http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=171
Depending on what the user specify.
And Ringo get on MSN some time ><
~Hdx
[/quote]
Great, thanks. Im guessing if the 2nd bit of the flag is not set, then it should be single hashed?
btw, I cant logon MSN, I always get "service unavalible" because I cant remember my password/and/or becuase it was made by microsoft :P
I think I have an aim account, but I will need to try remember it. :(

[/quote]

1. 0x0B doesn't work. It disconnects me. I just tested it.
2. If the flag isn't set (0), or if it's set to 1, then yes, single hash. But if it's set to 2, double hash. If it's set to 4, cookie hash.
February 21, 2007, 8:33 PM
Ringo
[quote author=Kyro link=topic=16351.msg165379#msg165379 date=1172090005]
1. 0x0B doesn't work. It disconnects me. I just tested it.
2. If the flag isn't set (0), or if it's set to 1, then yes, single hash. But if it's set to 2, double hash. If it's set to 4, cookie hash.
[/quote]
Ah, try again a few times and I will fix it :P
It said there was not enough bytes for the client and server token.
Btw, I was under the impression 0x04 ment a cookie was at the end of the message, and not any form of hashing?
February 21, 2007, 8:41 PM
JoeTheOdd
[quote author=brew link=topic=16351.msg165308#msg165308 date=1172024663]
Kyro are you sure that's the right packet....? If it is then your send0x1a sub is severly screwed up.
[/quote]

Why is sending 0x1A diserving of it's own subroutine? Here's how I handle BNLS CheckRevision requests. Sort of bad coding -- needs some work, but regardless.

[code]    public CheckRevisionResults getVersionCheck(String filename, byte[] formula, long filetime) throws IOException, InvalidVersion
    {
        Socket s = getConnection();
        InputStream in = s.getInputStream();
        OutputStream out = s.getOutputStream();
       
        int verhash, checksum;
        Buffer statstring = new Buffer();


    if(game.equals("STAR") || game.equals("SEXP")) // Use BNLS 0x09
    {
    BNLSPacket pkt = new BNLSPacket(BNLS_VERSIONCHECK);
pkt.addDWord(getBnlsProductId(game));
pkt.addDWord(extractMpqNumber(filename));
pkt.addBytes(formula);
out.write(pkt.getBytes());
out.flush();

BNLSPacket inPkt = getNextPacket(in);
    if(inPkt.removeDWord() == 0)
    {
    throw new InvalidVersion("BNLS returned failure in 0x09.");
    }
    verhash = inPkt.removeDWord();
    checksum = inPkt.removeDWord();

    byte b = 1;
    while(b != 0)
    {
    b = inPkt.removeByte();
    statstring.addByte(b);
    }
    }
    else // Use BNLS 0x1A
    {
    BNLSPacket pkt = new BNLSPacket(BNLS_VERSIONCHECKEX2);
    pkt.addDWord(getBnlsProductId(game)); // (DWORD) Product ID
    pkt.addDWord(0); // (DWORD) Flags**
    pkt.addDWord(0); // (DWORD) Cookie
    pkt.addLong(filetime); // (ULONGLONG) Timestamp for version check archive
    pkt.addNTString(filename); // (STRING) Version check archive filename.
    pkt.addBytes(formula); // (STRING) Checksum formula.
    out.write(pkt.getBytes());
    out.flush();
   
    BNLSPacket inPkt = getNextPacket(in);
    if(inPkt.removeDWord() == 0)
    {
    throw new InvalidVersion("BNLS returned failure in 0x1A.");
    }
    verhash = inPkt.removeDWord();
    checksum = inPkt.removeDWord();
   
    byte b = 1;
    while(b != 0)
    {
    b = inPkt.removeByte();
    statstring.addByte(b);
    }
    }

return new CheckRevisionResults(verhash, checksum, statstring.getBytes());   
    }[/code]
February 21, 2007, 8:52 PM
LockesRabb
@ Ringo; Cookies are required only if the flag was set to 4. If flag wasn't set to 4, then the cookie DWORD would be empty. Also, I just had my program connect two more times. Still failed.

@Joe - I put it in its own subrountine because it makes it easier for me to make sense of my own code. Each person has their own coding style. My mental processes makes it extremely difficult for me to read (ADHD), so as a result I have to carefully organize everything even if it's a pain in the butt -- otherwise I lose focus. It's a most annoying handicap. Especially when it comes to learning how to code or read packets, etc, etc. :p
February 21, 2007, 8:55 PM
Ringo
[quote author=Kyro link=topic=16351.msg165382#msg165382 date=1172091357]
@ Ringo; Cookies are required only if the flag was set to 4. If flag wasn't set to 4, then the cookie DWORD would be empty. Also, I just had my program connect two more times. Still failed.
[/quote]
Ah, thats what I thought.
I picked up what was wrong, i was miscounting a byte, try now :P
February 21, 2007, 9:00 PM
HdxBmx27
[code]
size = in->(int)get;
type = in->(int)get;
data[] = H(in->(byte[])get(size));
if(type & 0x02) == 0x02 {
  tmp->add(in->(byte[])get(8));
  tmp->add(data);
  data = H(tmp->(byte[])get(28));
}
out->add(data);
if(type & 0x04) == 0x04 out->add(in->(int)get);[/code]
Something like that.
~Hdx


BAH DANG YOU all for posting while I was typing 3 times!I'll post this anyways cuz I like the asic sceam and its not how its done in JBLS so I will change it when i get home. (After making sure its efficient);
~Hdx
February 21, 2007, 9:03 PM
Ringo
[quote author=Hdx link=topic=16351.msg165384#msg165384 date=1172091836]
[code]
size = in->(int)get;
type = in->(int)get;
data[] = H(in->(byte[])get(size));
if(type & 0x02) == 0x02 {
  tmp->add(in->(byte[])get(8));
  tmp->add(data);
  data = H(tmp->(byte[])get(28));
}
out->add(data);
if(type & 0x04) == 0x04 out->add(in->(int)get);[/code]
Something like that.
~Hdx


BAH DANG YOU all for posting while I was typing 3 times!I'll post this anyways cuz I like the asic sceam and its not how its done in JBLS so I will change it when i get home. (After making sure its efficient);
~Hdx
[/quote]
ta, all done, I was just unsure what determined the single hashing :)
Im just waiting for Kyro to verify if it works or not, then im off out.
February 21, 2007, 9:11 PM
LockesRabb
Ringo -- Good news. 0x0B works like a charm. I just logged into BNET without a problem. Thanks. :)

BTW have you considered hosting BNLS permanently since Skywing's BNLS doesn't exactly have an excellent record of uptime? Or at the very least, let Hdx host it?

To make it easier for people to remember, and as my thanks for your being willing to host BNLS, even if you intend to keep it temporarily, I've set up the following address:

bnls.dementedminds.net

To redirect to your bnls server. The redirection is permanent. Thanks. :)
February 21, 2007, 9:17 PM
MysT_DooM
his ip is not static though
February 21, 2007, 11:10 PM
UserLoser
[quote author=Kyro link=topic=16351.msg165386#msg165386 date=1172092637]
Ringo -- Good news. 0x0B works like a charm. I just logged into BNET without a problem. Thanks. :)

BTW have you considered hosting BNLS permanently since Skywing's BNLS doesn't exactly have an excellent record of uptime? Or at the very least, let Hdx host it?

To make it easier for people to remember, and as my thanks for your being willing to host BNLS, even if you intend to keep it temporarily, I've set up the following address:

bnls.dementedminds.net

To redirect to your bnls server. The redirection is permanent. Thanks. :)
[/quote]

BNLS has always been up with excellent uptime.  The past couple of days is the first time in several years that I can remember where it wasn't running.
February 21, 2007, 11:14 PM
LockesRabb
That's strange, I can remember it going down a couple of times in the past year. A few of those times were for a day or two. This time is the longest that it has stayed down. A server that had 99.9% uptime would be good. ;p
February 21, 2007, 11:16 PM
LockesRabb
[quote author=MysT_DooM link=topic=16351.msg165391#msg165391 date=1172099429]
his ip is not static though
[/quote]

What makes you say that?

[Edit] Damn, sorry abt the double post.
February 21, 2007, 11:17 PM
HdxBmx27
I can remember several times throught out the last year they BNLS has been down for spans of 12hrs-5days
I can remember them because every dammen time I'd get like 50,000,000,000....... nubs asking me to fix there bots.
~Hdx
February 21, 2007, 11:23 PM
LockesRabb
50 billion? Surely you jest.  :P
February 21, 2007, 11:33 PM
MysT_DooM
[quote author=Kyro link=topic=16351.msg165395#msg165395 date=1172099830]
[quote author=MysT_DooM link=topic=16351.msg165391#msg165391 date=1172099429]
his ip is not static though
[/quote]

What makes you say that?

[Edit] Damn, sorry abt the double post.
[/quote]

because I know
February 21, 2007, 11:38 PM
LockesRabb
Yeah, Ringo confirmed it in the other post.
February 21, 2007, 11:42 PM
Barabajagal
Take the number of idiots with bots, multiply it by the number of minutes in an hour, divide by 5, and multiply that by the number of hours BNLS is down. Then cut that number in half. The total is half the bot user population, whining every 5 minutes that their bot is broken. Not always to the same person. Then add the number of bots out there divided by three to that total (to count the bot writers who think something's wrong with their bot). The equation becomes
[code]IdiotCount * 60 / 5 * BNLSDown / 2 + BotCount / 3[/code]

The question is, there are like... 8 BNLS IPs.... do they all go to the same server/cluster? It seems like they're all down every time something goes wrong. They should be individually separated somehow... though that makes updating them harder, it also allows for testing one server and then upgrading the rest (like BNet does).
February 21, 2007, 11:43 PM
HdxBmx27
From what I have been told, they all point to the same box, the reason they have multiple ips is because sometimes a spacific gateway goes down, not the server itself.
IIRC the server is hosted on a box in sky's basement, right next to the bed where him and Yoni like to make love! :P

And yes that was exageration, but seriously I get thousands of complaints a day

~Hdx
February 21, 2007, 11:50 PM
Barabajagal
In that case, I'd recommends putting google ads on the forums, getting enough money for a second server, and using one as a failsafe.

Edit: Also, I'd recommend moving the server away from the bed. Half the downtimes are probably cause it gets knocked over!
February 21, 2007, 11:52 PM
UserLoser
[quote author=Hdx link=topic=16351.msg165397#msg165397 date=1172100193]
I can remember several times throught out the last year they BNLS has been down for spans of 12hrs-5days
I can remember them because every dammen time I'd get like 50,000,000,000....... nubs asking me to fix there bots.
~Hdx
[/quote]

Hmm I disagree.  In the past years there have been DDoS attacks multiple times, the domains have gone though several changes and at times the domain bnls.valhallalegends.com was no good, but the server was still up~  This was discussed already too that it wasn't actually down, just unreachable (not BNLS's fault for that)
February 22, 2007, 12:13 AM
Spht
[quote author=UserLoser link=topic=16351.msg165414#msg165414 date=1172103201]
[quote author=Hdx link=topic=16351.msg165397#msg165397 date=1172100193]
I can remember several times throught out the last year they BNLS has been down for spans of 12hrs-5days
I can remember them because every dammen time I'd get like 50,000,000,000....... nubs asking me to fix there bots.
~Hdx
[/quote]

Hmm I disagree.  In the past years there have been DDoS attacks multiple times, the domains have gone though several changes and at times the domain bnls.valhallalegends.com was no good, but the server was still up~  This was discussed already too that it wasn't actually down, just unreachable (not BNLS's fault for that)
[/quote]

BNLS is not running.  Someone needs to start it
February 22, 2007, 12:15 AM
rabbit
@Ringo:
[code]BNLS 0x1a SEND
0000:  3A 00 1A 01 00 00 00 00 00 00 00 00 00 00 00 00  :.............
0010:  60 95 D7 72 FC C6 01 6C 6F 63 6B 64 6F 77 6E 2D  `•×rüÆlockdown-
0020:  49 58 38 36 2D 31 32 2E 6D 70 71 00 8B 60 01 44  IX86-12.mpq.‹`D
0030:  93 69 49 46 67 9F A1 5E 24 A2 18 69 00            “iIFgŸ¡^$¢i....
BNLS0 0x1a RECV
0000:  0B 00 1A 00 00 00 00 00 00 00 00                  ..............
[/code]

I haven't read most of the posts on page 5, so if I missed something let me know.
February 22, 2007, 1:19 AM
Ringo
[quote author=rabbit link=topic=16351.msg165426#msg165426 date=1172107140]
@Ringo:
[code]BNLS 0x1a SEND
0000:  3A 00 1A 01 00 00 00 00 00 00 00 00 00 00 00 00   :.............
0010:  60 95 D7 72 FC C6 01 6C 6F 63 6B 64 6F 77 6E 2D   `•×rüÆlockdown-
0020:  49 58 38 36 2D 31 32 2E 6D 70 71 00 8B 60 01 44   IX86-12.mpq.‹`D
0030:  93 69 49 46 67 9F A1 5E 24 A2 18 69 00            “iIFgŸ¡^$¢i....
BNLS0 0x1a RECV
0000:  0B 00 1A 00 00 00 00 00 00 00 00                  ..............
[/code]

I haven't read most of the posts on page 5, so if I missed something let me know.
[/quote]
I think I found your request:
[code]
0x1A Failed CR lockdown-IX86-12.mpq Starcraft Hash - 8B 60 01 44 93 69 49 46 67 9F A1 5E 24 A2 18 69
[/code]
But It looks flawless.. even tho it failed to find a match on the hash.
Are you useing 0x06, 0x07 by any chance?
Im kinda out of ideas :( im guessing it maybe a hash I dont currently have for lockdown 12, so if this is the case, it should work if you switch to a differnt bnet server ip. If not a few connects should get through, other than that im out of ideas.
February 22, 2007, 1:35 AM
rabbit
I've tried the all the realms on a whole bunch of different IP's, but my 0x1a result is always "failed".

And BNCS/BNLS packets 0x06, 0x07?  I don't use any of them.
February 22, 2007, 1:40 AM
Ringo
[quote author=rabbit link=topic=16351.msg165435#msg165435 date=1172108436]
I've tried the all the realms on a whole bunch of different IP's, but my 0x1a result is always "failed".

And BNCS/BNLS packets 0x06, 0x07?  I don't use any of them.
[/quote]
Ah, the reassion I asked if you used 0x06, 0x07 (BNCS) is because the version checks are the same for awhile, where as 0x50 they are randomized.
Btw, I know this is a stupid question, but is there any chance you could be putting 0x01 for SC but logging on Bnet with BW?
Because the hash's are differnt, but both would result to the same thing, so a SC hash wont be in the BW db and viseverser. Thats the only other thing I can think of :(
February 22, 2007, 1:46 AM
Barabajagal
Why didn't you put both SC and BW into the same database? Should BNet continue to change the used values, they'll eventually overlap...
February 22, 2007, 1:51 AM
JoeTheOdd
[quote author=Kyro link=topic=16351.msg165382#msg165382 date=1172091357]
@Joe - I put it in its own subrountine because it makes it easier for me to make sense of my own code. Each person has their own coding style. My mental processes makes it extremely difficult for me to read (ADHD), so as a result I have to carefully organize everything even if it's a pain in the butt -- otherwise I lose focus. It's a most annoying handicap. Especially when it comes to learning how to code or read packets, etc, etc. :p
[/quote]

I have ADHD too. :)
February 22, 2007, 3:44 AM
Ringo
[quote author=Joe[x86] link=topic=16351.msg165447#msg165447 date=1172115883]
[quote author=Kyro link=topic=16351.msg165382#msg165382 date=1172091357]
@Joe - I put it in its own subrountine because it makes it easier for me to make sense of my own code. Each person has their own coding style. My mental processes makes it extremely difficult for me to read (ADHD), so as a result I have to carefully organize everything even if it's a pain in the butt -- otherwise I lose focus. It's a most annoying handicap. Especially when it comes to learning how to code or read packets, etc, etc. :p
[/quote]

I have ADHD too. :)
[/quote]

Me 2 :)
I droped out of school at 12 (im now 24), and am dyslexic.
I know what you mean Kyro, finding motivation to spend more than 1 - 2 days on a project is very hard to come by :P
Now I make a living out of it, the goverment pay me to be ADHD :)
February 22, 2007, 8:26 AM
rabbit
[quote author=Ringo link=topic=16351.msg165437#msg165437 date=1172108789]
[quote author=rabbit link=topic=16351.msg165435#msg165435 date=1172108436]
I've tried the all the realms on a whole bunch of different IP's, but my 0x1a result is always "failed".

And BNCS/BNLS packets 0x06, 0x07?  I don't use any of them.
[/quote]
Ah, the reassion I asked if you used 0x06, 0x07 (BNCS) is because the version checks are the same for awhile, where as 0x50 they are randomized.
Btw, I know this is a stupid question, but is there any chance you could be putting 0x01 for SC but logging on Bnet with BW?
Because the hash's are differnt, but both would result to the same thing, so a SC hash wont be in the BW db and viseverser. Thats the only other thing I can think of :(
[/quote]Yeah, I checked that.  I was yesterday.  I changed it, but I still get a failure more often than success :\
February 22, 2007, 11:43 AM
Ringo
[quote author=rabbit link=topic=16351.msg165473#msg165473 date=1172144607]
Yeah, I checked that.  I was yesterday.  I changed it, but I still get a failure more often than success :\
[/quote]
Doh :(
Im now handling failed results by switching sc to bw for ie, and trying it again.
Is it any better now?

Aside, I added D1/D2SWare/ScSWare (0x09, 0x10, 0x11 -- exacly the same as JBLS) but I didnt put in any SSHR results -- I need to reboot comp for that :P
Also D1/D1SWare wont handle lockdown 0 at all.
SSHR fked me PC >_< :P
February 22, 2007, 2:04 PM
rabbit
I'm getting a lot more successes now, though I still get a fair number of failures.
February 22, 2007, 2:51 PM
BreW
[quote author=Ringo link=topic=16351.msg165477#msg165477 date=1172153074]
[quote author=rabbit link=topic=16351.msg165473#msg165473 date=1172144607]
Yeah, I checked that.  I was yesterday.  I changed it, but I still get a failure more often than success :\
[/quote]
Doh :(
Im now handling failed results by switching sc to bw for ie, and trying it again.
Is it any better now?

Aside, I added D1/D2SWare/ScSWare (0x09, 0x10, 0x11 -- exacly the same as JBLS) but I didnt put in any SSHR results -- I need to reboot comp for that :P
Also D1/D1SWare wont handle lockdown 0 at all.
SSHR fked me PC >_< :P
[/quote]

D2SW? Expand please!
February 22, 2007, 8:47 PM
FrostWraith
Its most commonly referred to as DSHR
February 22, 2007, 8:54 PM
BreW
Correct me if I'm wrong but DSHR was the shareware version of Diablo I, right? "D2SW" sounds like it may be refering to Diablo II.
February 23, 2007, 12:06 AM
Ringo
1234 it was a typo :)
I ment D1SWare :P
February 23, 2007, 2:38 AM
Barabajagal
Ringo:
DRTL Values
DSHR Values
SSHR Values

The DRTL ones work about 90% of the time, the others, not so much... I'm adding to them constantly.
February 23, 2007, 2:44 AM
Ringo
[quote author=[RealityRipple] link=topic=16351.msg165549#msg165549 date=1172198643]
Ringo:
DRTL Values
DSHR Values
SSHR Values

The DRTL ones work about 90% of the time, the others, not so much... I'm adding to them constantly.
[/quote]
Cool :P
I got 100% of them all, already tbh, I cant added them to CRDB untill i reboot my comp (but then my ip would change so eh)
Just a quick tip:
Use 0x50 with the older clients, just dont responce to it, log the request to obtain the values later :P
Takes like 1min to log all 1k values, and another 30min to run them off the client :)
February 23, 2007, 2:49 AM
Barabajagal
Unfortunately, that's not so for me... I have the worst dial up you'll ever see, and getting 1000 request values would take... about 2 hours... plus, how am i supposed to get the values from the client that fast? I don't have any of the skills required to force the client to give me values, I have to do it the slow way (emulate the server, and have the client constantly reconnect to the fake server, gathering one value every 5 seconds or so).
February 23, 2007, 2:55 AM
LockesRabb
[quote author=Ringo link=topic=16351.msg165553#msg165553 date=1172198987]
[quote author=[RealityRipple] link=topic=16351.msg165549#msg165549 date=1172198643]
Ringo:
DRTL Values
DSHR Values
SSHR Values

The DRTL ones work about 90% of the time, the others, not so much... I'm adding to them constantly.
[/quote]
Cool :P
I got 100% of them all, already tbh, I cant added them to CRDB untill i reboot my comp (but then my ip would change so eh)
Just a quick tip:
Use 0x50 with the older clients, just dont responce to it, log the request to obtain the values later :P
Takes like 1min to log all 1k values, and another 30min to run them off the client :)
[/quote]

Reboot, PM me your IP and I'll update bnls.dementedminds.net to redirect to the correct IP.
February 23, 2007, 2:56 AM

Search