Author | Message | Time |
---|---|---|
Archangel | Since, i always get the same response and i havnt programmed a bot since 05 i need some help, i know.. i have tried. Edit: Response i got "0x200: Invalid CD key" and yes its a valid cd-key. [code] Private Sub BNCS_SID_Auth_Check(lngLogonType As Long, strMPQNumber As String, lngServerToken As Long, strChecksumFormula As String) AddChat frmMain.rtbChat, vbYellow, "Sending Sid_Auth_Check (0x51)." Dim lngNewMPQNumber As Long Dim HashFiles(2) As String Dim lngChecksum As Long Dim lngEXEVersion As Long Dim lngDecoder As Long Dim strKeyHash As String Dim lngHashLength As Long Dim strExeInfo As String lngNewMPQNumber = extractMPQNumber(strMPQNumber) If (lngNewMPQNumber < 0) Then DisconnectBNCS AddChat frmMain.rtbChat, vbRed, "Unrecognized MPQ number." Exit Sub End If GetHashFiles HashFiles If (checkRevision(strChecksumFormula, HashFiles(0), HashFiles(1), _ HashFiles(2), lngNewMPQNumber, lngChecksum) = False) Then DisconnectBNCS AddChat frmMain.rtbChat, vbRed, "Error: CheckRevision failed." Exit Sub End If lngEXEVersion = getExeInfo(HashFiles(0), strExeInfo) If (lngEXEVersion = 0) Then DisconnectBNCS AddChat frmMain.rtbChat, vbRed, "Error: Failed to get executable hash file information." Exit Sub End If Dim Buffer As New clsPacketBuffer Set Buffer = New clsPacketBuffer With Buffer .iDWORD Cfg.lngClientToken 'Client token .iDWORD lngEXEVersion 'EXE Version .iDWORD lngChecksum 'EXE Hash .iDWORD &H1 'Number of keys .iDWORD &H0 'Boolean Spawn Cd-Key lngDecoder = kd_create(Cfg.strCdKey, Len(Cfg.strCdKey)) If (lngDecoder = -1) Then DisconnectBNCS AddChat frmMain.rtbChat, vbRed, "Error: Failed to decode your CD-key." Exit Sub End If lngHashLength = kd_calculateHash(lngDecoder, Cfg.lngClientToken, lngServerToken) If (lngHashLength = 0) Then DisconnectBNCS AddChat frmMain.rtbChat, vbRed, "Error: Failed to hash your CD-key." Exit Sub End If strKeyHash = String$(lngHashLength, vbNullChar) ' Initialize buffer. Call kd_getHash(lngDecoder, strKeyHash) .iDWORD Len(Cfg.strCdKey) 'Cd-Key Length .iDWORD kd_product(lngDecoder) 'Cd-Key Product Value .iDWORD kd_val1(lngDecoder) 'Cd-Key Public Value .iDWORD &H0 'Unknown (0) .iNonNTString strKeyHash 'Hashed Key Data .iNTString strExeInfo 'Exe Information .iNTString "BNCE" 'Cd-Key Owner .sPacket SID_Auth_Check 'Send SID_Auth_Info End With Set Buffer = Nothing End Sub [/code] | May 19, 2006, 3:05 AM |
Archangel | Ok, i dont know if this might help but when i send the packet strExeInfo it starts with "(null)... " and not with "Starcraft.exe... ", i don't really know if that affects in something. Here is the packet logging. [code] 4 Hide Hide 98 Send 0000 FF 51 62 00 6B 10 05 02 0B 03 01 01 C6 E5 B0 C3 .Qb.k........... 0010 01 00 00 00 00 00 00 00 0D 00 00 00 01 00 00 00 ................ 0020 43 98 58 00 00 00 00 00 EF 43 16 82 C9 DE 00 60 C.X......C.....` 0030 B9 E1 1F D6 75 67 37 E6 A9 04 43 30 28 6E 75 6C ....ug7...C0(nul 0040 6C 29 20 30 35 2F 31 39 2F 30 36 20 30 32 3A 33 l) 05/19/06 02:3 0050 32 3A 30 35 20 31 31 34 36 39 33 39 00 42 4E 43 2:05 1146939.BNC 0060 45 00 E. 5 Hide Hide 9 Recv 0000 FF 51 09 00 00 02 00 00 00 .Q....... [/code] | May 19, 2006, 6:14 AM |
PiaNKA | You may want to double check your value of HashFiles(0)--and probably the others--before passing it to checkRevision(). | May 19, 2006, 11:06 AM |
MysT_DooM | Maybe when your sending the [code] .iDWORD kd_product(lngDecoder) 'Cd-Key Product Value .iDWORD kd_val1(lngDecoder) 'Cd-Key Public Value [/code] its not getting the right values; like try doin [code] .iDWORD Mid$(kd_product(lngDecoder), 1, 2) 'product .iDWORD Mid$(kd_val1(lngDecoder), 3, 7) 'public [/code] i think that might be the problem | May 19, 2006, 1:21 PM |
warz | You may also want to note that it's not starting with a null byte. [quote] 0030 B9 E1 1F D6 75 67 37 E6 A9 04 43 30 28 6E 75 6C ....ug7...C0(nul [/quote] | May 19, 2006, 1:33 PM |
Archangel | [quote author=MysT_DooM link=topic=15013.msg152769#msg152769 date=1148044873] Maybe when your sending the [code] .iDWORD kd_product(lngDecoder) 'Cd-Key Product Value .iDWORD kd_val1(lngDecoder) 'Cd-Key Public Value [/code] its not getting the right values; like try doin [code] .iDWORD Mid$(kd_product(lngDecoder), 1, 2) 'product .iDWORD Mid$(kd_val1(lngDecoder), 3, 7) 'public [/code] i think that might be the problem [/quote] Tried is not this. [quote author=warz link=topic=15013.msg152771#msg152771 date=1148045607] You may also want to note that it's not starting with a null byte. [quote] 0030 B9 E1 1F D6 75 67 37 E6 A9 04 43 30 28 6E 75 6C ....ug7...C0(nul [/quote] [/quote] I dont understand what u mean by is not starting with a null byte? what is not starting with a null byte? ------------ [code] [13:41:37] Disconnected. [13:41:37] Connecting... [13:41:37] Connected! [13:41:37] Sending protocol byte: Game (0x01). [13:41:37] Sending Sid_Auth_Info (0x50). [13:41:38] Handeling packet: Sid_Auth_Info (0x50) [13:41:38] Sending Sid_Auth_Check (0x51). [13:41:38] MPQNumber: IX86ver3.mpq [13:41:38] ServerToken: -7284 [13:41:38] Checksum Formula: A=502971062 B=688582030 C=933114557 4 A=A^S B=B^C C=C+A A=A-B [13:41:38] NewMPQNumber: 3 [13:41:38] HashFile(0): C:\Documents and Settings\Naruto.KONOHA-48E3F658\Escritorio\DaN\Visual Basic\BNCE\STAR\Starcraft.exe [13:41:38] HashFile(1): C:\Documents and Settings\Naruto.KONOHA-48E3F658\Escritorio\DaN\Visual Basic\BNCE\STAR\Storm.dll [13:41:38] HashFile(2): C:\Documents and Settings\Naruto.KONOHA-48E3F658\Escritorio\DaN\Visual Basic\BNCE\STAR\Battle.snp [13:41:38] Checksum: -2099924186 [13:41:38] ExeVersion: 16843531 [13:41:38] ExeInfo: (null) 05/19/06 02:32:05 1146939 [13:41:38] Decoder: 0 [13:41:38] Hash Length: 20 [/code] | May 19, 2006, 6:27 PM |
Ringo | [quote author=Archangel link=topic=15013.msg152793#msg152793 date=1148063235] [13:41:38] ServerToken: -7284 [/quote] hi, that seems abit small for an average server token, could you be reading it as a WORD rather than a DWORD? | May 19, 2006, 7:05 PM |
l2k-Shadow | Seems like the function is fine, perhaps post your GetHashFiles() function and the function from which you call this so we can have a better understanding about your issues with incorrect values for the variables. | May 19, 2006, 7:25 PM |
warz | Oh, does it literally have "(null)" in the packet log / file information string, or did you put that in there telling us that it's a 0x00 byte? If it's literally in there, I think I remember while looking at the BNCSutil source code one time, it does supply a string with "(null)" in it if there's an error in one of the functions. Maybe not, though, this is just a faint memory that this thread triggered. | May 19, 2006, 7:42 PM |
Archangel | Yah im using BNCSUtil and (null) should be starcraft, here is my gethashfile funtion: [code] Public Sub GetHashFiles(Files() As String) Select Case Cfg.strProduct Case "STAR", "SEXP" Files(0) = App.Path & "\STAR\Starcraft.exe" Files(1) = App.Path & "\STAR\Storm.dll" Files(2) = App.Path & "\STAR\Battle.snp" End Select End Sub [/code] Since i cant get this done im trying to use example code to see if i can fix it, but im not doing any good. | May 19, 2006, 9:17 PM |
l2k-Shadow | Post the function from which you call BNCS_SID_Auth_Check(). | May 19, 2006, 10:32 PM |
Archangel | [quote author=l2k-Shadow link=topic=15013.msg152811#msg152811 date=1148077935] Post the function from which you call BNCS_SID_Auth_Check(). [/quote] [code] Private Sub Handle_BNCS_Sid_Auth_Info(strBuffer As clsPacketBuffer) AddChat frmMain.rtbChat, vbYellow, "Handleling packet: Sid_Auth_Info (0x50)" Dim lngLogonType As Long Dim lngServerToken As Long Dim lngUDPValue As Long 'FILETIME 8 BYTES SKIP :P Dim strMPQNumber As String Dim strChecksumFormula As String lngLogonType = strBuffer.gDWORD() lngServerToken = strBuffer.gDWORD() lngUDPValue = strBuffer.gDWORD() strBuffer.sBytes 8 strMPQNumber = strBuffer.gString() strChecksumFormula = strBuffer.gString() BNCS_SID_Auth_Check lngLogonType, strMPQNumber, lngServerToken, strChecksumFormula End Sub [/code] | May 20, 2006, 7:31 AM |
PiaNKA | First: LOL@strBuffer.gString Second: you are calling kd_init() at the beginning of your program, correct? | May 20, 2006, 2:34 PM |
Archangel | [quote author=PiaNKA link=topic=15013.msg152844#msg152844 date=1148135689] First: LOL@strBuffer.gString Second: you are calling kd_init() at the beginning of your program, correct? [/quote] im using example bot code for calling kd_init() [code] On Error GoTo Startup_Error If (kd_init() = 0) Then MsgBox "The BNCSutil CD-key decoder could not be initialized, " & _ "and the bot must close.", vbCritical, "Example Bot" End End If [/code] | May 20, 2006, 5:12 PM |
dRAgoN | [code]Public Function CheckRev(ByVal FileExe As String, ByVal FileStormDll As String, ByVal FileBnetDll As String, ByVal HashText As String, ByRef Version As Long, ByRef Checksum As Long, ByRef exeinfo As String, ByVal mpqName As String, ByVal MyClient As String) Dim MpqNumber As Long Dim CRev As Boolean MpqNumber = extractMPQNumber(mpqName) CRev = (checkRevision_Raw(HashText, FileExe, FileStormDll, FileBnetDll, MpqNumber, Checksum) > 0) Version = getExeInfo(FileExe, exeinfo) If InStr(1, exeinfo, "(null)") <> 0 Then exeinfo = Replace(exeinfo, "(null)", GetExe(MyClient)) End If Debug.Print exeinfo End Function Private Function GetExe(ByVal MyClient As String) As String Select Case MyClient Case "RATS", "PXES", "RHSS" GetExe = "Starcraft.exe" Case "VD2D", "PX2D" GetExe = "Game.exe" Case "3RAW", "PX3W" GetExe = "WAR3.exe" Case "RHSD" GetExe = "Diablo_s.exe" Case "RTSJ" GetExe = "StarcraftJ.exe" Case "LTRD" GetExe = "Diablo.exe" Case "NB3W" GetExe = "Warcraft II BNE.exe" Case "MD3W" GetExe = "War3Demo.exe" Case Else GetExe = MyClient End Select End Function[/code] here. | May 20, 2006, 5:48 PM |
Archangel | Ok, all the problem i had was in my buffer, i resovled it with the help of Pianka, i got a last question, should i take care about the (null)? | May 20, 2006, 6:28 PM |
raylu | Didn't we determine somewhere a long time ago about how that was one of the optional fields? Pianka is still online?! | May 21, 2006, 4:40 PM |
dRAgoN | [quote author=raylu link=topic=15013.msg152907#msg152907 date=1148229631] Didn't we determine somewhere a long time ago about how that was one of the optional fields? Pianka is still online?! [/quote] Believe I posted that it was optional June of 05, the exeinfo and cdkey user name is both optional. Would still rather see people do things the way the game does it but hey it is your cdkey lol. [code]Public Function p0x51(sck As Winsock, _ typ As String, _ cKey As Long, _ sKey As Long, _ CDK1 As String, _ CDK2 As String, _ Spawn As Long, _ CDKeyUsername As String, _ Version As Long, _ Checksum As Long, _ exeinfo As String) Dim pb As New clsPacketBuffer Dim NumberOfCDKeys As Long Dim CDKeyOneBuf As String Dim CDKeyTwoBuf As String Dim CDKeyHashDat As String NumberOfCDKeys = GetNumberOfKeys(typ) Select Case NumberOfCDKeys Case 0 'LTRD, RHSD, RHSS, W3DM can also use this function. Case 1 CDKeyOneBuf = DoCDKeyOne(CDK1, sKey, cKey) 'CDKEY ONE Case 2 CDKeyOneBuf = DoCDKeyOne(CDK1, sKey, cKey) 'CDKEY ONE CDKeyTwoBuf = DoCDKeyTwo(CDK2, sKey, cKey) 'CDKEY TWO Case Else 'There are no products that have more then 2 'cdkeys as of yet, But.. since the packet 'could take more then 2, possibly they might 'set up for some expansion to an expansion 'games? End Select CDKeyHashDat = CDKeyOneBuf & CDKeyTwoBuf With pb .InsertDWORD cKey .InsertDWORD Version .InsertDWORD Checksum .InsertDWORD NumberOfCDKeys .InsertDWORD Spawn .InsertNonNTString CDKeyHashDat 'W3DM, RHSS, RHSD, LTRD this field is empty, so haveing it here still wont have an effect .InsertNTString exeinfo 'Optional string <- Discovered to be Optional by me, l)ragon June 1, 2005. .InsertNTString IIf(NumberOfCDKeys > 0, CDKeyUsername, "") 'Optional string <- Discovered to be Optional by me, l)ragon June 1, 2005. .SendBuffer sck, Bnet, SID_AUTH_CHECK End With Set pb = Nothing End Function Private Function GetNumberOfKeys(typ As String) As Long Select Case typ Case "LTRD", "RHSD", "RHSS", "MD3W": GetNumberOfKeys = &H0 Case "PX2D", "PX3W": GetNumberOfKeys = &H2 Case Else: GetNumberOfKeys = &H1 End Select End Function[/code] I'm sure you can figure out rest thats missing. | May 21, 2006, 6:27 PM |