[Building] Server From Scratch...

06/18/2012 20:14 badguy4you#1
First i know well about c# not expert but i can understand things out [So no one comes and tell me learn c# :D :bandit:]

Second what i am intended to do using albetros source but building it block by block to see every bug and fix it but what really confusing me that i want to dismantle the server then re assemble it ... so

The question comes here , how where is the first block i add to make the server start making connection with the game and then the rest will come ...
06/18/2012 21:18 romeoromeo#2
:D remind me of my self . i asked same question long time ago . but they told me to learn c# hehe .
maybe wrong maybe right ...
but i think the first thing is socket . which is somhow related to encryption and packet handler ..
but , i think its complicated . ... coz to connect you need socket ... and to connect successfully you need the encryption ? ... and to handle the connection you need to handle the packets ? how to recieve name , pass , etc .... and send repl and then you need client or entity class to load ur character . and map class as a place to where the character will be loaded ?
i wish if somone gonna answer you ...... they will answer me too
i want to know the steps in back ground between open client and connect in details .
like 1-open client , 2- type name & pass , 3- send seed 4- seed reply or whatever ... just very detailed steps b4 the character load .
06/18/2012 21:33 badguy4you#3
what i want is only as i said i want to dismantle albetros source then re-assemble it again so i can handle every bug alone ... and i will give any achievment i reach to pro4never so he can add it to the official thread ...
06/18/2012 22:32 Zeroxelli#4
To say that you're building a source "from scratch" means that you're building it from nothing, i.e. no Albertros, no nothing. You start with an empty file.
06/18/2012 22:44 badguy4you#5
Quote:
Originally Posted by Zeroxelli View Post
To say that you're building a source "from scratch" means that you're building it from nothing, i.e. no Albertros, no nothing. You start with an empty file.
huh i changed my mind :D and forgot to change the topic's mind :D


cuz i think that bringing albetro's source to life , what i mean to life is making it 99% free of bugs specially annoing ones is alot better than building new one . cuz what i see in albetros source is that he made alot of effort in it and it cannot be neglected that way cuz of stupid unknown bugs so maybe if we dismantled it and then rebuild it step by step we will know where is the problems occure

tell me if you agree with me or disagree
06/18/2012 22:52 Zeroxelli#6
Quote:
Originally Posted by badguy4you View Post
huh i changed my mind :D and forgot to change the topic's mind :D


cuz i think that bringing albetro's source to life , what i mean to life is making it 99% free of bugs specially annoing ones is alot better than building new one . cuz what i see in albetros source is that he made alot of effort in it and it cannot be neglected that way cuz of stupid unknown bugs so maybe if we dismantled it and then rebuild it step by step we will know where is the problems occure

tell me if you agree with me or disagree
While I do agree that it would be a valuable experience for you, I must say that sadly, it is not possible to have any source get close to 100% bug-free as long as it has all these newer features. There's too many things that haven't been documented, and without the new MD5 hash (key) we can't log the structures.

By all means though, go for it. I wish I had a source like Albetros to build on when I first started with Conquer servers, it would have made my life a lot easier at the time. :)
06/18/2012 23:18 pro4never#7
[Only registered and activated users can see links. Click Here To Register...]

Wrote this just for this purpose! (very basic information but can help)

Step 1: Socket system

A socket system allows your server to accept a connection from the client. This is required to send and receive information between server and client.

Step 2: Encryption

All conquer packets are encrypted. Login and game servers use seperate encryption, there's also password encryption to worry about. Many examples are out there for older patches. More up to date ones are a bit more difficult as there's no public references.

Step 3: Login Sequence

There's a specific sequence of packets sent between the client and server to handle client authentication (login server side of things) at which point the client will connect to the game server. At this point you need to initialize your encryption system (using a DHKey Exchange) and may run the game login sequence which determines if this is a new character or not. Once you have a character to log in with, it sends the hero information packet to determine what your character information is (name, mesh, level, etc) as well as a general data packet to set your position in the world as well as a number of exchanged requests/replies between client and server to send you your equipment, inventory, skills, proficiencies, friends, etcetc.

Once this is all done you enter the normal game phase of the server. This is when you handle various game packet sequences such as player movement, attacking, interacting and other systems such as warehouses or more advanced things like poker.

In order to fully understand how these systems work as well as structure the packets required to implement them, you'll need to be able to log packets and structure them. this is less feasible on older versions of conquer seeing as there's no live version to log your packets from.
06/18/2012 23:31 badguy4you#8
Quote:
Originally Posted by pro4never View Post
[Only registered and activated users can see links. Click Here To Register...]

Wrote this just for this purpose! (very basic information but can help)

Step 1: Socket system

A socket system allows your server to accept a connection from the client. This is required to send and receive information between server and client.

Step 2: Encryption

All conquer packets are encrypted. Login and game servers use seperate encryption, there's also password encryption to worry about. Many examples are out there for older patches. More up to date ones are a bit more difficult as there's no public references.

Step 3: Login Sequence

