• Welcome to Valhalla Legends Archive.
 
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - SteelSide

#1
Oh and by the way, thanks for the JavaOp2 tip! It works perfectly fine under a terminal, even better on my server (where i intended to use it) than on my desktop. Won't need to rewrite Ghost++ then :)

And also thanks for the notice of that you really don't have to respond to any packets other than ping & send nulls - i thought login in was just a smaaaalll small part of all the packets you needed to handle and send. (I got a 50% complete login sequence done, which i never bothered to finish, now i might :P)
#2
Quote from: Andy on December 21, 2008, 04:45 PM
If you have TFT installed, there's no difference in 0x51 according to the client. WAR3 and W3XP are 100% identical, except that when you select to connect with WAR3, the client sends 0x5C (SID_SWITCHPRODUCT).

Oh, nice to know! Really had no idea. I thought the 2 executables had nothing at all to do with each other. Turns out I'm wrong :>
#3
Is it listed anywhere what packets are larger? (Looked a quickie at bnetdocs, didn't spot anything of value, but then i only glanced at 0x50 :p)

Edit: while at it, a quick question: After you managed the login sequence, are you required to answer to packets sent to you? (And which if so) or will bnet just accept that you send your null packet every 60 seconds?
#4
I'm interested in patching GHost++ to be capable of just using ROC (Only connectionwise, don't care about the hosting parts).
What difference is there between connecting ROC & TFT?

Also, is there any other open source bot that runs on linux? (Preferdably that can connect to ROC-only natively ._. and absolutely with the possibility of not running a gui.)
#5
How about endianness? Some fields explicitly say networkbyteorder, while others don't mention it.
Are they in little endian?
#6
Quote from: Hdx on May 27, 2008, 02:24 PM
Quote(DWORD) Protocol ID (0)
(DWORD) Platform ID
(DWORD) Product ID
(DWORD) Version Byte
(DWORD) Product language
(DWORD) Local IP for NAT compatibility*
(DWORD) Time zone bias*
(DWORD) Locale ID*
(DWORD) Language ID*
(STRING) Country abreviation
(STRING) Country
?

And ya, the entire site seeds touch ups, but it shouldn't be hard to figure out what everything is.
Well the data format up there looks like that, but the description lower down has got it mixed up.

Oh and i really gotta start using wireshark more. The problem was not in my code, for what it was worth (after i added the bncs headers), but i sent a 4byte 01 00 00 00 instead of 1 :>

I also have some old battle.net documentation which says that pretty much all of those fields can be 0, yet the new docs don't..
#7
Thanks, that's what I've been using. It could use some touchups thou, the MPQ locale ID part confuses me, as it haven't got any place in the message :>?
#8
So, uhm, .. I'm stuck at connecting. I got the verbyte alright from bnls (0x15), so I'm set for connecting to bnet, i thought.

This is what my client sends (58 bytes):
0040  ff 50 3a 00 00 00  00 00 36 38 58 49 50 58   ...P:... ..68XIPX
0050  33 57 15 00 00 00 53 55  6e 65 c0 a8 02 1b 88 ff   3W....SU ne......
0060  ff ff 09 04 00 00 09 04  00 00 55 53 41 00 55 6e   ........ ..USA.Un
0070  69 74 65 64 20 53 74 61  74 65 73 00               ited Sta tes. 

And my bot:

50 00 00 00 00 00 00 00     P . . . . . . .
36 38 58 49 33 52 41 57     6 8 X I 3 R A W
15 00 00 00 00 00 00 00     . . . . . . . .
00 00 00 00 c4 ff ff ff            . . . . . . . .
00 00 00 00 00 00 00 00     . . . . . . . .
53 57 45 00 53 77 65 64     S W E . S w e d
65 6e 00                              e n .

Now to the questions: What is that ff at the start? Is it like that for all wc3 packets?
3a is 58, so i figure that's the length, but how long is it datawise?
Why does my client send 68XI PX3W ?
Where can i find more in-depth info about the wc3 protocol? Cause the bnet docs do not mention them (what i have found anyway)

Edit: Now i made it send this instead
ff 50 3a 00 00 00 00 00     . P : . . . . .
36 38 58 49 33 52 41 57     6 8 X I 3 R A W
15 00 00 00 00 00 00 00     . . . . . . . .
00 00 00 00 c4 ff ff ff     . . . . . . . .
00 00 00 00 00 00 00 00     . . . . . . . .
55 53 41 00 55 6e 69 74     U S A . U n i t
65 64 20 53 74 61 74 65     e d   S t a t e
73 00                       s .
But server won't reply. Can you spot anything wrong with it ;)?

        sendBuffer.add((unsigned char)0xff);
sendBuffer.add((unsigned char)SID_AUTH_INFO);
sendBuffer.add((unsigned char)0x3a);
sendBuffer.add((unsigned char)0x0);

sendBuffer.add((unsigned long)0);

sendBuffer.add((unsigned char)'6');
sendBuffer.add((unsigned char)'8');
sendBuffer.add((unsigned char)'X');
sendBuffer.add((unsigned char)'I');


sendBuffer.add((unsigned char)'3');
sendBuffer.add((unsigned char)'R');
sendBuffer.add((unsigned char)'A');
sendBuffer.add((unsigned char)'W');


sendBuffer.add((unsigned long)0x15);
sendBuffer.add((unsigned long)0);
sendBuffer.add((unsigned long)0);
sendBuffer.add((unsigned long)(long)-60); // +1*-60
sendBuffer.add((unsigned long)0);
sendBuffer.add((unsigned long)0);
//sendBuffer.add("SWE\0");
//sendBuffer.add("Sweden\0");
sendBuffer.add("USA\0");
sendBuffer.add("United States\0");
#9
Quote from: Andy on May 14, 2008, 02:52 PM
Ya, I switched them... But it's still wrong:
Quote[12:49:52 PM] Last Logon: Wed, May 14, 2008 at 12:52:19 PM
[12:49:52 PM] Last Logoff: Wed, May 14, 2008 at 2:58:26 AM
Shouldn't the last logon be before the last logoff?

Correct. If you connect to bnet with your wc3 client, play for an hour or so, and then logoff, you will see that when you log back in, your login time was 1 hour ago :>