Valhalla Legends Forums Archive | Battle.net Bot Development | BNCSutil Example Bot

AuthorMessageTime
shadypalm88
I've been seeing a few posts here of people having problems figuring out how to use BNCSutil, and I think they're all using Visual Basic.

So I put together an example bot in Visual Basic capable of connecting and logging in (doesn't enter chat or anything).  I'm hoping this will show a little more clearly how it's used, how to check for errors, etc.

I'm placing this code (except BNCSutil.bas, which, like the rest of BNCSutil, falls under the LGPL) in the public domain.  Do with it what you'd like.

Click here to download.  (Also available on the BNCSutil site.)

If you have any questions about the example, reply here.

[Edit: Never did actually say what language it was in.]
March 11, 2005, 5:49 AM
HdxBmx27
Cool, now let the leaxched warcraft 3 hashing bots begin!
But ya, thank you. That example showed me what I was doing wrong. I missunderstood the nls_init() function. I was creating a new pointer for each packet. Simply initalizing the pointer on 0x53 C->S and then clearing it on 0x54 c->s fixed it :) thank you once again.
~-~(HDX)~-~
March 11, 2005, 6:34 AM
iago
Nice :)

I'd rather see bots use BNCSUtil than use BNLS or NLS.dll. 

I'm glad my code is helping people :)
March 11, 2005, 2:50 PM
NetNX
I love you iago, lol i love bncsutil also ~_^ Eric you own
March 11, 2005, 3:15 PM
QwertyMonster
BNCSutil, very nice! ;D

Maybe people will use this more than BNLS or NLS.dll ? :P
March 11, 2005, 3:47 PM
iago
Hopefully people will use it instead of NLS.dll, since at least BNCSutil is supported.  Not to mention, it's cross-platform.

BNLS is fine for certain reasons, like if the original author of a bot gets lost in a certain MMORPG and is unable to update it in a timely fashion.  Although bots should be flexible enough that they don't need to be recompiled to change version information in the first place.  But eh? :/
March 11, 2005, 4:10 PM
QwertyMonster
[quote author=iago link=topic=10885.msg103336#msg103336 date=1110557452]
Hopefully people will use it instead of NLS.dll, since at least BNCSutil is supported.  Not to mention, it's cross-platform.

BNLS is fine for certain reasons, like if the original author of a bot gets lost in a certain MMORPG and is unable to update it in a timely fashion.  Although bots should be flexible enough that they don't need to be recompiled to change version information in the first place.  But eh? :/
[/quote]


Yeah. Totally agreed!

BNCSutil all the way baby! :P

Well done shadypalm88!  8)
March 11, 2005, 5:44 PM
-MichaeL-
I get a runtime error 49 bad DLL calling for this line.
    mpqNumber = extractMPQNumber(P.GetString())
