Valhalla Legends Forums Archive | Battle.net Bot Development | Critque Me Please

AuthorMessageTime
Ryan Marcus
I am a intermediate/advance REALbasic (similar to Visual Basic, but cross-platform) with a beginning knowledge of TCP/IP.

I got into Starcraft about 4 years ago, and have been playing avidly since (Blizzard injects crack though the mouse, or something...)

I worked for a while with iago on JavaOp, and decided to take a crack at it myself (although I will still be writing plugins for JavaOp).

I downloaded a few examples, converted them from VB to RB, and took a look. I quickly figured out it was going to be harder then it looks, and that I needed 2 connections, BNET and BNLS, not just one.

So I checked out BnetDocs (GJ Arga) and wrote a basic BNLS socket. I am sure there is a better way to do what I am doing, so please, tell me.

DataAvailable Event:
[code]
ParseData(me.ReadAll)
// me refers to the socket
// ReadAll is the equivalent of GetData(Var, String).
[/code]

ParseData Method, Parameters data as string:
[code]
  Select Case Asc(Mid(Data, 3, 1))
  case GetPacketIDBNLS("CDKEY")
  case GetPacketIDBNLS("LOGONCHALLENGE")
  case GetPacketIDBNLS("LOGONPROOF")
  case GetPacketIDBNLS("CREATEACCOUNT")
  case GetPacketIDBNLS("CHANGECHALLENGE")
  case GetPacketIDBNLS("CHANGEPROOF")
  case GetPacketIDBNLS("UPGRADECHALLENGE")
  case GetPacketIDBNLS("UPGRADEPROOF")
  case GetPacketIDBNLS("VERSIONCHECK")
  case GetPacketIDBNLS("CONFIRMLOGON")
  case GetPacketIDBNLS("HASHDATA")
  case GetPacketIDBNLS("CDKEY_EX")
  case GetPacketIDBNLS("CHOOSENLSREVISION")
  case GetPacketIDBNLS("AUTHORIZE")
  case GetPacketIDBNLS("AUTHORIZEPROOF")
  case GetPacketIDBNLS("REQUESTVERSIONBYTE")
  case GetPacketIDBNLS("VERIFYSERVER")
  case GetPacketIDBNLS("RESERVESERVERLOTS")
  case GetPacketIDBNLS("SERVERLOGONCHALLENGE")
  case GetPacketIDBNLS("SERVERLOGONPROOF")
  end Select

// GetPacketIDBNLS returns the correct values.
[/code]


I am also working on a packet builder, but I just wanted to get that part done. Are there better ways? Am I just completely wrong?



Thanks in advance, Ryan Marcus.
August 27, 2005, 1:35 PM
hismajesty
Arga didn't do anything with BnetDocs. :)
August 27, 2005, 2:17 PM
l2k-Shadow
Just use a locally hashed connection and eliminate the use of BNLS and another socket all together.
August 27, 2005, 5:43 PM
Yegg
l2k-shadow. How can you be certain he knows enough about using the Battle.net binary files?

August 27, 2005, 8:18 PM
l2k-Shadow
[quote author=Yegg link=topic=12636.msg125727#msg125727 date=1125173924]
l2k-shadow. How can you be certain he knows enough about using the Battle.net binary files?
[/quote]

If he is making a Battle.net related program, he should have certain amount of knowledge about hash files. If he doesn't then he can download countless sources using a locally hashed connection and use a hashing library like BNCSUtil which is open source and contains a public VB example which would be easily ported over to RB. IMO hashing is easier and quicker to code than a BNLS connection.
August 28, 2005, 3:29 AM
UserLoser.
[quote author=Ryan Marcus link=topic=12636.msg125835#msg125835 date=1125271480]
Hmm.. Are you sure its not Arga? Oh well..

Somehow, I got four replies, not a single one relating to my post ;).

However, thanks for the good ideas. I will have to look into local hashing.

I thought the main reason to use BNLS was that you did not have to update your bots hashes.. or is this bogus?
[/quote]

It's Arta, not Arga.  And sorry, I don't have any input for you.
August 28, 2005, 11:30 PM

Search