There's a specific sequence of packets sent between the client and server to handle client authentication (login server side of things) at which point the client will connect to the game server. At this point you need to initialize your encryption system (using a DHKey Exchange) and may run the game login sequence which determines if this is a new character or not. Once you have a character to log in with, it sends the hero information packet to determine what your character information is (name, mesh, level, etc) as well as a general data packet to set your position in the world as well as a number of exchanged requests/replies between client and server to send you your equipment, inventory, skills, proficiencies, friends, etcetc.

Once this is all done you enter the normal game phase of the server. This is when you handle various game packet sequences such as player movement, attacking, interacting and other systems such as warehouses or more advanced things like poker.

In order to fully understand how these systems work as well as structure the packets required to implement them, you'll need to be able to log packets and structure them. this is less feasible on older versions of conquer seeing as there's no live version to log your packets from.
V.Nice explaination i will stick with trying to make albetros source the best i cant give a promise but as long as i have interest in doing this every achieve i will be done , i will pm you with the result and what i made
06/18/2012 23:34 pro4never#9
If I was re-writing things using the albetros source, I'd be stripping out the authentication code, re-writing it as well as the entire login sequence.

That way can rule out any weird bugs relating to first time login dc's as well as making full character login when you create a character. Would allow to clean a bunch of stuff up.

I'd then standardize the entire database system so it's all using the nhibrinate system and finally I'd re-write the entire server action system to use server management threads running updates versus the current timer based approach used in the DAQ system.

After that I'd look at adding new features... those are the main things I'd wanna see re-written in that source though.
06/18/2012 23:35 { Angelius }#10
Its rather simple... you don't have what it takes, because if you do you wold realize that with all the resources that this forum provides even an idiot can put together a working server/figure how things works.
06/18/2012 23:40 _DreadNought_#11
Quote:
Originally Posted by Zeroxelli View Post
While I do agree that it would be a valuable experience for you, I must say that sadly, it is not possible to have any source get close to 100% bug-free as long as it has all these newer features. There's too many things that haven't been documented, and without the new MD5 hash (key) we can't log the structures.

By all means though, go for it. I wish I had a source like Albetros to build on when I first started with Conquer servers, it would have made my life a lot easier at the time. :)
It's public, people just need to know where to look.
06/18/2012 23:43 pro4never#12
Quote:
Originally Posted by Zeroxelli View Post
While I do agree that it would be a valuable experience for you, I must say that sadly, it is not possible to have any source get close to 100% bug-free as long as it has all these newer features. There's too many things that haven't been documented, and without the new MD5 hash (key) we can't log the structures.

By all means though, go for it. I wish I had a source like Albetros to build on when I first started with Conquer servers, it would have made my life a lot easier at the time. :)
The hash isn't the issue here. The password encryption is not public and last I checked the bypass isn't supposed to be released publicly. I could go and re-work my proxy paradise framework and people could log all the packets they want, write some basic bots or do whatever but what's the point? Without a public password bypass or the encryption becoming public it's just a tool for people to bot with (and virtually no one will take it that far).

That's why I haven't bothered updating it really.
06/18/2012 23:49 Zeroxelli#13
Quote:
Originally Posted by _DreadNought_ View Post
It's public, people just need to know where to look.
I wouldn't know, I haven't worked with anything newer than 5065/5095. But I would hope it's kept in the Underground to be honest..

Quote:
Originally Posted by pro4never View Post
The hash isn't the issue here. The password encryption is not public and last I checked the bypass isn't supposed to be released publicly. I could go and re-work my proxy paradise framework and people could log all the packets they want, write some basic bots or do whatever but what's the point? Without a public password bypass or the encryption becoming public it's just a tool for people to bot with (and virtually no one will take it that far).

That's why I haven't bothered updating it really.
Well, theoretically, couldn't you just log the encrypted version of your password externally and just send that encrypted packet instead?

Edit: Well, no, probably not. The value most likely changes with each login.
06/18/2012 23:50 { Angelius }#14
Quote:
Originally Posted by pro4never View Post
The hash isn't the issue here. The password encryption is not public and last I checked the bypass isn't supposed to be released publicly. I could go and re-work my proxy paradise framework and people could log all the packets they want, write some basic bots or do whatever but what's the point? Without a public password bypass or the encryption becoming public it's just a tool for people to bot with (and virtually no one will take it that far).

That's why I haven't bothered updating it really.
A memory based bot has been already released even tho its not a perfect one but by using it you can sniff/bot/speed hack

3 or maybe 4 memory based packet sniffers has been already released and that's another way to sniff packets

By looking only at the memory based shit that's available already any one can learn how to bypass the game/password encryption

So yeah so many retarded/lazy ppl who just like to set there and cry about the encryption shit.
06/18/2012 23:52 Zeroxelli#15
Quote:
Originally Posted by { Angelius } View Post
A memory based bot has been already released even tho its not a perfect one but by using it you can sniff/bot/speed hack

3 or maybe 4 memory based packet sniffers has been already released and that's another way to sniff packets

By looking only at the memory based shit that's available already any one can learn how to bypass the game/password encryption

So yeah so many retarded/lazy ppl who just like to set there and cry about the encryption shit.
Hmm, I wouldn't mind fiddling with memory based sniffers myself if I had the time. Seems a lot more efficient than a standard proxy.