when testing the sample.
March 11, 2005, 7:51 PM
UserLoser.
[quote author=shadypalm88 link=topic=10885.msg103300#msg103300 date=1110520184]
I've been seeing a few posts here of people having problems figuring out how to use BNCSutil, and I think they're all using Visual Basic.

So I put together an example bot in Visual Basic capable of connecting and logging in (doesn't enter chat or anything).  I'm hoping this will show a little more clearly how it's used, how to check for errors, etc.

I'm placing this code (except BNCSutil.bas, which, like the rest of BNCSutil, falls under the LGPL) in the public domain.  Do with it what you'd like.

Click here to download.  (Also available on the BNCSutil site.)

If you have any questions about the example, reply here.

[Edit: Never did actually say what language it was in.]
[/quote]

[code]
        Case 1
            'W3 Beta NLS
            Disconnect
            MsgBox "The NLS revision that the server has requested " & _
                "is not supported.", vbExclamation, "Example Bot"
            Exit Sub
[/code]

That is false since you support the new logon system when the value is 2.  Diablo II and Starcraft (with their expansions) both support the use of the new logon system when this value is set to 1.
March 11, 2005, 7:52 PM
iago
I do the same style of login if I receive 1 or 2, even though I'm not totally sure that NLS1 is the same as NLS2. 
March 11, 2005, 8:29 PM
shadypalm88
[quote author=UserLoser link=topic=10885.msg103357#msg103357 date=1110570726]That is false since you support the new logon system when the value is 2.  Diablo II and Starcraft (with their expansions) both support the use of the new logon system when this value is set to 1.
[/quote]If I remember using BNLS correctly, I had to set the NLS revision if this value was not equal to 1, or I would be unable to login.  Now, having never seen a logon type of 1 "in the wild", I don't know for sure if I would be able to log on or not, because I don't know what, if any, differences there are (or if any differences are in operations like upgrading accounts).  But based on what I knew about BNLS, I decided to have it fail gracefully.

If someone could elaborate on the differences, or say whether the differences are known, etc., it'd be appreciated.
March 11, 2005, 9:18 PM
UserLoser.
[quote author=shadypalm88 link=topic=10885.msg103366#msg103366 date=1110575880]
[quote author=UserLoser link=topic=10885.msg103357#msg103357 date=1110570726]That is false since you support the new logon system when the value is 2.  Diablo II and Starcraft (with their expansions) both support the use of the new logon system when this value is set to 1.
[/quote]If I remember using BNLS correctly, I had to set the NLS revision if this value was not equal to 1, or I would be unable to login.  Now, having never seen a logon type of 1 "in the wild", I don't know for sure if I would be able to log on or not, because I don't know what, if any, differences there are (or if any differences are in operations like upgrading accounts).  But based on what I knew about BNLS, I decided to have it fail gracefully.

If someone could elaborate on the differences, or say whether the differences are known, etc., it'd be appreciated.
[/quote]

As far as I know, the only difference is non-war3 clients support upgrading accounts.  Could be used maybe to determine the method used to hash the CDKey values.  War3 must receive a 2 for this value, and it uses a 'regular' SHA for the hash, while other clients use the 'broken' one.  1 could be used to tell the client to use the new logon system, but still use the older cdkey hashing method, while 2 is use the new logon system, but use the new cdkey hashing method. /shrug, my post is sounding redundant
March 11, 2005, 9:29 PM
Stealth
[quote author=-MichaeL- link=topic=10885.msg103356#msg103356 date=1110570687]
I get a runtime error 49 bad DLL calling for this line.
    mpqNumber = extractMPQNumber(P.GetString())
when testing the sample.
[/quote]

Make sure you're using version 0.2.3 of bncsutil.dll.
March 12, 2005, 3:59 AM
Archangel
In bncsutil_checkVersion() Function
Line: Check = bncsutil_getVersion()
Should be: Req = bncsutil_getVersion()
March 12, 2005, 4:25 AM
Archangel
I like BNCSUtil but like giving an example bot loading all clients for users that didnt know how to use library will just make a alot of people edit that source and there wont be any effort on bot development.
March 12, 2005, 7:18 PM
iago
There's still effort in bot development? I had no idea!
March 12, 2005, 7:48 PM
UserLoser.
[quote author=Archangel link=topic=10885.msg103502#msg103502 date=1110655131]
I like BNCSUtil but like giving an example bot loading all clients for users that didnt know how to use library will just make a alot of people edit that source and there wont be any effort on bot development.
[/quote]

I agree.
[me=UserLoser]points at CSB[/me]
March 12, 2005, 7:48 PM
shadypalm88
[quote author=Archangel link=topic=10885.msg103502#msg103502 date=1110655131]
I like BNCSUtil but like giving an example bot loading all clients for users that didnt know how to use library will just make a alot of people edit that source and there wont be any effort on bot development.
[/quote]Which is their right; the code is in the public domain.

The point of this example bot is just that: to be an example.  People are free to use that example to whatever extent they'd like.  If you think about it, that stage of connecting will be functionally identical in all bots.  What effort is there left to do there?
March 12, 2005, 7:50 PM
NetNX
CSB wasnt really all that bad.... ok maybe it was :-/ but the way valhallalegends forums was bombarded with questions like "OMG CSB HOW !?^!@!%!@%$ I DONT UDNERSTAND...LOL!L!" i think that we should have just made a big sign that said"QUESTIONS REGUARDING CSB CLICK HERE" probally would have saved us from alot of mental trama of having to link newbies to the faq. :-/

Note: when i say big i mean like 640x400 saying "CSB QUESTIONS CLICK HERE" and make it flashing so maybe 1 newb might see it and save us 1 more set of retard questions and one more repeat tread

Eric seems to have his library pretty well taken care of i mean i could see more documentation coming to his site in the future but for now and the amount of people who know bout it he should be fine :-/
March 13, 2005, 2:17 PM
Kp
By nature, the idiots who need to read the FAQ will consider themselves to be above it and will not read it.  Thus, it's much more time efficient just to delete their posts until they get the hint.  The community can help out by not answering such questions.
March 13, 2005, 3:32 PM
NetNX
That could also work

KP you really hate csb dont you? :)
March 13, 2005, 3:58 PM
iago
[quote author=NetNX link=topic=10885.msg103623#msg103623 date=1110729486]
That could also work

KP you really hate csb dont you? :)
[/quote]

He hates it at least as much as me; possibly more!

That quote from his signature was in a conversation between me and him :)
March 13, 2005, 5:41 PM
Networks
What difference dose it make there's so much open source everyone can easily copy and paste without even touching another key to make the connect...If we want bot development to progress may at least provide source stolen bots with better logon sequences so they at least work good. It's better to have a nicely well done connection for a stolen bot than a shitty one...IMO.

It's been released, deal with it, we can't magically make it disappear now.
March 13, 2005, 5:56 PM
Soul Taker
[quote author=Networks link=topic=10885.msg103625#msg103625 date=1110736574]
It's been released, deal with it, we can't magically make it disappear now.
[/quote]
What the hell are you talking about?  iago is glad his code was released in this form and helping people...
March 13, 2005, 7:38 PM
KkBlazekK
Read the original post about BNCSUtil.
March 13, 2005, 7:49 PM
Networks
[quote author=Soul Taker link=topic=10885.msg103641#msg103641 date=1110742724]
[quote author=Networks link=topic=10885.msg103625#msg103625 date=1110736574]
It's been released, deal with it, we can't magically make it disappear now.
[/quote]
What the hell are you talking about?  iago is glad his code was released in this form and helping people...
[/quote]

I am referring to the example bot released by ShadyPalm88.
March 13, 2005, 8:12 PM
iago
His code is based on mine which is based on Maddox's (with the help of Telos, TheMinistered, and myself).  I'm happy to see the bot released, like he said, and so is shadypalm.  But everybody who worked on it was an integral part of making this happen.

The way I see it, having an opensource bot can cause 2 things:
1. Somebody looks at the code, learns from it, uses what they needs, and builds a good bot.  Everybody's better off.
2. Somebody "steals" it, uses the exact code, and doesn't understand what they're doing.  They make a crappy bot, and maybe they're happy with their accomplishment.  Do you really think that guy would have bothered to learn to write a good bot in the first place? I doubt it.  But if anybody's lost out, it's them, not the person who wrote it.

March 13, 2005, 8:16 PM
shadypalm88
[quote author=iago link=topic=10885.msg103654#msg103654 date=1110745002]The way I see it, having an opensource bot can cause 2 things:
1. Somebody looks at the code, learns from it, uses what they needs, and builds a good bot.  Everybody's better off.
2. Somebody "steals" it, uses the exact code, and doesn't understand what they're doing.  They make a crappy bot, and maybe they're happy with their accomplishment.  Do you really think that guy would have bothered to learn to write a good bot in the first place? I doubt it.  But if anybody's lost out, it's them, not the person who wrote it.[/quote]My thoughts exactly.  And this example doesn't enter chat, so at least someone would have to learn how to combine two rip-offs. ;)

Oh, and by the way, on Battle.Net (East) I go by Cloaked.
March 13, 2005, 9:26 PM
Quarantine
The example isn't too bad and it IS well commented so I see no problem here.
March 13, 2005, 9:43 PM
Kp
[quote author=iago link=topic=10885.msg103654#msg103654 date=1110745002]2. Somebody "steals" it, uses the exact code, and doesn't understand what they're doing.  They make a crappy bot, and maybe they're happy with their accomplishment.  Do you really think that guy would have bothered to learn to write a good bot in the first place? I doubt it.  But if anybody's lost out, it's them, not the person who wrote it.[/quote]

The only time this case bothers me is when said thief is determined to use the code, but isn't competent to do so.  So he ends up pestering the original author, or even completely unrelated people, for help.

NetNX: CSB is an interesting idea, but the implementation is very flawed.  It can't be easily used from non-COM-friendly languages, which makes it nearly useless to the people who have the sense not to use VB.  As such, it's at best useless to the community and at worst a burden for the idiots that try to make a bot with it, then come to us for basic VB help because they can't figure out how to use a listbox (or editbox or ...).
March 13, 2005, 11:24 PM
iago
[quote author=Kp link=topic=10885.msg103695#msg103695 date=1110756251]
The only time this case bothers me is when said thief is determined to use the code, but isn't competent to do so.  So he ends up pestering the original author, or even completely unrelated people, for help.
[/quote]

I thought of that, but didn't want to mention it because it hurts my point :P

I guess all I can say is that, generally, they find little or no help, and are eventually forced to give up or take the high(er) road.
March 14, 2005, 5:05 AM
UserLoser.
[quote author=Kp link=topic=10885.msg103695#msg103695 date=1110756251]
The only time this case bothers me is when said thief is determined to use the code, but isn't competent to do so.  So he ends up pestering the original author, or even completely unrelated people, for help.
[/quote]

Things like that are annoying.  For example, CSB, everyone on this forum are pretty much unrelated people :P.

Also other situations like the one that occurred a few minutes ago.  I take the time out to translate this function from C++ to VB for this one guy to use in his bot, then he asks how to use it.  I explain it to him, and he tells me he gets errors.  He shows the code, and I say he needs to allocate memory for the return buffer, he asks how, *sigh*
March 14, 2005, 5:22 AM
Soul Taker
Nice, UL.  What function?

Anyway, tonight I decided to download this example program and see if I could develop a simple application that would log on and enter chat with all hardcoded login information, just to see how difficult the demo is.  I only ran into one small error because I missed one of the functions that needed to be called in the demo source; an error that took all of three minutes to spot and fix.  Other than that, every function and packet worked perfectly on the first try.

So, in my opinion, if someone can't figure this demo out on their own, they really shouldn't be getting help.  It's really easy.
March 14, 2005, 5:26 AM
UserLoser.
[quote author=Soul Taker link=topic=10885.msg103744#msg103744 date=1110777982]
Nice, UL.  What function?
[/quote]

http://dmbot.valhallalegends.com/encdec.txt
March 14, 2005, 5:35 AM
Soul Taker
[quote author=UserLoser link=topic=10885.msg103749#msg103749 date=1110778559]
[quote author=Soul Taker link=topic=10885.msg103744#msg103744 date=1110777982]
Nice, UL.  What function?
[/quote]

http://dmbot.valhallalegends.com/encdec.txt
[/quote]
Wasn't this converted to VB forever ago?
March 14, 2005, 6:05 AM
Networks
What cloaked should have done is just provide only the functions instead of providing a full connecting bot, at least the source stealer would have at least had to struggle before actually getting it to connect fully on to battle.net. I know it wouldn't have made that big of a difference but still.
March 14, 2005, 3:46 PM
Soul Taker
[quote author=Networks link=topic=10885.msg103625#msg103625 date=1110736574]
It's been released, deal with it, we can't magically make it disappear now.
[/quote]
March 14, 2005, 6:06 PM
Quarantine
Yet I still had people AIM me asking me why 0x0C wouldn't work and how to make it work. *sigh*
March 14, 2005, 8:15 PM
iago
[quote author=Warrior link=topic=10885.msg103821#msg103821 date=1110831357]
Yet I still had people AIM me asking me why 0x0C wouldn't work and how to make it work. *sigh*
[/quote]

And I assume that you were born knowing?

The best bet for this isn't to give them the answer, but the means to find the answer.  I recommend a packet logger :)
March 14, 2005, 8:45 PM
NetNX
[quote author=iago link=topic=10885.msg103825#msg103825 date=1110833126]
[quote author=Warrior link=topic=10885.msg103821#msg103821 date=1110831357]
Yet I still had people AIM me asking me why 0x0C wouldn't work and how to make it work. *sigh*
[/quote]

And I assume that you were born knowing?

The best bet for this isn't to give them the answer, but the means to find the answer.  I recommend a packet logger :)
[/quote]
Or bnetdocs (helps me alot more then a packetlogger <3 ARTA)
March 16, 2005, 3:23 PM
Quarantine
Well actually, looks more like them taking the whole bot, it not logging on and them asking me how to make it work. Sorry if you misinterpreted, iago.
March 20, 2005, 5:12 PM
shadypalm88
[quote author=Warrior link=topic=10885.msg104696#msg104696 date=1111338737]
Well actually, looks more like them taking the whole bot, it not logging on and them asking me how to make it work. Sorry if you misinterpreted, iago.
[/quote]That's probably my fault, since the example bot has a "Home Channel" field on it (force of habit) but never actually uses the value.
March 20, 2005, 9:27 PM

Search