Valhalla Legends Forums Archive | Battle.net Bot Development | Warcraft3 0x50 help

AuthorMessageTime
TriCk
I need help with this packet, it keeps on disconnecting me and i dont know where ive gone wrong=/

m_Key = cdkey

[code]
Case &H50

HashCommand = Mid(Data, 38, Len(Data) - 2)
MPQName = Mid(Data, InStr(1, Data, "IX86ver"), Len(Data))
MPQName = Mid(MPQName, 1, 12)
SERVERS = Val("&h" & StrToHex(StrReverse(Mid(Data, 9, 4))))

Dim vHashes As String
vHashes = App.Path & "\WAR3\"

EXEINFO = Space(256)
Result = Z(vHashes & "War3.exe", vHashes & "Storm.dll", vHashes & "Game.dll", HashCommand, version, CHECKSUM, EXEINFO, MPQName)
If Result = Space(256) Then
Form1.Label3.Caption = "Hashes missing!"
Form1.sck1.Close
Exit Sub
End If
Dim CLIENTKEY As Long
Dim lngProdID3 As Long
Dim lngValue3 As Long
Dim strKeyHash As String
Dim dblKey As Long
EXEINFO = KillNull(EXEINFO)
CLIENTKEY = GetTickCount()
Call DecodeHashCDKey(m_Key, CLIENTKEY, SERVERS, _
lngProdID3, lngValue3, strKeyHash)
InsertDWORD CLIENTKEY
InsertDWORD version
InsertDWORD CHECKSUM
InsertDWORD &H1
InsertDWORD &H0
InsertDWORD Len(m_Key)
InsertDWORD lngProdID3
InsertDWORD lngValue3
InsertDWORD &H0
InsertNonNTString strKeyHash
InsertNTString EXEINFO
InsertNTString "WAR3TEST"
SendPacket &H51

[/code]

Thanks,
PS: This is the first time i've written WAR3 hash :-X
September 15, 2004, 3:56 AM
BaDDBLooD
I Suggest that you don't ask for help relating this.

BTW: You should use Copy Memory to remove your "Servers" Variable.

EDIT:

[quote]

PS: This is the first time i've written WAR3 hash

[/quote]

OffTopic: Does that remind anyone else of gosugaming besides me?
September 15, 2004, 4:15 AM
TangoFour
[quote]SendPacket &H51[/quote]

It would seem you need help with 0x51 rather than 0x50
September 15, 2004, 7:28 AM
LordNevar
I think a packet log is in order so you know exactly what to do ;)
September 15, 2004, 8:59 AM
TriCk
mmm so can anyone tell me why im getting ipbanned, rather than burning me and changing the subject..
PS: where do i get a decent packetlogger =/, one i have now is shit...
September 15, 2004, 12:12 PM
LordNevar
I didn't burn you, I merely pointed out that packet logging would help you. Try WPEPro, or Ethereal.
September 15, 2004, 12:27 PM
SNiFFeR
Still dont understand why exactly you're sending packet 0x51 when you're creating the packet 0x50.
September 15, 2004, 12:49 PM
iago
Can you please show us your "Call DecodeHashCDKey" function that probably took you days of hard work to figure out? Or are you just using the one that was stolen from the original authors?

