Author | Message | Time |
---|---|---|
HdxBmx27 | Well, I decided to dink around with BCNCSutil. I have been switching my bot from BnetAuth to BNCSutil one protocall at a time. The place I am stuck at is 0x54. Here is how I send 0x53, And it gets accepted by BNCS: [code]Public Sub Send0x53(Index As Integer) Dim Pointer As Long, Buff As String Pointer = nls_init(Config(Index).Username, Config(Index).Password) If Pointer = 0 Then AddChat Index, vbRed, "[BNET] Failed to initalize NLS functions in 0x53 C->S. Bot Disconnecting." Bots(Index).mnuDisconnect_Click Exit Sub End If Buff = String(32, vbNull) Call nls_get_A(Pointer, Buff) PBuffer.InsertNonNTString Buff PBuffer.InsertNTString Config(Index).Username PBuffer.SendPacket Index, &H53 nls_free Pointer End Sub[/code] I recive 0x53 back, with a status of 0x00(accepted) [code]Case &H53 Select Case .removeDWORD Case &H0 Call Send0x54(Index, .removeVOID(32), .removeVOID(32)) End Select note: I have all the others cases in there alos.[/code] the .Remove functions are from the stupied little packet remver class I made. the 2 .RemoveVOID() calls remove both the Salt and the Server Key.(respectivly) Having removed the Header, and the Status before hand. I use this Sub to send my 0x54 packet: [code]Public Sub Send0x54(Index As Integer, S As String, B As String) Dim Pointe As Long, Buf As String Pointe = nls_init(Config(Index).Username, Config(Index).Password) If Pointe = 0 Then AddChat Index, vbRed, "[BNET] Failed to initalize NLS functions in 0x54 C->S. Bot Disconnecting." Bots(Index).mnuDisconnect_Click Exit Sub End If Buf = String(20, vbNull) Call nls_get_M1(Pointe, Buf, B, S) PBuffer.InsertNonNTString Buf PBuffer.SendPacket Index, &H54 nls_free Pointe End Sub[/code] Ass you can see it passes the Salt and Server Key to the sub as strings, and then jsut passes those strings to the BNCSutil api call. Here is a packetLog of the two packets. (It has a few others in it, but you can tell witch is witch: [code]9 192.168.0.11:3268 63.241.83.13:6112 54 Send 0000 FF 2D 04 00 FF 53 32 00 A7 7B DE 9A 9B 61 29 91 .-...S2..{...a). 0010 F5 0A 5B D1 D6 62 AF B1 F4 38 7C DB 9D 3E D6 AD ..[..b...8|..>.. 0020 80 5F 2B FC 13 4B 60 16 48 64 78 45 76 69 6C 46 ._+..K`.HdxEvilF 0030 69 72 65 32 37 00 ire27. 10 63.241.83.13:6112 192.168.0.11:3268 27 Recv 0000 FF 2D 1B 00 00 64 37 BB 78 DD C4 01 69 63 6F 6E .-...d7.x...icon 0010 73 2D 57 41 52 33 2E 62 6E 69 00 s-WAR3.bni. 11 63.241.83.13:6112 192.168.0.11:3268 72 Recv 0000 FF 53 48 00 00 00 00 00 7B 13 41 1B FA 58 CA 29 .SH.....{.A..X.) 0010 B2 7D 15 74 A6 F7 6B 9D 3E E9 41 B1 56 D9 7F 9F .}.t..k.>.A.V... 0020 36 9A 2A A6 E1 79 86 37 D1 F4 46 73 8D 6A A2 40 6.*..y.7..Fs.j.@ 0030 08 A7 80 11 C3 44 78 5E 80 63 D6 D2 B2 BB 19 93 .....Dx^.c...... 0040 90 08 54 4D 8B 30 B5 50 ..TM.0.P 12 192.168.0.11:3268 63.241.83.13:6112 24 Send 0000 FF 54 18 00 A4 45 93 23 D0 69 80 2E 05 6A BD 55 .T...E.#.i...j.U 0010 02 0F E7 24 1E CC 64 C2 ...$..d. 13 63.241.83.13:6112 192.168.0.11:3268 28 Recv 0000 FF 54 1C 00 02 00 00 00 00 00 00 00 00 00 00 00 .T.............. 0010 00 00 00 00 00 00 00 00 00 00 00 00 ............[/code] Do any of you have any suggestions as to what I might be doing wrong? Oh and during doing this, I found the new Wc3 patch acually did change the VerHash. yet Bnet still allows for in accuret VerHashes.. So does that acually do anything or is it there just as an extra bit of information? (i'm still looking for a way to get the verhash in VB myself, not using a Hashing library.) So can anyone enlighten me as to my errors? (besides the fact that VB = lame, I get that a lot, so please don't do it.) ~-~(HDX)~-~ | March 9, 2005, 8:07 AM |
iago | If you're looking for information on how BNCSUtil works for War3 login packets, have a look at: http://www.javaop.com/~iago/SRP.html Or at the appropriate sections of BNetDocs. | March 9, 2005, 11:59 AM |
NetNX | Make sure you get the upgraded version :) <3 BNCSUtil if its not on the site yet msg me on aim when i get home and ill send ya it ~_^ | March 9, 2005, 3:31 PM |
HdxBmx27 | Well I'm using 0.2.3 witch is the latest. So iono. Anyone got suggestions? ~-~(HDX)~-~ | March 10, 2005, 5:29 AM |
NetNX | ive been talking to eric about an example but he seems less then enthusastic to provide one :-/ i'll beg him agian today ~_^ | March 10, 2005, 3:20 PM |
HdxBmx27 | The example that he posted 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 :) Now I have sucessuflly made my bot use ALL login types using local hashing. (Including spawns, and sharewares, and non-cdkeyed products) ~-~(HDX)~-~ | March 11, 2005, 6:36 AM |
NetNX | Hdx, This is Zac ("Grim Reaper Ice") if you have successfully hashed all clients including spawns can i see what you have for hashing on your 0x36 (ive been trying to get that for a while without the use of another Hashing Library :-/) oh well ~_^ <3 Hdx | March 11, 2005, 3:35 PM |
iago | BNCSutil is opensource, just find the sourcecode for it. | March 11, 2005, 4:11 PM |
shadypalm88 | [quote author=NetNX link=topic=10866.msg103326#msg103326 date=1110555350] Hdx, This is Zac ("Grim Reaper Ice") if you have successfully hashed all clients including spawns can i see what you have for hashing on your 0x36 (ive been trying to get that for a while without the use of another Hashing Library :-/) oh well ~_^ <3 Hdx [/quote]I've already told NetNX/Zac this, but for the benefit of others, BNCSutil's kd_calculateHash and CDKeyDecoder::calculateHash functions only generate hashes for SID_AUTH_CHECK (0x51, for people who like the numbers), not for SID_CDKEY2 (0x36). The information put into the hash is different between the two (I think SID_AUTH_CHECK just uses an extra zero DWORD). Anyway, I came up with a suggestion for VB users who really want to use SID_CDKEY2 (I don't really think C users should have any trouble). Have a look at the BnetDocs for SID_CDKEY2, where you'll find the list of things, in order, that are used to figure the CD-key hash. Make a new packet buffer and add the things to it. Then just run the buffer through calcHashBuf, something like this: [code] Dim Hash As String * 20 'note the * 20 allocates 20 bytes for Hash ' ... insert the stuff into the packet buffer ... Call calcHashBuf(Buffer.GetData(), Buffer.GetLength(), Hash)[/code] Where Buffer.GetData() gets the contents of the packet buffer and Buffer.GetLength() gets the length of the contents (obviously Len(Buffer.GetData()) would also work). | March 11, 2005, 5:01 PM |