Unban hack

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
Hey all i have been using the donator pyplugin for mods a nd the fact it bans peeps ips. It seems thos doesnt matter anymore because people seem to be using an unban hack to get back into my server. Even though their ip is in the bandlist... i have resulted in using iptables and firewalling them out.

Does anyone know a better work aroumd ?

Thanks

P.s

Merry xmas [emoji12]
 

Snake

Moderator
Moderator
Jul 13, 2014
288
174
28
Well, if you are using original rust with Fougerite, just add IP's and ID bans and it will be fine, also use VAC ban check.

In case you are hosting a pirate server, then it's so much harder. Being pirate means everyone can change his ID in any moment, so ID bans won't do much. IP's can be easily changed too so to protect your server from that, you should be using other methods along with a web or forum.

The best one nowadays is to require forum/web register in order to play server ( this will add a lot of time and will annoy hackers ).
 

DreTaX

Probably knows the answer...
Administrator
Jun 29, 2014
4,095
4,815
113
At your house.
github.com
Well, if you are using original rust with Fougerite, just add IP's and ID bans and it will be fine, also use VAC ban check.

In case you are hosting a pirate server, then it's so much harder. Being pirate means everyone can change his ID in any moment, so ID bans won't do much. IP's can be easily changed too so to protect your server from that, you should be using other methods along with a web or forum.

The best one nowadays is to require forum/web register in order to play server ( this will add a lot of time and will annoy hackers ).
On Equinox we use security mecahisms to ban the hackers from the server, which is connected to the website. If they are banned from the web they are not able to come back.
 

h0wHigh

Retired Staff
Retired Staff
Aug 5, 2014
103
9
18
Oxide has a plugin called R-bans which connects to a website called RustDB and basically doesn't allow anyone to join if they have 1 or more bans(configurable), has over 30,000 bans on there, very handy it seems. Getting something like that would be awesome as its similiar to what Dretax is talking about.
 

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
Yer understand about cracked vs original but the problem is they use the unban and their ip has not changed yet it is still in the bandips list. So i have to then add there ip to the firewall. I have even got my firewall to ban country blocks before now but that seems a little harsh.I like the idea of forum registration to be able to play. How would i hook in the authenication from say phpbb to rust? Im pretty competent at linux just crap at c#
 

DreTaX

Probably knows the answer...
Administrator
Jun 29, 2014
4,095
4,815
113
At your house.
github.com
Oxide has a plugin called R-bans which connects to a website called RustDB and basically doesn't allow anyone to join if they have 1 or more bans(configurable), has over 30,000 bans on there, very handy it seems. Getting something like that would be awesome as its similiar to what Dretax is talking about.
On Equinox, I use evercookie and Computer Fingerprint scan. Nobody got back to the website alive, only if they were using another computer. Hehe
 

h0wHigh

Retired Staff
Retired Staff
Aug 5, 2014
103
9
18
Computer Fingerprint scan? lol sounds overkill but i like it. Could it somehow be implemented similiar options to Anti-Cheat?
 

Snake

Moderator
Moderator
Jul 13, 2014
288
174
28
Oxide has a plugin called R-bans which connects to a website called RustDB and basically doesn't allow anyone to join if they have 1 or more bans(configurable), has over 30,000 bans on there, very handy it seems. Getting something like that would be awesome as its similiar to what Dretax is talking about.
That plugin works only for original servers, not pirate ones.
 

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
Ok but is there a good whitelist plugin that works? I could output the forums accounts to that whitelist
 

DreTaX

Probably knows the answer...
Administrator
Jun 29, 2014
4,095
4,815
113
At your house.
github.com
Actually is there a fougerite whitelist that works? I know rustt++ dont work.
Python:
__author__ = 'DreTaX'
__version__ = '1.0'

import clr

clr.AddReferenceByPartialName("Fougerite")
import Fougerite

"""
    Class
"""


