Valhalla Legends Forums Archive | Battle.net Bot Development | MCP_STARTUP problems

AuthorMessageTime
DarkDarkDark
I'm trying to send the MCP_STARTUP pocket using the DataBuffer from MBNCSUtil.dll. However once I send it, my client closes its connection. (connecting to battle.net)

Heres the SID_LOGONREALMEX:
[code]0000  ff 3e 53 00 01 00 00 00 e3 6b 1a 2d 3f f0 ca 7a  .>S......k.-?..z
0010  68 fb 5c 00 3f f0 ca 94 17 e0 00 00 00 00 06 00  h.\.?...........
0020  ec b4 9b 00 7a 12 1a 27 50 58 32 44 36 38 58 49  ....z..'PX2D68XI
0030  3f f0 ca 7a 09 10 00 00 6d b9 93 2f a4 b2 0e a6  ?..z....m../....
0040  2a 69 bc 87 32 55 0e 4b 26 2b 43 78 54 72 61 6e  *i..2U.K&+CxTran
0050  64 6f 00                                        do.[/code]

I send the 1 byte and then send the MCP_STARTUP:

[code]0000  4a 00 01 01 00 00 00 e3 6b 1a 2d 3f f0 ca 7a 68  J.......k.-?..zh
0010  fb 5c 00 00 00 06 00 ec b4 9b 00 7a 12 1a 27 50  .\.........z..'P
0020  58 32 44 36 38 58 49 3f f0 ca 7a 09 10 00 00 6d  X2D68XI?..z....m
0030  b9 93 2f a4 b2 0e a6 2a 69 bc 87 32 55 0e 4b 26  ../....*i..2U.K&
0040  2b 43 78 54 72 61 6e 64 6f 00                    +CxTrando.[/code]

any I doing anything wrong?


January 2, 2010, 2:21 AM
MysT_DooM
Everything seems in place, length corresponds correctly and all the chunks are in the right place and count. Unless I'm overlooking something, I cant seem to spot any problems
January 2, 2010, 8:56 AM
DarkDarkDark
Alright thanks for your input, I guess its something wrong with my tcpclient then.
January 6, 2010, 12:12 AM
Myndfyr
I'm trying to understand - in your original post you say "I send the 1 byte and then send the MCP_STARTUP."

What's the 1 byte?

I'm looking at the MCP plugin that I started for JinxBot:
[code]
        private void ConnectRealm()
        {
            m_connection = new McpClient(m_ip.ToString(), m_port);
            if (!m_connection.Connect())
            {
                // TODO: Raise an error event.
            }
            else
            {
                McpPacket pck = new McpPacket((byte)McpPacketId.Startup);
                pck.InsertInt32(m_mcpCookie);
                pck.InsertInt32(m_mcpStatus);
                pck.InsertByteArray(m_mcpChunk1);
                pck.InsertByteArray(m_mcpChunk2);
                pck.InsertCString(m_uniqueBnetName);
                Send(pck);
            }
        }
[/code]

I don't send any "1 byte" before MCP_STARTUP.  What's that about?
January 6, 2010, 6:50 AM
rabbit
I think he's sending 0x01 like you're supposed to with BNCS.
January 6, 2010, 1:32 PM
Myndfyr
Ah could be.  Have you tried not doing that, instead of doing it?  I'm pretty sure you don't do that with the realms.  They're not BNCS servers.
January 6, 2010, 2:47 PM
DarkDarkDark
Sorry for the late reply. I'm going on info based on the BNCS/MCP clientless bot analysis on edgeofnowhere and what I get when I join in normally, which shows a 0x01 byte being sent.

Also I try without the 0x01 and nothing happens, it stays connected but I don't get the http://www.bnetdocs.org/?op=packet&pid=337MCP_CHARLOGON

I was thinking it was my tcpclient but no Exception comes up.
January 6, 2010, 6:37 PM
MysT_DooM
Yes, you are supposed to send the 0x01 like you do in a BNCS. 

Also are you using the same socket to connect to battle.net that you are when you connect to MCP?  If so try using two seperate sockets, one for BNCS, and the other for MCP. 
January 6, 2010, 6:59 PM
DarkDarkDark
Yes I am using the same socket:

[code]Dim tcpClient As New System.Net.Sockets.TcpClient()
        tcpClient.Connect("useast.battle.net", 6112)
        Dim NS As NetworkStream = tcpClient.GetStream()[/code]

Edit: So I made two connections, when I send the 0x01 then the MCP_STARTUP, my connection doesn't close but I don't get a response
January 6, 2010, 7:14 PM
MysT_DooM
Are you sending the 0x01 to the MCP socket?  And are you sending 0x01MCP once you're connected to the realm server that you got from 0x3E(BNCS). 

i.e something like:  parse out IP/Port from 0x3E data, connect to MCP socket with the IP/Port gotten from 0x3E,  on successfull connection then send 0x01MCP.
Are you doing that?
January 6, 2010, 9:49 PM
DarkDarkDark
Awesome thank you very much. I wasn't making a connection to the IP/Port of the MCP from 0x3E. I didn't know I had to do that :P, its working good now thanks for your help!
January 6, 2010, 11:25 PM
-MichaeL-
Am i correct in assuming BNSharp now has RealmLogin?
January 8, 2010, 1:33 AM
Myndfyr
[quote author=-MichaeL- link=topic=18134.msg183928#msg183928 date=1262914406]
Am i correct in assuming BNSharp now has RealmLogin?
[/quote]
No.  It can be implemented as a plugin.
January 8, 2010, 4:23 PM

Search