Probleme mit Spawnpackets

02/19/2012 16:47 Viper3001#1
Eig bin ich eher der Typ der viel search benutzt und dann auch alles findet, aber hierbei brauch ich mal bisschen hilfe :D (hab nichts passendes gefunden)

Zu meinem Problem: Ich habe in Delphi einen soweit funktionierenden sniffer bzw testbot geschrieben, der per idtcpclient sich aufm server einloggt. Das geht auch soweit, auch das laufsystem funktioniert, was aber nicht geht ist, dass er mir kein Spawnpacket für resourcen oder honeyboxen anzeigt genauso für die Streuner >_<

Hab mir das ganze auch schon in Wireshark ne ganze weile angeschaut und wenn ich mich normal einloggen via Firefox und co. kriege ich die packets, 0|2 , 0|c und auch 0|q aber bei meinem tool kommt nichts an.
Könnte es möglich sein das man dem Server zum Login ein bestimmtes packet senden muss das ich vergessen habe?

Falls ihr noch mehr informationen braucht schreibt hier rein.

Bin für jede Art von Hilfe dankbar.

MFG
02/19/2012 17:20 Klenix123#2
"LOGIN|UID|SID|Clientversion" SID und UID könnten auch andersrum sein.
0|c = cargo/Bonusbox
0|q = ressis
0|2 = entfernen von cargo/bonusbox
02/19/2012 17:36 hoocrax#3
Quote:
Originally Posted by Klenix123 View Post
"LOGIN|UID|SID|Clientversion" SID und UID könnten auch andersrum sein.
0|c = cargo/Bonusbox
0|q = ressis
0|2 = entfernen von cargo/bonusbox
Klenix is that the OOOOOLLDDD code? and now codes changed?
02/19/2012 17:41 Viper3001#4
Its still the code which is working and used by the darkorbit client. But my problem is not to understand or to analyze this. The problem is that my client doesnt GET this packets. I dunno why but the server wont send it to me. So in this case i think there must be something missing maybe an extra packet or soemthing.

My login looks like this:
data_cl := '00330007' + userid + '00000020' + dosid + '0005352e342e33'; <--

the last nr is the clientversion which is 5.4.3 right now.

I would be happy if you could tell me why the spawn/despawn packets wont be sended to my own client ><
02/19/2012 18:06 hoocrax#5
UserID is hashsed somehow.. sid and client version are to be converted from string to hex.
02/19/2012 18:31 Viper3001#6
Well i think you dont get my problem^^

The login is working to 100% Im online and i can fly around without any problem. I get information about my current coordinates and i can manage to find out whether I reached my new position or not.(100% working walk/flysystem). The problem is that the server wont send me any spawn or despawn packets which I need to make an efficient bot :D

Edit: login packet is described below
02/19/2012 23:34 bossfong#7
not is not... lol... as far as I know nothing is hashed. you have got to convert the 4 bytes to an 32-bit integer.
could be wrong though
02/20/2012 00:21 Vonyx#8
Quote:
Originally Posted by bossfong View Post
not is not... lol... as far as I know nothing is hashed. you have got to convert the 4 bytes to an 32-bit integer.
could be wrong though
At the OP said already, map login is not his problem. So he obviously figured that step out.


Back to the original question. It may sound obvious but just in case, do you send the keep alive packets?

I had a similar issue on a different matter,where I was not getting the required packets from the server. The only solution is to run your sniffer and to dump your outgoing traffic into a file while flying using your favourite browser. (from the login moment) Then discard everything you know for sure that you don't need like the moment command (at the time of writing is 00 0c 00 52 00 00 00 00...), include in your program whatever is left that you don't know for sure its use and technically it should work.

Have you tried to run the sniffer while your bot is running? Have you compared your bot outgoing traffic to the browser outgoing traffic?


Good luck!
02/20/2012 12:27 hoocrax#9
Use ether detect, each tcp is opened separately, so once you know the channel in wwhich the DO packets are on, all can be found there, exclusively DO packets..

EDIT : accoording to you when I sniffed the packets, I saw the userid was stmin like 000003C60C08 where as it is actually 63310*** different from the pattern what you wrote above.
02/20/2012 16:40 Viper3001#10
I will reply after I tried some new things. I already talked to Klenix about my issue via Skype. He just made a bot for the facebook version but the interesting part was that he has to send an RDY|MAP packet which could be there on the official DO as well.
Therefore I will try to find some equivalent packed. He tried to login without sending this packet and he had the same problem then.
Could be some kind of tipp in the right direction.
Btw I used wireshark on my bot to check if I got a bug with my sniffing log inside my bot gui but there wasnt any kind of bug.

Im trying the copy the whole login now to extract the needed packets. I will post my results later.

Thx for your replies.

Ps. Made a mistake at my post to the loginpacket which contains the dosid and the userid.
To make it clear the loginpacket looks like this(on server Deutschland 7(Germany 7)):

data_cl := '00330007' + userid + '00000020' + dosid + '0005352e342e33';

the userid is directly converted from Integer to HEX:
userid: 12345678 -> 0x000000BC614E
for delphi it would be

userid:=inttohex(12345678,12);

The userid seems to be 12 sings long(maybe 10 so there would be 00 between 0033000700)