class Whitelist:
    """
        Methods
    """

    red = "[color #FF0000]"
    green = "[color #009900]"

    def On_PluginInit(self):
        self.Whitelist()
        self.DisconnectInfo()

    def Whitelist(self):
        if not Plugin.IniExists("Whitelist"):
            ini = Plugin.CreateIni("Whitelist")
            ini.Save()
        return Plugin.GetIni("Whitelist")

    def DisconnectInfo(self):
        if not Plugin.IniExists("DisconnectInfo"):
            ini = Plugin.CreateIni("DisconnectInfo")
            ini.AddSetting("DisconnectInfo", "Message", "You aren't on whitelist!")
            ini.Save()
        return Plugin.GetIni("DisconnectInfo")

    def TrytoGrabID(self, Player):
        try:
            id = Player.SteamID
            return id
        except:
            return None

    def isMod(self, id):
        if DataStore.ContainsKey("Moderators", id):
            return True
        return False

    def On_PlayerConnected(self, Player):
        id = self.TrytoGrabID(Player)
        if id is None:
            try:
                Player.Disconnect()
            except:
                pass
            return
        if Player.Admin or self.isMod(id):
            return
        name = Player.Name
        whitelist = self.Whitelist()
        checkwl = whitelist.GetSetting("WhiteList", id)
        if checkwl is None and int(checkwl) != 1:
            ini = self.DisconnectInfo()
            msg = ini.GetSetting("DisconnectInfo", "Message")
            for x in xrange(1, 4):
                Player.Message(self.red + msg)
                Player.Message(self.red + "Your ID: " + self.green + id)
            Plugin.Log("WhiteListJoinLog", str(name) + " Tried to join with id: " + id)
            try:
                Player.Disconnect()
            except:
                pass

    def On_Command(self, Player, cmd, args):
        if not Player.Admin and not self.isMod(Player.SteamID):
            return
        if cmd == "addtowl":
            if len(args) != 1:
                Player.Message("Usage: /addtowl id")
                Player.Message("Example: /addtowl 7656119796999999")
                return
            ini = self.Whitelist()
            idtoadd = str(args[0])
            if not idtoadd.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.AddSetting("WhiteList", idtoadd, "1")
            ini.Save()
        elif cmd == "delfromwl":
            if len(args) != 1:
                Player.Message("Usage: /delfromwl id")
                Player.Message("Example: /delfromwl 7656119796999999")
                return
            ini = self.Whitelist()
            idtodel = str(args[0])
            if not idtodel.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.DeleteSetting("WhiteList", idtodel)
            ini.Save()
            Player.Message("ID: " + idtodel + " removed.")
        elif cmd == "lwhitelist":
            ini = self.Whitelist()
            enum = ini.EnumSection("WhiteList")
            Player.Message("Current IDs on whitelist: ")
            for id in enum:
                Player.Message("- " + id)
Python plugin, make a folder called Whitelist and paste the code inside a Whitelist.py file. Or just download the attached file.

Sends the configured message to the non whitelisted players, and also tells them their own id.
All with colors, and 4 times, just to make sure they notice It.

Admins are automatically added to the whitelist.

Commands:
/addtowl
/delfromwl
/lwhitelist

Logs the players with their names and id who aren't on whitelist.
 

Attachments

  • Like
Reactions: Snake

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
Dretax... ur whitelist doesnt seem to work i jave it installed and can add prople but it does not stop people joining who are not whitelisted..
 

DreTaX

Probably knows the answer...
Administrator
Jun 29, 2014
4,095
4,815
113
At your house.
github.com
Dretax... ur whitelist doesnt seem to work i jave it installed and can add prople but it does not stop people joining who are not whitelisted..
Python:
__author__ = 'DreTaX'
__version__ = '1.0'

import clr

clr.AddReferenceByPartialName("Fougerite")
import Fougerite

"""
    Class
"""


