[Share] Server List Packet Information

Newbie Spellweaver
Joined
Aug 23, 2008
Messages
10
Reaction score
0
So I was sniffing some packets on eFlyff and I wanted to see the actual login packet for the server list. using the guide from the other packet information posts, I was able to break down and now show you what it looks like. I will show you the Kern Server and the first channel. I hope the information is correct and that I have learned something from all of this. Perhaps you will too.

Server List Packet (broken down)

Code:
5E
BF 05 00 00
FD 00 00 00
48 6E 17 19 01
0B 00 00 00
64 61 72 6B 73 61 6D 75 73 38 32		USERNAME
25 00 00 00				
FF FF FF FF
06 00 00 00					INT-SERVER ID *REVERSED*
04 00 00 00					INT-LENGTH OF SERVER NAME    *REVERSED*
4B 65 72 6E					SERVER Name (Kern)
0E 00 00 00					INT-LEnGTH OF SERVER IP
36 34 2E 31 32 37 2E 31 30 33 2E 32 34 38	SERVER IP (64.127.103.248)
00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
06 00 00 00					INT-CLUSTER ID *REVERSED*
01 00 00 00					INT-CHANNEL ID *REVERSED*
03 00 00 00					INT-LENGTH OF CHANNEL NAME *REVERSED*
36 2D 31 00					CHANNEL NAME (6-1)
00 00 00 00 00 00 00 00
45 02 00 00					INT-ONLINE PLAYERS
01 00 00 00
4C 04 00 00					INT-CHANNEL CAPACITY *REVERSED* (1,100 reversed 001,1)

The server capacity is 1,100 represented in hex as 044C. Now with the little endian it would read 4C04. I caught that one after trying to convert decimal to hex. Be sure to convert your numbers into hex.

a great place to do that online is here:



Thanks to the people on the previous threads about packet information and structure.
 
I may be wrong, but the first 4 lines you got there (excluding 5E)... are

A hash of the size.
The size of the packet (-5)
Hash of the data
Length of the username...

May be wrong - cant be bothered opening up my notes.

... Btw, Nice work :) Your catching on ^_^
 
Hehe your almost right, the checksum is only on the client packets. This one comes from server:

[5e]
Uint32 - size
Uint32 - login id //this is some id used during the login process used by server and client in multiple packets!
Byte - const 01 //don't know if this has any special meaning
string - username
Uint32 - number of entrys

the rest is correct, there is one loop for the servers an an inner loop for the channels.
 
there is a problem when I run it. if the FF FF FF FF bytes are present, it hangs. however if they are changed to blanks I get a server window blank. I can't figure it out.
 
Hehe your almost right, the checksum is only on the client packets. This one comes from server:

[5e]
Uint32 - size
Uint32 - login id //this is some id used during the login process used by server and client in multiple packets!
Byte - const 01 //don't know if this has any special meaning
string - username
Uint32 - number of entrys

the rest is correct, there is one loop for the servers an an inner loop for the channels.

Oh rofl, what was I thinking *hits head* yeah lol.

Client -> Server packets are what I said above =]
 
Im going to release the source I have been working on.

Before everyone goes ape shit and downloads this thinking it works, they are in for a surprise.

Credit mostly goes to Snaity for his start on it. I just worked off of it.

Things to remember: (C#, mysql required, get express)

1. This only goes as far as the server list screen and then stops. The people helping me through the packet for server list knows about this. perhaps they can help.

2. The LoginSvr is bugged and crashes periodically. something about and exception error. I was going to fix it when it was finished anyway.

3. The rest of the code is not done.

4. This is a good way to see how packets and winsock works in C#.

I am doing this so everyone can help make this quickly and not one person can take all the credit as that is not fair. I expect the source to be released here constantly when breakthroughs occur. Thats the definition in my opinion of open source. One source + many coders = success for a flyff server.
 

Attachments

Downloading C# now. If I'll understand your code, I'll be glad to help out with that packet.

I see nothing wrong with your packet, so I calculated its size, which came out as 6C and not 6A. I might be wrong though.. Try changing it to 6C and see what happens then. Also, you might want to log outgoing packets too. If I wouldn't do that on my server, I would never be able to get to character selection screen. It helps figure out odd stuff in your packets.

One last thing. The way you build the packets is quite bad. You should build (or find on the internet) a well made packet builder class, then modify it to flyff's structure, and use it instead.
 
Im going to release the source I have been working on.

Before everyone goes ape shit and downloads this thinking it works, they are in for a surprise.

Credit mostly goes to Snaity for his start on it. I just worked off of it.

Things to remember: (C#, mysql required, get express)

1. This only goes as far as the server list screen and then stops. The people helping me through the packet for server list knows about this. perhaps they can help.

2. The LoginSvr is bugged and crashes periodically. something about and exception error. I was going to fix it when it was finished anyway.

3. The rest of the code is not done.

4. This is a good way to see how packets and winsock works in C#.

I am doing this so everyone can help make this quickly and not one person can take all the credit as that is not fair. I expect the source to be released here constantly when breakthroughs occur. Thats the definition in my opinion of open source. One source + many coders = success for a flyff server.

Thank you for posting this, and yes, an open source where everyone can make improvements is almost a bug-free project. It is literally shown from every other open-source project that they are the strongest.
 
The login Server is not working so i think all the rest isn't working too. this is a picture how far it goes.
I tipe in User and Pass press connect and then.
DarkMan82 - [Share] Server List Packet Information - RaGEZONE Forums
 
I have alredy try whith that's but i'll try again .


Edit : Look the error [
DarkMan82 - [Share] Server List Packet Information - RaGEZONE Forums
 
Last edited by a moderator:
You have to change the driver version in the config folder files to 3.51 to make ODBC work.
Darkman is using a different version than the one used in that guide, so you have to edit it to use 3.51.


To Darkman: The FlyffServer keeps crashing once I try and log in.

DarkMan82 - [Share] Server List Packet Information - RaGEZONE Forums
 
mysql-connector-odbc-5.1.5-win32.msi whorks for me white the typical instalation
 
Make sure mysql odbc is installed and connected. better get 5.1. in the Conf folder there are 3 xml files. make sure each file has the driver name set to "ODBC Driver 5.1" not sure off the top. go into ODBC connections in control pannel and look at the official name there. Also if using another client, make sure you keep the hashes the same. different clients have different hashes.

to addishen: what's the best way to make a packet logger? and how can I clean up the packets better?

to everyone else: as i stated before in the post with the attachment. This is a very incomplete source originally created by Snaity. It has the basis of a server. all that really needs to be done is send the packets. now, about the error, yes it does crash. upon looking at the technical data it says system.argumentexception or something. I havent come across that kind of error in programming before so i will look into it. I think it has something to do with a packet the client is sending and it might not know how to interpret it right maybe?
 
Back