Thanks!
September 15, 2004, 5:05 PM
Soul Taker
[quote author=SNiFFeR link=board=17;threadid=8685;start=0#msg80239 date=1095252557]
Still dont understand why exactly you're sending packet 0x51 when you're creating the packet 0x50.
[/quote]
0x50 has nothing to do with anything other than the topic having a typo.
September 15, 2004, 6:45 PM
LordNevar
Actually it does, he constructed packet 0x50, but he is sending 0x51. Maybe you should actually look over the code, it's not a typo. If you examine the code you will see what were talking about.
September 15, 2004, 7:05 PM
Soul Taker
[quote author=TriCk link=board=17;threadid=8685;start=0#msg80216 date=1095220592]
[code]
InsertDWORD CLIENTKEY
InsertDWORD version
InsertDWORD CHECKSUM
InsertDWORD &H1
InsertDWORD &H0
InsertDWORD Len(m_Key)
InsertDWORD lngProdID3
InsertDWORD lngValue3
InsertDWORD &H0
InsertNonNTString strKeyHash
InsertNTString EXEINFO
InsertNTString "WAR3TEST"
SendPacket &H51
[/code]
[/quote]
[code]
SID_AUTH_CHECK (0x51)
---------------------

(DWORD) Client session key.*
(DWORD) Version.**
(DWORD) Checksum.**
(DWORD) Amount of CD-keys. This is typically 2 for Lord of Destruction, 1 otherwise.***
(BOOL) TRUE for spawn (Starcraft, Japan Starcraft and Warcraft 2 only), FALSE for normal.
(9 DWORDs) CD-key data.*
(Optional 9 DWORDs) CD-key data for second CD-key, if using Lord of Destruction.***
(String) Version check stat string.**
(String) CD-key owner name.
[/code]
I'm sure I have to be missing something here, it looks like 0x51 to me. Help me out :-\
September 15, 2004, 7:27 PM
Soul Taker
[quote author=LordNevar link=board=17;threadid=8685;start=0#msg80281 date=1095277570]
[quote author=TriCk link=board=17;threadid=8685;start=0#msg80216 date=1095220592]
I need help with this packet, it keeps on disconnecting me and i dont know where ive gone wrong=/

m_Key = cdkey

[code]
Case &H50 <~~~~~~Looks Like 0x50 to me.

HashCommand = Mid(Data, 38, Len(Data) - 2)
MPQName = Mid(Data, InStr(1, Data, "IX86ver"), Len(Data))
MPQName = Mid(MPQName, 1, 12)
SERVERS = Val("&h" & StrToHex(StrReverse(Mid(Data, 9, 4))))

Dim vHashes As String
vHashes = App.Path & "\WAR3\"

EXEINFO = Space(256)
Result = Z(vHashes & "War3.exe", vHashes & "Storm.dll", vHashes & "Game.dll", HashCommand, version, CHECKSUM, EXEINFO, MPQName)
If Result = Space(256) Then
Form1.Label3.Caption = "Hashes missing!"
Form1.sck1.Close
Exit Sub
End If
Dim CLIENTKEY As Long
Dim lngProdID3 As Long
Dim lngValue3 As Long
Dim strKeyHash As String
Dim dblKey As Long
EXEINFO = KillNull(EXEINFO)
CLIENTKEY = GetTickCount()
Call DecodeHashCDKey(m_Key, CLIENTKEY, SERVERS, _
lngProdID3, lngValue3, strKeyHash)
InsertDWORD CLIENTKEY
InsertDWORD version
InsertDWORD CHECKSUM
InsertDWORD &H1
InsertDWORD &H0
InsertDWORD Len(m_Key)
InsertDWORD lngProdID3
InsertDWORD lngValue3
InsertDWORD &H0
InsertNonNTString strKeyHash
InsertNTString EXEINFO
InsertNTString "WAR3TEST"
SendPacket &H51 <~~~But yet he's sending 0x51

[/code]

Thanks,
PS: This is the first time i've written WAR3 hash :-X
[/quote]

I might be wrong but I'm pretty sure I'm right. If your sending 0x51 it's usually the right thing to do to build 0x51 , not build 0x50 and try to send 0x51.
[/quote]
"Case &H50" is most likely checking if a recieved packet is 0x50, in which case you would likely respond with 0x51, no?
September 15, 2004, 7:47 PM
LordNevar
[code]
Case &H50 <~~~Built as 0x50

HashCommand = Mid(Data, 38, Len(Data) - 2)
MPQName = Mid(Data, InStr(1, Data, "IX86ver"), Len(Data))
MPQName = Mid(MPQName, 1, 12)
SERVERS = Val("&h" & StrToHex(StrReverse(Mid(Data, 9, 4))))

Dim vHashes As String
vHashes = App.Path & "\WAR3\"

EXEINFO = Space(256)
Result = Z(vHashes & "War3.exe", vHashes & "Storm.dll", vHashes & "Game.dll", HashCommand, version, CHECKSUM, EXEINFO, MPQName)
If Result = Space(256) Then
Form1.Label3.Caption = "Hashes missing!"
Form1.sck1.Close
Exit Sub
End If
Dim CLIENTKEY As Long
Dim lngProdID3 As Long
Dim lngValue3 As Long
Dim strKeyHash As String
Dim dblKey As Long
EXEINFO = KillNull(EXEINFO)
CLIENTKEY = GetTickCount()
Call DecodeHashCDKey(m_Key, CLIENTKEY, SERVERS, _
lngProdID3, lngValue3, strKeyHash)
InsertDWORD CLIENTKEY
InsertDWORD version
InsertDWORD CHECKSUM
InsertDWORD &H1
InsertDWORD &H0
InsertDWORD Len(m_Key)
InsertDWORD lngProdID3
InsertDWORD lngValue3
InsertDWORD &H0
InsertNonNTString strKeyHash
InsertNTString EXEINFO
InsertNTString "WAR3TEST"
SendPacket &H51 <~~~~Sent as 0x51

[/code]

I'm pretty sure I'm right but if you build 0x50 your suppose to send 0x50, not build 0x50 when that's wrong in the first place, and than send 0x51.
September 15, 2004, 7:48 PM
LordNevar
Stupid comp, screen messed up .
September 15, 2004, 7:48 PM
kamakazie
That "Case &H50" is probably from his packet handler which looks to handle SID_AUTH_INFO and create SID_AUTH_CHECK (the next part of the authentication sequence). Probably would be better to create another function to create SID_AUTH_CHECK. The packet he asked us to help him with is SID_AUTH_CHECK.
September 15, 2004, 7:50 PM
LordNevar
We were merely pointing out that he was replying wrong.
September 15, 2004, 8:00 PM
kamakazie
[quote author=LordNevar link=board=17;threadid=8685;start=15#msg80288 date=1095278416]
We were merely pointing out that he was replying wrong.
[/quote]

LordNevar, you're wrong. He's not building 0x50 (SID_AUTH_INFO), but he is parsing it. He is then creating 0x51 (SID_AUTH_CHECK). So 0x50 has nothing to do with helping him.
September 15, 2004, 8:05 PM
Soul Taker
[quote author=dxoigmn link=board=17;threadid=8685;start=15#msg80290 date=1095278705]
[quote author=LordNevar link=board=17;threadid=8685;start=15#msg80288 date=1095278416]
We were merely pointing out that he was replying wrong.
[/quote]

LordNevar, you're wrong. He's not building 0x50 (SID_AUTH_INFO), but he is parsing it. He is then creating 0x51 (SID_AUTH_CHECK). So 0x50 has nothing to do with helping him.
[/quote]
I dunno, doesn't "Case &H50" build a whole packet, and then ignore everything after it? ::)
September 15, 2004, 8:20 PM
kamakazie
[quote author=Soul Taker link=board=17;threadid=8685;start=15#msg80292 date=1095279623]
I dunno, doesn't "Case &H50" build a whole packet, and then ignore everything after it? ::)
[/quote]

What does a Select Case have anything to do with building a packet? Case &H50 is his handler for SID_AUTH_INFO received from the server. So his "response" (not really a response because it is just the next step in authentication) is to send 0x51 (SID_AUTH_INFO). It seems your guys' understand of Visual Basic is soley limited to making bots.
September 15, 2004, 8:32 PM
BaDDBLooD
[quote author=dxoigmn link=board=17;threadid=8685;start=15#msg80299 date=1095280357]
[quote author=Soul Taker link=board=17;threadid=8685;start=15#msg80292 date=1095279623]
I dunno, doesn't "Case &H50" build a whole packet, and then ignore everything after it? ::)
[/quote]

What does a Select Case have anything to do with building a packet? Case &H50 is his handler for SID_AUTH_INFO received from the server. So his "response" (not really a response because it is just the next step in authentication) is to send 0x51 (SID_AUTH_INFO). It seems your guys' understand of Visual Basic is soley limited to making bots.
[/quote]

This is the [size=10]Bot Development Forum[/size]
September 15, 2004, 8:34 PM
Soul Taker
[quote author=dxoigmn link=board=17;threadid=8685;start=15#msg80299 date=1095280357]
[quote author=Soul Taker link=board=17;threadid=8685;start=15#msg80292 date=1095279623]
I dunno, doesn't "Case &H50" build a whole packet, and then ignore everything after it? ::)
[/quote]

What does a Select Case have anything to do with building a packet? Case &H50 is his handler for SID_AUTH_INFO received from the server. So his "response" (not really a response because it is just the next step in authentication) is to send 0x51 (SID_AUTH_INFO). It seems your guys' understand of Visual Basic is soley limited to making bots.
[/quote]
Uh, please note I'm the one he was initially arguing with, and I had a rolling-eyes smiley at the end of my very sarcastic post.
September 15, 2004, 8:43 PM
LordNevar
Let me put this in english.

If you build 0x50 which would be Case &H50, than you would put all the info your parsed for 0x50 inside that case, and at the end of that case you would send 0x50. Not 0x51, considering you haven't technically built it if you named it 0x50, and besides 0x50 has nothing to do with WC3 hash and cdkey decoding.
September 15, 2004, 9:07 PM
LordNevar
Here some visual help if needed compliments of VialChat source.

[code]
Case &H50
With pbuffer
.InsertDWORD &H0
.InsertNonNTString "68XI" & varProd
.InsertDWORD getverbyte()
.InsertDWORD &H0
.InsertDWORD &H0
.InsertDWORD &H480
.InsertDWORD &H1033
.InsertDWORD &H1033
.InsertNTString "USA"
.InsertNTString "United States"
.SendPacket &H50
End With
[/code]

This is what a basic 0x50 looks like, notice it's case is &H50, and at the end he is sending 0x50.

Modified - fix sub to it's case.
September 15, 2004, 9:11 PM
Soul Taker
Go back to Blizzhackers
September 15, 2004, 9:14 PM
kamakazie
[quote author=Soul Taker link=board=17;threadid=8685;start=15#msg80302 date=1095280991]
Uh, please note I'm the one he was initially arguing with, and I had a rolling-eyes smiley at the end of my very sarcastic post.
[/quote]

Sorry about that, didn't catch the sarcasm. I did think your post was a little odd but you can never know on this forum and a certain other forum.

Edit:
What's your point BaDDBLooD?
September 15, 2004, 10:34 PM
LivedKrad
[quote author=LordNevar link=board=17;threadid=8685;start=15#msg80305 date=1095282469]
Let me put this in english.

If you build 0x50 which would be Case &H50, than you would put all the info your parsed for 0x50 inside that case, and at the end of that case you would send 0x50. Not 0x51, considering you haven't technically built it if you named it 0x50, and besides 0x50 has nothing to do with WC3 hash and cdkey decoding.
[/quote]

English or not, you're wrong. What you seem to be lacking here is the ability to recognize a control flow statement. In this example, he is checking something to see if 0x50 is present. No where is he building some sort of packet structure to then send 0x50, merely checking if it exists.
September 15, 2004, 10:41 PM
Soul Taker
[quote author=dxoigmn link=board=17;threadid=8685;start=15#msg80315 date=1095287686]
[quote author=Soul Taker link=board=17;threadid=8685;start=15#msg80302 date=1095280991]
Uh, please note I'm the one he was initially arguing with, and I had a rolling-eyes smiley at the end of my very sarcastic post.
[/quote]

Sorry about that, didn't catch the sarcasm. I did think your post was a little odd but you can never know on this forum and a certain other forum.
[/quote]
Hehe, I know, at least someone else backed me up in here!
September 16, 2004, 1:23 AM
BaDDBLooD
i meant

[quote]

It seems your guys' understand of Visual Basic is soley limited to making bots.

[/quote]
September 16, 2004, 3:22 AM
CodeMaster
It's obvious you are trying to connect to Battle.net using Warcraft III hash code might I add that was stolen, therefore you will never receive help on this topic unless any of the authors decide to be nice. Unless somebody releases a source, I doubt you will see any examples of how to fix your code.

This is another example of I found this code and can't make it work help me.

If you want to learn the means of the SRP Authentication by all means check out here and here

If you actually apply yourself, you'll realize that it's not really that complicated, just be happy you didn't have to do the reversing like the authors of the code did.
September 16, 2004, 3:46 AM
iago
Yes, Mr. CodeMeister. Thank you.

Go back and read my post, to anybody who didn't see it, it got buried.
September 16, 2004, 3:52 AM
UserLoser.
Or perhaps people should learn that open source projects like these
(Battle.net binary bots, in this case) are stupid, public stuff sucks, ect. They just bring more people to come and bug others for help on some things, ask redundant questions, beg for help on stuff that they have no idea how it works, or exactly what it's doing because it's all stolen (ok, not stolen, taken perhaps, because some person will reply and say it's public, so therefore it's not stolen).
September 16, 2004, 7:00 PM
Networks
I have a question regarding this entire WAR3 hashing thing. What is public? What can we use (so that we aren't excessively flamed)? If it's not public but it's out there are allowed to use it? If we do take something what amount of credit (or to whom) should be given? I'd like this to come from those that contributed to (open source?) hashing functions for war3 or whatever made this possible. I am really curious to know.

Edit: (You may have gone over this. I am to lazy to search. Post it again if so.)
September 16, 2004, 10:05 PM
CodeMaster
[quote author=Networks link=board=17;threadid=8685;start=30#msg80433 date=1095372320]
I have a question regarding this entire WAR3 hashing thing. What is public? What can we use (so that we aren't excessively flamed)? If it's not public but it's out there are allowed to use it? If we do take something what amount of credit (or to whom) should be given? I'd like this to come from those that contributed to (open source?) hashing functions for war3 or whatever made this possible. I am really curious to know.

Edit: (You may have gone over this. I am to lazy to search. Post it again if so.)
[/quote]

Maddox, Userloser, iago, sneakcharm, Telos, TheMinistered.
All did alot of work to get this to work. It really sucks that TheMinistered left RealVNC open when he went on vacation and got jacked up. To show your respect you should not use the DLL's. However like I said in an earlier post, it would be acceptable to use iago's code open source version of SRP. here and here

Of course, knowing that most people who do BNET programming only program in VB and will never bother to learn to enough to port it over, it's hard to believe anybody will obey this rule. Which is simply why no support is given for this stolen code.
September 16, 2004, 11:19 PM
iago
Mr. Master is correct. The only public code at this point is the Java version, which you can find in a sticky post on my thread. If you want to do it in any othe langugae, you're either using BNLS or stolen code.
September 17, 2004, 3:47 AM
BaDDBLooD
[quote author=CodeMaster link=board=17;threadid=8685;start=30#msg80443 date=1095376760]
[quote author=Networks link=board=17;threadid=8685;start=30#msg80433 date=1095372320]
I have a question regarding this entire WAR3 hashing thing. What is public? What can we use (so that we aren't excessively flamed)? If it's not public but it's out there are allowed to use it? If we do take something what amount of credit (or to whom) should be given? I'd like this to come from those that contributed to (open source?) hashing functions for war3 or whatever made this possible. I am really curious to know.

Edit: (You may have gone over this. I am to lazy to search. Post it again if so.)
[/quote]

Maddox, Userloser, iago, sneakcharm, Telos, TheMinistered.
All did alot of work to get this to work. It really sucks that TheMinistered left RealVNC open when he went on vacation and got jacked up. To show your respect you should not use the DLL's. However like I said in an earlier post, it would be acceptable to use iago's code open source version of SRP. here and here

Of course, knowing that most people who do BNET programming only program in VB and will never bother to learn to enough to port it over, it's hard to believe anybody will obey this rule. Which is simply why no support is given for this stolen code.
[/quote]

There is someone who is porting the java code into c++ code, he will remain nameless.
September 17, 2004, 4:03 AM
CodeMaster
[quote author=BaDDBLooD link=board=17;threadid=8685;start=30#msg80499 date=1095393824]
There is someone who is porting the java code into c++ code, he will remain nameless.
[/quote]

Wow, that is totally unheard of, let us reward this unnamed warrior of the night with bells and ribbons and an extra large pepperoni pizza. For this I am sure could not be done by anybody else.

Anyways, what I am trying to say is, good for him. But if he makes API's and writes functions make sure he answers questions himself instead of getting people to come here and bitch.
September 17, 2004, 4:51 AM
iago
[quote author=BaDDBLooD link=board=17;threadid=8685;start=30#msg80499 date=1095393824]
[quote author=CodeMaster link=board=17;threadid=8685;start=30#msg80443 date=1095376760]
[quote author=Networks link=board=17;threadid=8685;start=30#msg80433 date=1095372320]
I have a question regarding this entire WAR3 hashing thing. What is public? What can we use (so that we aren't excessively flamed)? If it's not public but it's out there are allowed to use it? If we do take something what amount of credit (or to whom) should be given? I'd like this to come from those that contributed to (open source?) hashing functions for war3 or whatever made this possible. I am really curious to know.

Edit: (You may have gone over this. I am to lazy to search. Post it again if so.)
[/quote]

Maddox, Userloser, iago, sneakcharm, Telos, TheMinistered.
All did alot of work to get this to work. It really sucks that TheMinistered left RealVNC open when he went on vacation and got jacked up. To show your respect you should not use the DLL's. However like I said in an earlier post, it would be acceptable to use iago's code open source version of SRP. here and here

Of course, knowing that most people who do BNET programming only program in VB and will never bother to learn to enough to port it over, it's hard to believe anybody will obey this rule. Which is simply why no support is given for this stolen code.
[/quote]

There is someone who is porting the java code into c++ code, he will remain nameless.
[/quote]

You mean Stealth? Or is there somebody else now?
September 17, 2004, 12:26 PM
Networks
Stealth knows C++?
September 17, 2004, 4:51 PM
Stealth
[quote author=Networks link=board=17;threadid=8685;start=30#msg80562 date=1095439873]
Stealth knows C++?
[/quote]

I began porting it to VB. Slim free time and the lack of a BigInteger class and/or time to duplicate it have prevented me from getting very far.

I've just started an independent study in C++ with my programming teacher from VB-based Intro to Programming and Java-based AP Comp Sci. Even though we had enough people willing to take it, the principal at our school canned our proposal for an "Advanced Programming Concepts" class to be in C++, so in response several students are doing Independent Studies.

It might even just be easier to port it to C++ and spin it off into a DLL, but I'm of course nowhere near that level of C++ skill yet. =)
September 18, 2004, 6:37 AM
Laff
i'm trying to port the java into c++ but i'm running into trouble with finding the equivalent way to do messagedigest.update. i'm looking into the classes right now. if anyone can help, i'd appreciate it.
September 18, 2004, 5:41 PM
iago
[quote author=Laff link=board=17;threadid=8685;start=30#msg80738 date=1095529264]
i'm trying to port the java into c++ but i'm running into trouble with finding the equivalent way to do messagedigest.update. i'm looking into the classes right now. if anyone can help, i'd appreciate it.
[/quote]

It's standard SHA-1.
September 18, 2004, 9:24 PM
K
[quote author=Laff link=board=17;threadid=8685;start=30#msg80738 date=1095529264]
i'm trying to port the java into c++ but i'm running into trouble with finding the equivalent way to do messagedigest.update. i'm looking into the classes right now. if anyone can help, i'd appreciate it.
[/quote]

Microsoft's crypto api has a sha1 implementation.

You'll probably need to use CryptCreateHash, CryptHashData, CryptDestroyHash, and maybe more.
September 19, 2004, 9:40 PM
Laff
well right now i dug up the c# version someone posted (was it you k?) and got the objects to load in c++...i just don't know how to use the methods of the class as of yet. haven't done any crypto at all so it's gonna be a fat challenge.
September 19, 2004, 10:28 PM

Search