class Whitelist:
    """
        Methods
    """

    red = "[color #FF0000]"
    green = "[color #009900]"

    def On_PluginInit(self):
        self.Whitelist()
        self.DisconnectInfo()

    def Whitelist(self):
        if not Plugin.IniExists("Whitelist"):
            ini = Plugin.CreateIni("Whitelist")
            ini.Save()
        return Plugin.GetIni("Whitelist")

    def DisconnectInfo(self):
        if not Plugin.IniExists("DisconnectInfo"):
            ini = Plugin.CreateIni("DisconnectInfo")
            ini.AddSetting("DisconnectInfo", "Message", "You aren't on whitelist!")
            ini.Save()
        return Plugin.GetIni("DisconnectInfo")

    def TrytoGrabID(self, Player):
        try:
            id = Player.SteamID
            return id
        except:
            return None

    def isMod(self, id):
        if DataStore.ContainsKey("Moderators", id):
            return True
        return False

    def On_PlayerConnected(self, Player):
        id = self.TrytoGrabID(Player)
        if id is None:
            try:
                Player.Disconnect()
            except:
                pass
            return
        if Player.Admin or self.isMod(id):
            return
        name = Player.Name
        whitelist = self.Whitelist()
        checkwl = whitelist.GetSetting("WhiteList", id)
        if int(checkwl) != 1:
            ini = self.DisconnectInfo()
            msg = ini.GetSetting("DisconnectInfo", "Message")
            for x in xrange(1, 4):
                Player.Message(self.red + msg)
                Player.Message(self.red + "Your ID: " + self.green + id)
            Plugin.Log("WhiteListJoinLog", str(name) + " Tried to join with id: " + id)
            try:
                Player.Disconnect()
            except:
                pass

    def On_Command(self, Player, cmd, args):
        if not Player.Admin and not self.isMod(Player.SteamID):
            return
        if cmd == "addtowl":
            if len(args) != 1:
                Player.Message("Usage: /addtowl id")
                Player.Message("Example: /addtowl 7656119796999999")
                return
            ini = self.Whitelist()
            idtoadd = str(args[0])
            if not idtoadd.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.AddSetting("WhiteList", idtoadd, "1")
            ini.Save()
        elif cmd == "delfromwl":
            if len(args) != 1:
                Player.Message("Usage: /delfromwl id")
                Player.Message("Example: /delfromwl 7656119796999999")
                return
            ini = self.Whitelist()
            idtodel = str(args[0])
            if not idtodel.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.DeleteSetting("WhiteList", idtodel)
            ini.Save()
            Player.Message("ID: " + idtodel + " removed.")
        elif cmd == "lwhitelist":
            ini = self.Whitelist()
            enum = ini.EnumSection("WhiteList")
            Player.Message("Current IDs on whitelist: ")
            for id in enum:
                Player.Message("- " + id)
