You must config: your server ip, and the files of the client.
You must cript your .py file like base64 if we want to do the ip protection more better..
Python script:
PHP Code:
def login_UP(self):
t_serverInfo = serverInfo.TESTADDR["ip"]
if not t_serverInfo == "your server ip":
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupDisplayMessage(text.EN["modify_file"])
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupDisplayMessage(text.DE["modify_file"])
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupDisplayMessage(text.IT["modify_file"])
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupDisplayMessage(text.RO["modify_file"])
net.Disconnect()
return
else:
self.login_Find()
path = os.getcwd()
principaly = os.listdir(path)
bgm = os.listdir('BGM')
lib = os.listdir('lib')
miles = os.listdir('miles')
pack = os.listdir('pack')
if principaly != PrincipalyFiles:
for item in principaly:
if not item in PrincipalyFiles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["corrupted_file"] + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["corrupted_file"] + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["corrupted_file"] + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["corrupted_file"] + str(item) + " .")
net.Disconnect()
return
else:
pass
if PrincipalyFiles != principaly:
for missing in PrincipalyFiles:
if not missing in principaly:
if str(missing) == "Thumbs.db":
pass
else:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["missing_file"] + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["missing_file"] + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["missing_file"] + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["missing_file"] + str(missing) + " .")
net.Disconnect()
return
else:
pass
if bgm != BGMFiles:
for item in bgm:
if not item in BGMFiles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["corrupted_file"] + "../BGM/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["corrupted_file"] + "../BGM/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["corrupted_file"] + "../BGM/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["corrupted_file"] + "../BGM/" + str(item) + " .")
net.Disconnect()
return
else:
pass
if BGMFiles != bgm:
for missing in BGMFiles:
if not missing in bgm:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["missing_file"] + "../BGM/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["missing_file"] + "../BGM/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["missing_file"] + "../BGM/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["missing_file"] + "../BGM/" + str(missing) + " .")
net.Disconnect()
return
else:
pass
if lib != LibFiles:
for item in lib:
if not item in LibFiles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["corrupted_file"] + "../lib/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["corrupted_file"] + "../lib/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["corrupted_file"] + "../lib/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["corrupted_file"] + "../lib/" + str(item) + " .")
net.Disconnect()
return
else:
pass
if LibFiles != lib:
for missing in LibFiles:
if not missing in lib:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["missing_file"] + "../lib/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["missing_file"] + "../lib/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["missing_file"] + "../lib/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["missing_file"] + "../lib/" + str(missing) + " .")
net.Disconnect()
return
else:
pass
if miles != MilesFiles:
for item in miles:
if not item in MilesFiles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["corrupted_file"] + "../miles/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["corrupted_file"] + "../miles/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["corrupted_file"] + "../miles/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["corrupted_file"] + "../miles/" + str(item) + " .")
net.Disconnect()
return
else:
pass
if MilesFiles != miles:
for missing in MilesFiles:
if not missing in miles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["missing_file"] + "../miles/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["missing_file"] + "../miles/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["missing_file"] + "../miles/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["missing_file"] + "../miles/" + str(missing) + " .")
net.Disconnect()
return
else:
pass
if pack != PackFiles:
for item in pack:
if not item in PackFiles:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["corrupted_file"] + "../pack/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["corrupted_file"] + "../pack/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["corrupted_file"] + "../pack/" + str(item) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["corrupted_file"] + "../pack/" + str(item) + " .")
net.Disconnect()
return
else:
pass
if PackFiles != pack:
for missing in PackFiles:
if not missing in pack:
snd.PlaySound("sound/ui/loginfail.wav")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/en"):
self.PopupNotifyMessage(text.EN["missing_file"] + "../pack/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/it"):
self.PopupNotifyMessage(text.IT["missing_file"] + "../pack/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/de"):
self.PopupNotifyMessage(text.DE["missing_file"] + "../pack/" + str(missing) + " .")
if (locale.IsEUROPE() and app.GetLocalePath() == "locale/ro"):
self.PopupNotifyMessage(text.RO["missing_file"] + "../pack/" + str(missing) + " .")
net.Disconnect()
return
else:
pass
if not IsLoginDelay():
snd.PlaySound("sound/ui/loginok.wav")
self.PopupDisplayMessage(locale.LOGIN_CONNECT_SUCCESS)
PHP Code:
Open your introLogin.py, and find:
def OnHandShake(self):
now cancel that and the option of this self and replace it:
def OnHandShake(self):
self.login_UP()
you must add:
import os on line 1.
now copy the php of python script and reply on your introLogin.
Text:
PHP Code:
EN = {"modify_file" : "Some files have been modified.", "corrupted_file" : "Corrupted file: ","missing_file" : "Missing file: "}
IT = {"modify_file" : "Alcuni file sono stati modificati.", "corrupted_file" : "File danneggiato: ","missing_file" : "File mancante: "}
RO = {"modify_file" : "Unele fiºiere au fost modificate.", "corrupted_file" : "Fiºier corupt: ","missing_file" : "Lipseºte fiºierul: "}
PHP Code:
Create a new file and named it text.py, now copy and paste the php code into your new file. (you must use ANSI character) after you finish put text.py on your root file.
PHP Code:
At the moment i work at a new check more better like this:
No, it will just make it a bit harder to put files in the directory of the game-client..
If you implement the md5 function it will make modifying your client harder.
There are a solution about the injection like to make a virtual memory how get your default module with a timer like 60 seconds.
So when the timer is start will search the actual module from your process and if there are a new module the client will be closed..
Quote:
Originally Posted by Mi4uric3
No, it will just make it a bit harder to put files in the directory of the game-client..
If you implement the md5 function it will make modifying your client harder.
But both can easily be bypassed..
both easily : i specified you must cript your .py file in base64 or a personal key.
For md5 : The function already i implement, not really man, example:
result = open metin2client.exe ,read line text
md5 = now hexdigest of the result.
Why hexdigest? because you can compare the md5 easily using a hex.
A simple digest can be resulted a character how you cannot use.
Need DDoS Protection for your gameserver? Protection in US and EU from $39.99/mo! 05/11/2013 - Private Server Advertising - 0 Replies SolveDDoS is the leading provider in Remote DDoS protection . Our advanced protection system protects against Layer 4 and Layer 7 attacks!
Protection up to 10Gb/s
Protection against UDP, TCP, HTTP, Slowloris, ...
Remote Protection, stay at your host!
SolveDDoS Anti-Bot (Block automated SQLi, XSS, SPAM)
Layer 7 DDoS Protection
Flatrate 100Mbit bandwidth
SolveDDoS Attack Monitoring Panel
24/7 Support by DDoS Specialists
Ban Protection! [NA/EU/BR] 09/26/2010 - Combat Arms Hacks, Bots, Cheats & Exploits - 19 Replies Hey Guys!
This release will really,really help you not get banned
while hacking on Combat Arms.
I don't know if you heard or not but nexon has this system that
if someone reports you in CA, Nexon will litteraly take a screenshot
at that exact moment and will upload that screenshot to they're
computers/file system to see if you really are hacking or not. They
also look at the videos that are taken too, which are in .avi format.
Bot protection. 04/13/2010 - Lineage 2 - 5 Replies Hey I am plaing on one l2 private server (name doesn't matter). Everything was ok until they made some bot protection. Mayby you guys can help me. When I start botting (when I start auto combat) I get message :
Imageshack - 2141m.jpg
I get it few times and then my game closes.
thank you in advance.
is there a way to set up an no-pk protection? 01/27/2010 - EO PServer Hosting - 1 Replies hello.
one more time i need help hehe.
i want to know if there is a way to set up an protection that dont let players atack others... just mobs in the map... like the protection in the market...
if there is a way pls help me...
Protection 01/31/2009 - Silkroad Online - 2 Replies I'm so depressed caz' i got hacked once again. The only thing that ive done is that ive downloaded a video "arabian race trailor" from a post "Future abdates" from one of the people who has comented on the main post. I'm not saying that #$@# about the forum, on the contrary, it's one of the greatest forums ever. But there are people who use such things. After i downloaded it, and after my main character loged off, i returned to discover that the servers are "offline", although my noob was...