the dosid is the one which is converted as it would be a string:
12345 -> 3132333435

the last numbers 352e342e33 stands for the clientversion: 5.4.3 <- 2e means a dot.

Regards
02/20/2012 16:57 Vonyx#11
Quote:
Originally Posted by Viper3001 View Post
I will reply after I tried some new things. I already talked to Klenix about my issue via Skype. He just made a bot for the facebook version but the interesting part was that he has to send an RDY|MAP packet which could be there on the official DO as well.
Therefore I will try to find some equivalent packed. He tried to login without sending this packet and he had the same problem then.
Could be some kind of tipp in the right direction.
Btw I used wireshark on my bot to check if I got a bug with my sniffing log inside my bot gui but there wasnt any kind of bug.

Im trying the copy the whole login now to extract the needed packets. I will post my results later.

Thx for your replies.

The packet containing the RDY|MAP it is indeed in the browser version of DO, There are other packets packets you have to send as well, i don't remember from the top of my head... f|g... something and couple more before and after . For a skylab bot (map login, move ship, sell, logout) you can get away with only the essential ones, but if you want to make a proper bot you will need to implement the full communication protocol.
02/20/2012 17:34 Viper3001#12
In most cases the login packets are just WINDOW_SETTINGS which arent rly useful and you dont rly need them. But I already found the interesting packet which must be send to gain all packets which are important for ship spawning or resources etc.

The packet is 192 bytes long and contains some windowsettings but they seem to contain more then that or maybe they are closing the login procedure.

Quote:
00 55 00 01 00 00 00 4f 37 7c 57 49 4e 44 4f 57
5f 53 45 54 54 49 4e 47 53 2c 34 7c 30 2c 34 34
34 2c 35 2c 30 2c 35 2c 31 30 2c 31 30 2c 30 2c
31 33 2c 33 31 35 2c 32 31 32 2c 30 2c 32 33 2c
31 30 35 39 2c 32 30 30 2c 30 2c 32 34 2c 31 32
34 36 2c 38 30 2c 30 00 5f 00 01 00 00 00 59 37
7c 57 49 4e 44 4f 57 5f 53 45 54 54 49 4e 47 53
2c 34 7c 30 2c 34 34 34 2c 35 2c 30 2c 31 2c 36
37 34 2c 35 2c 30 2c 35 2c 31 30 2c 31 30 2c 30
2c 31 33 2c 33 31 35 2c 32 31 32 2c 30 2c 32 33
2c 31 30 35 39 2c 32 30 30 2c 30 2c 32 34 2c 31
32 34 36 2c 38 30 2c 30 00 06 00 0e 00 00 00 06

String:
Quote:
UO7|WINDOW_SETTINGS,4|0,444,5,0,5,10,10,0,13,315,2 12,0,23,1059,200,0,24,1246,80,0_Y7|WINDOW_SETTINGS ,4|0,444,5,0,1,674,5,0,5,10,10,0,13,315,212,0,23,1 059,200,0,24,1246,80,0
These packets could differ on every Server(Maybe the start with UO7 and 0_Y7) but they should make clear how to loginto the game. My problem is solved so if anyone got more question just pm me.

Thx for the help and im happy that i could solve my problem on my own :DD (with some help :P)
02/21/2012 13:47 hoocrax#13
Quote:
Originally Posted by Viper3001 View Post
I will reply after I tried some new things. I already talked to Klenix about my issue via Skype. He just made a bot for the facebook version but the interesting part was that he has to send an RDY|MAP packet which could be there on the official DO as well.
Therefore I will try to find some equivalent packed. He tried to login without sending this packet and he had the same problem then.
Could be some kind of tipp in the right direction.
Btw I used wireshark on my bot to check if I got a bug with my sniffing log inside my bot gui but there wasnt any kind of bug.

Im trying the copy the whole login now to extract the needed packets. I will post my results later.

Thx for your replies.

Ps. Made a mistake at my post to the loginpacket which contains the dosid and the userid.
To make it clear the loginpacket looks like this(on server Deutschland 7(Germany 7)):

data_cl := '00330007' + userid + '00000020' + dosid + '0005352e342e33';

the userid is directly converted from int to hex:
userid: 12345678 -> 000000BC614E
for delphi it would be

userid:=inttohex(12345678,12);

The userid seems to be 12 sings long(maybe 10 so there would be 00 between 0033000700)

the dosid is the one which is converted as it would be a string:
12345 -> 3132333435

the last numbers 352e342e33 stands for the clientversion: 5.4.3 <- 2e means a dot.

Regards
Thanks man After searching a lot, I found a solution to the userid part :)

So its not a 12 or 10 base, its 16 itself the the data infront of the userid is :

Code:
0033000700000
After that userid comes. I dont code in delphi but I got working code in vb.net here :

Code:
userid_hex_form = Convert.ToString(userID, 16)

I hope thats helpfull !
And thanks for the starting push OP ! :handsdown:

EDIT : I get through it all but in the end.. the packet is not sent correct no matter what ! I try replace the 0D0A with nothing, trim last 4 chards but it just wont go !

Upto here all fine : 35 2E 34 2E 33 0D 0A :(