Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Correct Client for Server
#1
Introduction
This is very basic, what it will do is upon login. It will send a code with that packet checking if that code is the same on the client as on the server. The code can be as long as you wish it to be.

Do not use the same security code as on this example.

Client Side
Find:
Code:
Sub SendLogin(ByVal Name As String, ByVal Password As String)
Dim Packet As String

    Packet = "login" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Password) & SEP_CHAR & App.Major & SEP_CHAR & App.Minor & SEP_CHAR & App.Revision & SEP_CHAR & END_CHAR
    Call SendData(Packet)
End Sub
Then add this part to it:
Code:
& SEP_CHAR & "code35FO36F"
So it eventually look like this:
Code:
Sub SendLogin(ByVal Name As String, ByVal Password As String)
Dim Packet As String

    Packet = "login" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Password) & SEP_CHAR & App.Major & SEP_CHAR & App.Minor & SEP_CHAR & App.Revision & SEP_CHAR & "code35FO36F" & SEP_CHAR & END_CHAR
    Call SendData(Packet)
End Sub

Server Side
Inside:
Code:
' ::::::::::::::::::
    ' :: Login packet ::
    ' ::::::::::::::::::
    If LCase(Parse(0)) = "login" Then
Just below:
Code:
If IsMultiAccounts(Name) Then
   Call AlertMsg(Index, "Multiple account logins is not authorized.")
   Exit Sub
End If
Add:
Code:
If Trim$(Parse$(6))  "code35FO36F" Then
  Call AlertMsg(Index, "Your client do not match the servers security code.")
  Exit Sub
End If
Yes I know it's very basic. But it's always something.
Reply
#2
Still, people can just sniff it in plain text and see that a little bit has been added at the end and then add it to a blank ms.
Quote:Robin:
Why aren't maps and shit loaded up in a dynamic array?
Jacob:
the 4 people that know how are lazy
Robin:
Who are those 4 people?
Jacob:
um
you, me, and 2 others?
Reply
#3
As I said, it will give a little bit security Tongue And by adding the XOR Encryption a little bit more security is added on top of that.
Reply
#4
I'd let the server send a string to client, instead of the other way around. It's harder to edit incoming than outcoming packets, I think.
Reply
#5
Joost Wrote:I'd let the server send a string to client, instead of the other way around. It's harder to edit incoming than outcoming packets, I think.
Might be, I dont have any knowledge when it comes to snipping up packets. Why not have it both ways then. With different codes. So if the client code is correct, like this example. It send one back again Tongue Kinda useless actually since if the first check is correct, the client is correct.. but still.
Reply
#6
William Wrote:Kinda useless actually since if the first check is correct, the client is correct.. but still.

Erm, no it's not Big Grin
Quote:Robin:
Why aren't maps and shit loaded up in a dynamic array?
Jacob:
the 4 people that know how are lazy
Robin:
Who are those 4 people?
Jacob:
um
you, me, and 2 others?
Reply
#7
Joost, didnt write that.. I did, and whats the meaning on making it check first if the client is correct for the server. And after that check if the server is correct for the client =/
Reply
#8
No, we check if the client is right for the server, then check if the client is right for the server, but using a server packet instead Big Grin

Also, that quote messed up and I don't know why o.o
Quote:Robin:
Why aren't maps and shit loaded up in a dynamic array?
Jacob:
the 4 people that know how are lazy
Robin:
Who are those 4 people?
Jacob:
um
you, me, and 2 others?
Reply
#9
Thanks you, it's work perfectly :wink:
Reply
#10
Of course it works Tongue
Reply
#11
sorry for the 6-month bump, but I have some pretty good ideas for improvement:

if you used a code generator such as:
((version * subversion / revision) * day * week / month) / variable
(random * / + etc)
variable is sent by the server on attempt at login, the server stores the outcome it should receive back, and if the number from the client is different then it kicks them


obviously use a different combination for each version and revision of your game so the script kiddies really have to work to get their number, and since the variable is random from the server it just gives them more problems... if you make it take more than 1 minute's work then they'll get bored and move on normally Wink


what you think? obviously I haven't put the code in here 'cos it's only a theory I have at the moment

of course there's a slight flaw, with the date possibly being different in different places, but you can see where i'm coming from, maybe just the full version number should be used?
Reply
#12
Or you could just add XOR Encryption or another simple encryption to the actual key.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)