Author | Message | Time |
---|---|---|
iNsaNe | Eveytime I send 0x51 (sid_auth_check), it ip bans me from the server. I'm curious as to why it's doing such, I know I'm sending the packet wrong. Here's the log: [code]0000 00 09 5b cd 8a 38 00 0c 6e 99 1a 1b 08 00 45 00 ..[..8..n.....E. 0010 00 94 cc f2 40 00 80 06 62 5a c0 a8 00 06 3f f0 ....@...bZ....?. 0020 ca 78 05 07 17 e0 2b eb a8 43 bb 2f ec f0 50 18 .x....+..C./..P. 0030 ff 11 14 f5 00 00 ff 51 6c 00 f3 1b 9e 00 15 00 .......Ql....... 0040 01 00 c9 4f 02 f2 ff ff ff ff 01 00 00 00 00 00 ...O............ 0050 00 00 1a 00 00 00 0e 00 00 00 0a 66 70 00 00 00 ...........fp... 0060 00 00 92 24 5c 8e c8 c3 7a eb 9c 78 bc b8 68 6d ...$\...z..x..hm 0070 33 81 8e a9 a9 49 77 61 72 33 2e 65 78 65 20 31 3....Iwar3.exe 1 0080 32 2f 32 38 36 20 32 30 3a 33 35 3a 32 31 20 31 2/286 20:35:21 1 0090 35 37 32 33 30 37 00 42 4e 69 2d 50 6f 77 65 52 572307.BNi-PoweR 00a0 2e 00 .. [/code] and the code: [code] Public Sub SEND_SIDAUTHCHECK() Dim BNCS_Packet As New MBNCSUtil.BncsPacket(&H51) 'C -> S 0x51 (SID_AUTH_CHECK) Dim ClientToken As UInteger Dim CheckRevision As Long Dim MPQNumber As Byte Dim HashLength() As Byte Dim EXEInfo As String Dim EXEVersion As Integer Dim Files(2) As String Dim CDKeyDecoded As New MBNCSUtil.CdKey(strCDKey) ClientToken = GetTickCount If strProduct = "Warcraft III RoC" Then Files(0) = "C:\Program Files\Warcraft III\war3.exe" Files(1) = "C:\Program Files\Warcraft III\storm.dll" Files(2) = "C:\Program Files\Warcraft III\game.dll" HashLength = CDKeyDecoded.GetHash(ClientToken, ServerToken) EXEVersion = MBNCSUtil.CheckRevision.GetExeInfo(Files(0), EXEInfo) MPQNumber = MBNCSUtil.CheckRevision.ExtractMPQNumber(MPQFileName) CheckRevision = MBNCSUtil.CheckRevision.DoCheckRevision(ValueString, Files, MPQNumber) With BNCS_Packet .Insert(ClientToken) .Insert(EXEVersion) .Insert(CheckRevision) .Insert(&H1) .Insert(&H0) .Insert(strCDKey.Length) .Insert(CDKeyDecoded.Product) .Insert(CDKeyDecoded.Value1) .Insert(&H0) .Insert(HashLength) .InsertCString(EXEInfo) .InsertCString(strUsername) AddChat(Color.Yellow, "-> Sending 0x51! - [" & BNCS_Packet.GetData().Length & " Bytes]") frmMain.winSock.SendData(BNCS_Packet.GetData()) End With End If End Sub[/code] then it just disconnects me and ip bans me for ~ 5 mins. It's really annoying me. | March 25, 2007, 5:43 PM |
HdxBmx27 | [code]ff 51 6c 00 .Ql. f3 1b 9e 00 .... 'Client 15 00 01 00 .... 'Exe version (This is wrong IIRC) c9 4f 02 f2 .O.. 'Hash ff ff ff ff .... 'Number of keys... -1? wtfbbq? 01 00 00 00 .... 'Spawn: Yes (Can't do this on WC3 man!) 00 00 00 00 .... 'Length of 0? 1a 00 00 00 .... 'Prod? wtf? 0e 00 00 00 .... 'Public? 0a 66 70 00 .fp. 'Should be 0's 00 00 00 00 92 24 5c 8e c8 c3 7a eb 9c 78 bc b8 68 6d 33 81 .......$\...z..x..hm3. 8e a9 a9 49 77 61 72 33 2e 65 78 65 20 31 32 2f 32 38 36 20 32 30 3a 33 35 3a 32 31 20 31 35 37 32 33 30 37 00 ...Iwar3.exe 12/286 20:35:21 1572307. 'Exe info string 42 4e 69 2d 50 6f 77 65 52 2e 00 BNi-PoweR..[/code] You're all wacked up! Whats with the -1? ~Hdx | March 25, 2007, 8:04 PM |
iNsaNe | [quote author=Hdx link=topic=16542.msg167237#msg167237 date=1174853094] Whats with the -1? [/quote] Yeah I know wtf? Here, a new packet log and I changed the code a bit: [code] With BNCS_Packet .Insert(ClientToken) .Insert(EXEVersion) .Insert(CheckRevision) .InsertInt32(&H1) .InsertInt32(&H0) .Insert(strCDKey.Length) .Insert(CDKeyDecoded.Product) .Insert(CDKeyDecoded.Value1) .InsertInt32(&H0) ''' .Insert(HashLength) <--- Removed .InsertCString(EXEInfo) .InsertCString(strUsername) AddChat(Color.Yellow, "-> Sending 0x51! - [" & BNCS_Packet.GetData().Length & " Bytes]") frmMain.winSock.SendData(BNCS_Packet.GetData()) MsgBox("works") End With[/code] [code] 0000 00 09 5b cd 8a 38 00 0c 6e 99 1a 1b 08 00 45 00 ..[..8..n.....E. 0010 00 80 8b b1 40 00 80 06 a3 af c0 a8 00 06 3f f0 ....@.........?. 0020 ca 78 06 8f 17 e0 03 b1 01 12 12 99 96 74 50 18 .x...........tP. 0030 ff 11 ad 4e 00 00 ff 51 58 00 c4 f8 43 01 15 00 ...N...QX...C... 0040 01 00 38 39 c5 51 00 00 00 00 01 00 00 00 00 00 ..89.Q.......... 0050 00 00 1a 00 00 00 0e 00 00 00 0a 66 70 00 00 00 ...........fp... 0060 00 00 77 61 72 33 2e 65 78 65 20 31 32 2f 32 38 ..war3.exe 12/28 0070 36 20 32 30 3a 33 35 3a 32 31 20 31 35 37 32 33 6 20:35:21 15723 0080 30 37 00 42 4e 69 2d 50 6f 77 65 52 2e 00 07.BNi-PoweR.. [/code] Still same problem.. | March 25, 2007, 8:43 PM |
Barabajagal | You didn't read the comments on each line, did you? | March 25, 2007, 8:53 PM |
HdxBmx27 | [code]ff 51 58 00 .QX. 'Header c4 f8 43 01 ..C. 'Client 15 00 01 00 .... 'EXE Version 38 39 c5 51 89.Q 'Checksum 00 00 00 00 .... 'Number of keys... 0? 01 00 00 00 .... 'Spawn 1 ? cant do this 00 00 00 00 .... 'CDKey Len of 0 once again 1a 00 00 00 .... 'Invalid product 0e 00 00 00 .... 'Invalid Public 0a 66 70 00 .fp. 'Should be 0, but isn't... 00 00 00 00 77 61 72 33 2e 65 78 65 20 31 32 2f 32 38 36 20 ....war3.exe 12/286 'CDkey Hash seems you omitted it idiot, you need it! 32 30 3a 33 35 3a 32 31 20 31 35 37 32 33 30 37 00 20:35:21 1572307. 'Exe Information 42 4e 69 2d 50 6f 77 65 52 2e 00 BNi-PoweR.. 'CDKey Owner[/code] Why in HELL did you remove the cdkey hash? Thats not your problem For some stupid reason you're treating your Checksum result as a 64-bit integer instead of a 32 Which is throwing everything else off a DWORD. LEARN TO READ your own dammen packets and maby you will understand what the hell you are doing wrong. It's obvious! ~Hdx | March 25, 2007, 8:57 PM |
Myndfyr | The following is the code used to build the 0x51 packet in the JinxBot BNCS plugin: [code] 431 BncsPacket pck0x51 = new BncsPacket((byte)BncsPacketId.AuthCheck); 432 pck0x51.Insert(m_clientToken); // Client Token 433 pck0x51.Insert(exeVer); // EXE version (from CheckRevision) 434 pck0x51.Insert(crResult); // Checksum (From CheckRevision) 435 if (m_prodCode == "D2XP" || m_prodCode == "W3XP") // number of keys present in packet 436 pck0x51.Insert(2); 437 else 438 pck0x51.Insert(1); 439 pck0x51.Insert(false); // Is Spawn? 440 pck0x51.Insert(key1.Key.Length); // Key 1 length 441 pck0x51.Insert(key1.Product); // Key 1 product 442 pck0x51.Insert(key1.Value1); // Key 1 public 443 pck0x51.Insert(0); // Should be 0 444 pck0x51.Insert(key1.GetHash(m_clientToken, m_srvToken)); // Key 1 hash 445 if (key2 != null) // if there are two keys: 446 { 447 pck0x51.Insert(key2.Key.Length); // key 2 length 448 pck0x51.Insert(key2.Product); // key 2 product 449 pck0x51.Insert(key2.Value1); // key 2 public 450 pck0x51.Insert(0); // Should be 0 451 pck0x51.Insert(key2.GetHash(m_clientToken, m_srvToken)); // key 2 hash 452 } 453 pck0x51.InsertCString(exeInfo); // EXE information 454 pck0x51.InsertCString("JinxBot"); // CD key owner 455 456 Send(pck0x51.GetData()); [/code] (full code for this class is here). Compared to your most recently posted code, which: Client Token EXE Version Checksum 1 key Not spawn Key length Key product Key public 0 Key hash is MISSING. EXE info CD key owner "BNi-PoweR" | March 25, 2007, 10:49 PM |
raylu | I think it would be much easier if you had just explained that he had an extra null DWORD after his Checksum. Check the length of your CheckRevision variable (why is it called that anyway?). Also, note that all DWORDS are basically Int32s - if you insert them as such, you will get an error (which is better than not erroring and getting IPbanned). | March 27, 2007, 9:17 PM |
BreW | [quote author=raylu link=topic=16542.msg167314#msg167314 date=1175030237] I think it would be much easier if you had just explained that he had an extra null DWORD after his Checksum. Check the length of your CheckRevision variable (why is it called that anyway?). [/quote] Because it is supposed to check the revisions made with the dlls it downloads from bnet's ftp server and is supposed to include in it's mpq | March 27, 2007, 10:35 PM |
raylu | Um...what I'm saying is that he should be adding the CheckSum to the packet, not CheckRevision formula. I'm asking him why he's calling it that. | March 28, 2007, 11:01 PM |
BreW | I answered the question you asked in parentheses | March 29, 2007, 1:24 AM |
Baroness | EDIT: Just posted the solution, went to read it, saw Hdx already pointed it out. :-X | April 10, 2007, 12:41 PM |