Try that
 

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
thanks for your time but it still is not stopping people from joining .. i can add ids and list them but its not stopping peeps from joining the game . not sure if this error is it.
[Exception] [ Hooks->PlayerDisconnect | ConnectionAcceptor->uLink_OnPlayerDisconnected | GameObject->SendMessage | #=qSBVG6i3HoKQx$z3bwADYIgVX_kCktQP8JwBh1CI$O_8=->#=qnBC8vvHltGiAoAcoGPaaAA== | #=qSBVG6i3HoKQx$z3bwADYIgVX_kCktQP8JwBh1CI$O_8=->#=qopOwgPOjk_HOzOwWVDsWIQ== | #=qr9YotdsWVwSdbrj6D5OlmHWwwJVhBeBIJ5J461Az$DQ=->#=qM25p$Ei_tgo0VZPqr5NeJg== | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=qci4yStPzci5I7GmSgdUS$h7q7_OtsQ88SJIjP7mpdMc= | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=q7schaA4VGB3JYoQQlG6RKDMIWKcE$VSMeVxSMK6Rjc4= | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=qXhGm743H$muqY2ZOivndJ3J1Cp2Y0MVlHiXaqg29SSU= | Network->CloseConnection | NetCull->CloseConnection | NetUser->Kick | Player->Disconnect | ProxyHelper->jsWrapper | NativeMethod->Execute | ExecutionVisitor->ExecuteFunction | ExecutionVisitor->Visit | MethodCall->Accept | ExecutionVisitor->Visit | MemberExpression->Accept | ExecutionVisitor->Visit | ExpressionStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | SwitchStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | TryStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | ForEachInStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | JsFunction->Execute | ExecutionVisitor->ExecuteFunction | ExecutionVisitor->ExecuteFunction | JintEngine->CallFunction | JintEngine->CallFunction | Plugin->Invoke | Plugin->OnTimerCB | TimedEvent->_timer_Elapsed | Timer->Callback | ]
 

DreTaX

Probably knows the answer...
Administrator
Jun 29, 2014
4,095
4,815
113
At your house.
github.com
HTML:
ass
thanks for your time but it still is not stopping people from joining .. i can add ids and list them but its not stopping peeps from joining the game . not sure if this error is it.
[Exception] [ Hooks->PlayerDisconnect | ConnectionAcceptor->uLink_OnPlayerDisconnected | GameObject->SendMessage | #=qSBVG6i3HoKQx$z3bwADYIgVX_kCktQP8JwBh1CI$O_8=->#=qnBC8vvHltGiAoAcoGPaaAA== | #=qSBVG6i3HoKQx$z3bwADYIgVX_kCktQP8JwBh1CI$O_8=->#=qopOwgPOjk_HOzOwWVDsWIQ== | #=qr9YotdsWVwSdbrj6D5OlmHWwwJVhBeBIJ5J461Az$DQ=->#=qM25p$Ei_tgo0VZPqr5NeJg== | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=qci4yStPzci5I7GmSgdUS$h7q7_OtsQ88SJIjP7mpdMc= | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=q7schaA4VGB3JYoQQlG6RKDMIWKcE$VSMeVxSMK6Rjc4= | #=qxj6gmeF_JmZ38rfyBJuqFoiB_sAo6WCf4j1AdQtxGgQ=->#=qXhGm743H$muqY2ZOivndJ3J1Cp2Y0MVlHiXaqg29SSU= | Network->CloseConnection | NetCull->CloseConnection | NetUser->Kick | Player->Disconnect | ProxyHelper->jsWrapper | NativeMethod->Execute | ExecutionVisitor->ExecuteFunction | ExecutionVisitor->Visit | MethodCall->Accept | ExecutionVisitor->Visit | MemberExpression->Accept | ExecutionVisitor->Visit | ExpressionStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | SwitchStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | TryStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | ForEachInStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | IfStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | ExecutionVisitor->Visit | BlockStatement->Accept | JsFunction->Execute | ExecutionVisitor->ExecuteFunction | ExecutionVisitor->ExecuteFunction | JintEngine->CallFunction | JintEngine->CallFunction | Plugin->Invoke | Plugin->OnTimerCB | TimedEvent->_timer_Elapsed | Timer->Callback | ]
Python:
__author__ = 'DreTaX'
__version__ = '1.0'

import clr

clr.AddReferenceByPartialName("Fougerite")
import Fougerite

"""
    Class
"""


class Whitelist:
    """
        Methods
    """

    red = "[color #FF0000]"
    green = "[color #009900]"

    def On_PluginInit(self):
        self.Whitelist()
        self.DisconnectInfo()

    def Whitelist(self):
        if not Plugin.IniExists("Whitelist"):
            ini = Plugin.CreateIni("Whitelist")
            ini.Save()
        return Plugin.GetIni("Whitelist")

    def DisconnectInfo(self):
        if not Plugin.IniExists("DisconnectInfo"):
            ini = Plugin.CreateIni("DisconnectInfo")
            ini.AddSetting("DisconnectInfo", "Message", "You aren't on whitelist!")
            ini.Save()
        return Plugin.GetIni("DisconnectInfo")

    def TrytoGrabID(self, Player):
        try:
            id = Player.SteamID
            return id
        except:
            return None

    def isMod(self, id):
        if DataStore.ContainsKey("Moderators", id):
            return True
        return False

    def On_PlayerConnected(self, Player):
        id = self.TrytoGrabID(Player)
        if id is None:
            try:
                Player.Disconnect()
            except:
                pass
            return
        Plugin.Log("Whitelistdebuglog", Player.Name + " joined. ID: " + id)
        if Player.Admin or self.isMod(id):
            Plugin.Log("Whitelistdebuglog", Player.Name + " is an admin. Ignoring checks")
            return
        name = Player.Name
        whitelist = self.Whitelist()
        checkwl = whitelist.GetSetting("WhiteList", id)
        Plugin.Log("Whitelistdebuglog", "Whitelist value is : " + str(checkwl))
        if int(checkwl) != 1:
            Plugin.Log("Whitelistdebuglog", Player.Name + " should be disconnected?")
            ini = self.DisconnectInfo()
            msg = ini.GetSetting("DisconnectInfo", "Message")
            for x in xrange(1, 4):
                Player.Message(self.red + msg)
                Player.Message(self.red + "Your ID: " + self.green + id)
            Plugin.Log("WhiteListJoinLog", str(name) + " Tried to join with id: " + id)
            try:
                Player.Disconnect()
            except:
                pass

    def On_Command(self, Player, cmd, args):
        if not Player.Admin and not self.isMod(Player.SteamID):
            return
        if cmd == "addtowl":
            if len(args) != 1:
                Player.Message("Usage: /addtowl id")
                Player.Message("Example: /addtowl 7656119796999999")
                return
            ini = self.Whitelist()
            idtoadd = str(args[0])
            if not idtoadd.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.AddSetting("WhiteList", idtoadd, "1")
            ini.Save()
        elif cmd == "delfromwl":
            if len(args) != 1:
                Player.Message("Usage: /delfromwl id")
                Player.Message("Example: /delfromwl 7656119796999999")
                return
            ini = self.Whitelist()
            idtodel = str(args[0])
            if not idtodel.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.DeleteSetting("WhiteList", idtodel)
            ini.Save()
            Player.Message("ID: " + idtodel + " removed.")
        elif cmd == "lwhitelist":
            ini = self.Whitelist()
            enum = ini.EnumSection("WhiteList")
            Player.Message("Current IDs on whitelist: ")
            for id in enum:
                Player.Message("- " + id)
This has debugs and will make log file. Please send me the log of the plugin after a few player joined.
 

maughanorama

Member
Member
Nov 27, 2014
181
10
18
50
HTML:
ass
Python:
__author__ = 'DreTaX'
__version__ = '1.0'

import clr

clr.AddReferenceByPartialName("Fougerite")
import Fougerite

"""
    Class
"""


class Whitelist:
    """
        Methods
    """

    red = "[color #FF0000]"
    green = "[color #009900]"

    def On_PluginInit(self):
        self.Whitelist()
        self.DisconnectInfo()

    def Whitelist(self):
        if not Plugin.IniExists("Whitelist"):
            ini = Plugin.CreateIni("Whitelist")
            ini.Save()
        return Plugin.GetIni("Whitelist")

    def DisconnectInfo(self):
        if not Plugin.IniExists("DisconnectInfo"):
            ini = Plugin.CreateIni("DisconnectInfo")
            ini.AddSetting("DisconnectInfo", "Message", "You aren't on whitelist!")
            ini.Save()
        return Plugin.GetIni("DisconnectInfo")

    def TrytoGrabID(self, Player):
        try:
            id = Player.SteamID
            return id
        except:
            return None

    def isMod(self, id):
        if DataStore.ContainsKey("Moderators", id):
            return True
        return False

    def On_PlayerConnected(self, Player):
        id = self.TrytoGrabID(Player)
        if id is None:
            try:
                Player.Disconnect()
            except:
                pass
            return
        Plugin.Log("Whitelistdebuglog", Player.Name + " joined. ID: " + id)
        if Player.Admin or self.isMod(id):
            Plugin.Log("Whitelistdebuglog", Player.Name + " is an admin. Ignoring checks")
            return
        name = Player.Name
        whitelist = self.Whitelist()
        checkwl = whitelist.GetSetting("WhiteList", id)
        Plugin.Log("Whitelistdebuglog", "Whitelist value is : " + str(checkwl))
        if int(checkwl) != 1:
            Plugin.Log("Whitelistdebuglog", Player.Name + " should be disconnected?")
            ini = self.DisconnectInfo()
            msg = ini.GetSetting("DisconnectInfo", "Message")
            for x in xrange(1, 4):
                Player.Message(self.red + msg)
                Player.Message(self.red + "Your ID: " + self.green + id)
            Plugin.Log("WhiteListJoinLog", str(name) + " Tried to join with id: " + id)
            try:
                Player.Disconnect()
            except:
                pass

    def On_Command(self, Player, cmd, args):
        if not Player.Admin and not self.isMod(Player.SteamID):
            return
        if cmd == "addtowl":
            if len(args) != 1:
                Player.Message("Usage: /addtowl id")
                Player.Message("Example: /addtowl 7656119796999999")
                return
            ini = self.Whitelist()
            idtoadd = str(args[0])
            if not idtoadd.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.AddSetting("WhiteList", idtoadd, "1")
            ini.Save()
        elif cmd == "delfromwl":
            if len(args) != 1:
                Player.Message("Usage: /delfromwl id")
                Player.Message("Example: /delfromwl 7656119796999999")
                return
            ini = self.Whitelist()
            idtodel = str(args[0])
            if not idtodel.isdigit():
                Player.Message("ID can only contain numbers")
                return
            ini.DeleteSetting("WhiteList", idtodel)
            ini.Save()
            Player.Message("ID: " + idtodel + " removed.")
        elif cmd == "lwhitelist":
            ini = self.Whitelist()
            enum = ini.EnumSection("WhiteList")
            Player.Message("Current IDs on whitelist: ")
            for id in enum:
                Player.Message("- " + id)
This has debugs and will make log file. Please send me the log of the plugin after a few player joined.